Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sreenivasdoosa
GitHub Repository: sreenivasdoosa/sdoosa-algo-trade-python
Path: blob/master/src/Test.py
296 views
1
import logging
2
import time
3
4
from core.Controller import Controller
5
from ticker.ZerodhaTicker import ZerodhaTicker
6
from ordermgmt.ZerodhaOrderManager import ZerodhaOrderManager
7
from ordermgmt.Order import Order
8
from core.Quotes import Quotes
9
from utils.Utils import Utils
10
11
class Test:
12
def testTicker():
13
ticker = ZerodhaTicker()
14
ticker.startTicker()
15
ticker.registerListener(Test.tickerListener)
16
17
# sleep for 5 seconds and register trading symbols to receive ticks
18
time.sleep(5)
19
ticker.registerSymbols(['SBIN', 'RELIANCE'])
20
21
# wait for 60 seconds and stop ticker service
22
time.sleep(60)
23
logging.info('Going to stop ticker')
24
ticker.stopTicker()
25
26
def tickerListener(tick):
27
logging.info('tickerLister: onNewTick %s', vars(tick));
28
29
def testOrders():
30
orderManager = ZerodhaOrderManager()
31
exchange = 'NSE';
32
tradingSymbol = 'SBIN'
33
lastTradedPrice = Quotes.getCMP(exchange + ':' + tradingSymbol)
34
logging.info(tradingSymbol + ' CMP = %f', lastTradedPrice)
35
36
limitPrice = lastTradedPrice - lastTradedPrice * 1 / 100
37
limitPrice = Utils.roundToNSEPrice(limitPrice)
38
qty = 1
39
direction = 'LONG'
40
41
# place order
42
origOrderId = orderManager.placeOrder(tradingSymbol, limitPrice, qty, direction)
43
logging.info('Original order Id %s', origOrderId)
44
45
# sleep for 10 seconds then modify order
46
time.sleep(10)
47
newPrice = lastTradedPrice
48
if origOrderId:
49
orderManager.modifyOrder(origOrderId, newPrice)
50
51
# sleep for 10 seconds and then place SL order
52
time.sleep(10)
53
slPrice = newPrice - newPrice * 1 / 100
54
slPrice = Utils.roundToNSEPrice(slPrice)
55
slDirection = 'SHORT' if direction == 'LONG' else 'LONG'
56
slOrderId = orderManager.placeSLOrder(tradingSymbol, slPrice, qty, slDirection)
57
logging.info('SL order Id %s', slOrderId)
58
59
# sleep for 10 seconds and then place target order
60
time.sleep(10)
61
targetPrice = newPrice + newPrice * 2 / 100
62
targetPrice = Utils.roundToNSEPrice(targetPrice)
63
targetDirection = 'SHORT' if direction == 'LONG' else 'LONG'
64
targetOrderId = orderManager.placeOrder(tradingSymbol, targetPrice, qty, targetDirection)
65
logging.info('Target order Id %s', targetOrderId)
66
67
# sleep for 10 seconds and cancel target order
68
time.sleep(10)
69
if targetOrderId:
70
orderManager.cancelOrder(targetOrderId)
71
logging.info('Cancelled Target order Id %s', targetOrderId)
72
73
logging.info("Algo done executing all orders. Check ur orders and positions in broker terminal.")
74
75
def testMisc():
76
orderManager = ZerodhaOrderManager()
77
sampleOrder = Order(orderInputParams=None)
78
sampleOrder.orderId='210505200078243'
79
orders = []
80
orders.append(sampleOrder)
81
orderManager.fetchAndUpdateAllOrderDetails(orders)
82