def test_login_relogin_correct(self): n = Intrade(self.memNum, self.pw) n.getLogin() self.assertTrue(n.loggedIn, "Logged in flag") self.assertNotEqual(n.sessionData, "", "Session data empty") self.assertNotEqual(n.lastLogin, "", 'Last login') self.assertNotEqual(n.username, "", 'Username blank')
def test_get_open_orders(self): n = Intrade(self.memNum, self.pw) r = n.cancelAllOrders() self.assertTrue(r.didCancel) time.sleep(1) orders = n.getOpenOrders() self.assertEqual(len(orders), 0)
def test_cancel_AllInContract_invalid_conId(self): n = Intrade(self.memNum, self.pw) orders = [] orders.append( Order(conId='33l1374',side='B', limitPrice='.5',quantity='5') ) orders.append( Order(conId='3313074',side='B', limitPrice='.5',quantity='2') ) with self.assertRaises(IntradeResponseError): resp = n.multiOrderRequest(orders, True) with self.assertRaises(IntradeResponseError): r = n.cancelAllOrdersInContract('3311374') self.assertTrue(r.didCancel)
def test_cancel_AllInContract_invalid_conId(self): n = Intrade(self.memNum, self.pw) orders = [] orders.append( Order(conId='33l1374', side='B', limitPrice='.5', quantity='5')) orders.append( Order(conId='3313074', side='B', limitPrice='.5', quantity='2')) with self.assertRaises(IntradeResponseError): resp = n.multiOrderRequest(orders, True) with self.assertRaises(IntradeResponseError): r = n.cancelAllOrdersInContract('3311374') self.assertTrue(r.didCancel)
def __init__(self, memNum, pw): self.n = Intrade(memNum, pw) self.financialData = None self.md = None self.event = None self.contract = None self.contractInfo = None self.priceInfo = None self.timeAndSales = [] self.timeDelay = 0 self.historicalAsks = [] self.historicalBids = [] self.sessionProfit = 0 self.moneyInvested = 0 self.MAX_PERCENT_INVEST = 10
def test_cancel_orders_in_event(self): n = Intrade(self.memNum, self.pw) orders = [] orders.append( Order(conId='331374', side='B', limitPrice='.5', quantity='5')) orders.append( Order(conId='331374', side='B', limitPrice='.5', quantity='2')) orders.append( Order(conId='331374', side='S', limitPrice='99', quantity='1')) resp = n.multiOrderRequest(orders, True) self.assertEqual(len(resp), 3) for o in resp: self.assertTrue(o.success) resp = n.cancelOrdersInEvent('30848') time.sleep(1) orders = n.getOpenOrders() self.assertEqual(len(orders), 0) r = n.cancelAllOrders() self.assertTrue(r.didCancel) time.sleep(1) orders = n.getOpenOrders() self.assertEqual(len(orders), 0)
def test_put_MOR_invalid_contract(self): n = Intrade(self.memNum, self.pw) orders = [] orders.append( Order(conId='33l1374',side='B', limitPrice='.5',quantity='5') ) orders.append( Order(conId='3313074',side='B', limitPrice='.5',quantity='2') ) with self.assertRaises(IntradeResponseError): resp = n.multiOrderRequest(orders, True) r = n.cancelAllOrders() self.assertTrue(r.didCancel) time.sleep(1) orders = n.getOpenOrders() self.assertEqual(len(orders), 0)
def test_get_positions(self): n = Intrade(self.memNum, self.pw) ps = n.getPositions() self.assertEqual(len(ps), 1) if len(ps): p = ps[0] self.assertEqual(p.conId, 331374) self.assertEqual(p.quantity, -7) ps = n.getPositions('331374') self.assertEqual(len(ps), 1) if len(ps): p = ps[0] self.assertEqual(p.conId, 331374) self.assertEqual(p.quantity, -7)
def test_put_MOR_invalid_contract(self): n = Intrade(self.memNum, self.pw) orders = [] orders.append( Order(conId='33l1374', side='B', limitPrice='.5', quantity='5')) orders.append( Order(conId='3313074', side='B', limitPrice='.5', quantity='2')) with self.assertRaises(IntradeResponseError): resp = n.multiOrderRequest(orders, True) r = n.cancelAllOrders() self.assertTrue(r.didCancel) time.sleep(1) orders = n.getOpenOrders() self.assertEqual(len(orders), 0)
def test_cancel_AllInContract(self): n = Intrade(self.memNum, self.pw) orders = [] orders.append( Order(conId='331374',side='B', limitPrice='.5',quantity='5') ) orders.append( Order(conId='331374',side='B', limitPrice='.5',quantity='2') ) resp = n.multiOrderRequest(orders, True) self.assertEqual(len(resp), 2) for o in resp: self.assertTrue(o.success) resp = n.cancelAllOrdersInContract('331374') time.sleep(1) orders = n.getOpenOrders() self.assertEqual(len(orders), 0)
def test_put_MOR_multi_order(self): n = Intrade(self.memNum, self.pw) orders = [] orders.append( Order(conId='331374', side='B', limitPrice='.5', quantity='5')) orders.append( Order(conId='331374', side='B', limitPrice='.5', quantity='2')) resp = n.multiOrderRequest(orders, True) self.assertEqual(len(resp), 2) for o in resp: self.assertTrue(o.success) orders = n.getOpenOrders() self.assertEqual(len(orders), 2) r = n.cancelAllOrders() self.assertTrue(r.didCancel) time.sleep(1) orders = n.getOpenOrders() self.assertEqual(len(orders), 0)
def test_cancel_orders_in_event(self): n = Intrade(self.memNum, self.pw) orders = [] orders.append( Order(conId='331374',side='B', limitPrice='.5',quantity='5') ) orders.append( Order(conId='331374',side='B', limitPrice='.5',quantity='2') ) orders.append( Order(conId='331374',side='S', limitPrice='99',quantity='1') ) resp = n.multiOrderRequest(orders, True) self.assertEqual(len(resp), 3) for o in resp: self.assertTrue(o.success) resp = n.cancelOrdersInEvent('30848') time.sleep(1) orders = n.getOpenOrders() self.assertEqual(len(orders), 0) r = n.cancelAllOrders() self.assertTrue(r.didCancel) time.sleep(1) orders = n.getOpenOrders() self.assertEqual(len(orders), 0)
def test_get_open_orders_oids(self): n = Intrade(self.memNum, self.pw) orders = [] orders.append( Order(conId='331374', side='B', limitPrice='.5', quantity='5')) resp = n.multiOrderRequest(orders, True) self.assertEqual(len(resp), 1) for o in resp: self.assertTrue(o.success) time.sleep(1) os = n.getOrdersByOrderId([ resp[0].orderId, ]) self.assertEqual(len(os), 1) r = n.cancelAllOrders() self.assertTrue(r.didCancel) time.sleep(1) orders = n.getOpenOrders() self.assertEqual(len(orders), 0)
def test_put_MOR_single_order(self): n = Intrade(self.memNum, self.pw) orders = [] orders.append( Order(conId='331374',side='B', limitPrice='.5',quantity='5') ) resp = n.multiOrderRequest(orders, True) self.assertEqual(len(resp), 1) for o in resp: self.assertTrue(o.success) orders = n.getOpenOrders() self.assertEqual(len(orders), 1) r = n.cancelAllOrders() self.assertTrue(r.didCancel) time.sleep(1) orders = n.getOpenOrders() self.assertEqual(len(orders), 0)
def test_cancel_ByOrderId(self): n = Intrade(self.memNum, self.pw) orders = [] orders.append( Order(conId='331374', side='B', limitPrice='.5', quantity='5')) orders.append( Order(conId='331374', side='B', limitPrice='.5', quantity='2')) resp = n.multiOrderRequest(orders, True) self.assertEqual(len(resp), 2) for o in resp: self.assertTrue(o.success) oids = [o.orderId for o in resp] resp = n.cancelOrdersById(oids) time.sleep(1) orders = n.getOpenOrders() self.assertEqual(len(orders), 0)
def __init__(self, memNum, pw): self.n = Intrade(memNum,pw) self.financialData = None self.md = None self.event = None self.contract = None self.contractInfo = None self.priceInfo = None self.timeAndSales = [] self.timeDelay = 0 self.historicalAsks = [] self.historicalBids = [] self.sessionProfit = 0 self.moneyInvested = 0 self.MAX_PERCENT_INVEST = 10
def test_get_price_info(self): n = Intrade(self.memNum, self.pw) cb = n.getPriceInfo(['331374',])
def test_get_contract_info(self): n = Intrade(self.memNum, self.pw) ci = n.getContractInfo(['331374',])
def test_get_time_and_sales(self): n = Intrade(self.memNum, self.pw) sales = n.getDailyTimeAndSales('331374')
def test_get_market_data_in_event_class(self): n = Intrade(self.memNum, self.pw) ec = n.getMarketDataByEventClass('67') #Learn_Financial
class IntradeSession: def __init__(self, memNum, pw): self.n = Intrade(memNum, pw) self.financialData = None self.md = None self.event = None self.contract = None self.contractInfo = None self.priceInfo = None self.timeAndSales = [] self.timeDelay = 0 self.historicalAsks = [] self.historicalBids = [] self.sessionProfit = 0 self.moneyInvested = 0 self.MAX_PERCENT_INVEST = 10 def getEventName(self): return self.event.name def getEventClass(self, classId): return self.n.getMarketDataByEventClass(classId) def refreshMarketData(self): self.md = self.n.getMarketData() def refreshContractInfo(self): self.contractInfo = self.n.getContractInfo([ self.contract.id, ])[0] def isExpired(self): self.refreshContractInfo() return self.contractInfo.isExpired() def getExpirationTime(self): return self.contractInfo.expiryTime def getExpirationPrice(self): return self.contractInfo.expiryPrice def isClosed(self): self.refreshContractInfo() return self.contractInfo.isClosed() def isOpen(self): return not self.isClosed() def havePosition(self): return self.getPosition() != None def getPosition(self): pos = self.n.getPositions(self.contract.id) if len(pos) > 0: self.position = pos[0] return self.position def placeOrder(self, price, quantity): if self.isOpen(): return False else: return False def refreshTimeAndSales(self): self.timeAndSales = self.n.getDailyTimeAndSales(self.contract.id) self.financialData = FinancialDataSet( [t.toTup() for t in self.timeAndSales]) def getTimeAndSales(self): self.refreshTimeAndSales() return self.timeAndSales def refreshPriceInfo(self): self.priceInfo = self.n.getPriceInfo([ self.contract.id, ]).priceContractInfos[0] def getTime(self): self.timeDelay = d.n.getIntradeTime() - self.__t() return self.n.getIntradeTime() def getAdjustedTime(self): return long(time.time() * 1000) + self.timeDelay def startTrading(self): while self.shouldContinue(): if self.havePosition(): self.sell() else: self.buy() return "Market Closed!" def buy(self): targetPrice = self.getBuyPrice() latestPrice = self.getLatestAsk() while latestPrice > targetPrice and self.isOpen(): targetPrice = self.getBuyPrice() latestPrice = self.getLatestAsk() if self.isOpen(): targetQuantity = self.getBuyQuantity(latestPrice) success = self.placeOrder(latestPrice, targetQuantity) return success else: return False def shouldContinue(self): return self.isOpen() def sell(self): return def getBuyPrice(self): return def getBuyQuantity(self, latestPrice): return def getSellPrice(self): return def getLatestPrice(self): self.refreshContractInfo() return self.contractInfo.lstTrdPrc def getLatestBid(self): self.refreshPriceInfo() bidPrice = self.priceInfo.orderBook.getLatestBidPrice() if bidPrice > 0: self.historicalBids.append((time.time(), bidPrice)) return bidPrice def getLatestAsk(self): self.refreshPriceInfo() askPrice = self.priceInfo.orderBook.getLatestOfferPrice() if askPrice > 0: self.historicalAsks.append((time.time(), askPrice)) return askPrice def getAvailableCash(self): return self.getBalance().available def getInvested(self): return self.getBalance().frozen def getBalance(self): return self.n.getBalance() def getStopLossPrice(self): return -1 def getPositionAvgCost(self): self.position = self.getPosition() if self.position: return self.position.averageCost() else: return -1 def getTargetPrice(self): self.position = self.getPosition() if self.position: tenPercent = self.getPositionAvgCost() * 1.1 return tenPercent else: -1
class IntradeSession: def __init__(self, memNum, pw): self.n = Intrade(memNum,pw) self.financialData = None self.md = None self.event = None self.contract = None self.contractInfo = None self.priceInfo = None self.timeAndSales = [] self.timeDelay = 0 self.historicalAsks = [] self.historicalBids = [] self.sessionProfit = 0 self.moneyInvested = 0 self.MAX_PERCENT_INVEST = 10 def getEventName(self): return self.event.name def getEventClass(self, classId): return self.n.getMarketDataByEventClass(classId) def refreshMarketData(self): self.md = self.n.getMarketData() def refreshContractInfo(self): self.contractInfo = self.n.getContractInfo([self.contract.id,])[0] def isExpired(self): self.refreshContractInfo() return self.contractInfo.isExpired() def getExpirationTime(self): return self.contractInfo.expiryTime def getExpirationPrice(self): return self.contractInfo.expiryPrice def isClosed(self): self.refreshContractInfo() return self.contractInfo.isClosed() def isOpen(self): return not self.isClosed() def havePosition(self): return self.getPosition() != None def getPosition(self): pos = self.n.getPositions(self.contract.id) if len(pos) > 0: self.position = pos[0] return self.position def placeOrder(self, price, quantity): if self.isOpen(): return False else: return False def refreshTimeAndSales(self): self.timeAndSales = self.n.getDailyTimeAndSales(self.contract.id) self.financialData = FinancialDataSet([ t.toTup() for t in self.timeAndSales]) def getTimeAndSales(self): self.refreshTimeAndSales() return self.timeAndSales def refreshPriceInfo(self): self.priceInfo = self.n.getPriceInfo([self.contract.id,]).priceContractInfos[0] def getTime(self): self.timeDelay = d.n.getIntradeTime() - self.__t() return self.n.getIntradeTime() def getAdjustedTime(self): return long(time.time()*1000) + self.timeDelay def startTrading(self): while self.shouldContinue(): if self.havePosition(): self.sell() else: self.buy() return "Market Closed!" def buy(self): targetPrice = self.getBuyPrice() latestPrice = self.getLatestAsk() while latestPrice > targetPrice and self.isOpen(): targetPrice = self.getBuyPrice() latestPrice = self.getLatestAsk() if self.isOpen(): targetQuantity = self.getBuyQuantity(latestPrice) success = self.placeOrder(latestPrice,targetQuantity) return success else: return False def shouldContinue(self): return self.isOpen() def sell(self): return def getBuyPrice(self): return def getBuyQuantity(self, latestPrice): return def getSellPrice(self): return def getLatestPrice(self): self.refreshContractInfo() return self.contractInfo.lstTrdPrc def getLatestBid(self): self.refreshPriceInfo() bidPrice = self.priceInfo.orderBook.getLatestBidPrice() if bidPrice > 0: self.historicalBids.append( (time.time(), bidPrice)) return bidPrice def getLatestAsk(self): self.refreshPriceInfo() askPrice = self.priceInfo.orderBook.getLatestOfferPrice() if askPrice > 0: self.historicalAsks.append((time.time(), askPrice)) return askPrice def getAvailableCash(self): return self.getBalance().available def getInvested(self): return self.getBalance().frozen def getBalance(self): return self.n.getBalance() def getStopLossPrice(self): return -1 def getPositionAvgCost(self): self.position = self.getPosition() if self.position: return self.position.averageCost() else: return -1 def getTargetPrice(self): self.position = self.getPosition() if self.position: tenPercent = self.getPositionAvgCost() * 1.1 return tenPercent else: -1
def test_get_check_messages(self): n = Intrade(self.memNum, self.pw) msgs = n.checkMessages() self.assertEqual(msgs, 0)
def test_market_data(self): n = Intrade(self.memNum, self.pw) md = n.getMarketData()
def test_get_price_info(self): n = Intrade(self.memNum, self.pw) cb = n.getPriceInfo([ '331374', ])
def test_get_contract_info(self): n = Intrade(self.memNum, self.pw) ci = n.getContractInfo([ '331374', ])
def test_get_trades(self): n = Intrade(self.memNum, self.pw) trades = n.getTrades(contractId='331374') self.assertEqual(len(trades), 4)
def test_get_closing_price(self): n = Intrade(self.memNum, self.pw) cp = n.getClosingPrice('331374')
def test_get_messages(self): n = Intrade(self.memNum, self.pw) msgs = n.getMessages() self.assertEqual(len(msgs), 4)
def test_get_time_and_sales(self): n = Intrade(self.memNum, self.pw) sales = n.getDailyTimeAndSales('331374');
def test_login_incorrect_password(self): with self.assertRaises(IntradeResponseError): n = Intrade(self.memNum, "lkjlkj")
def test_login_initial_correct(self): n = Intrade(self.memNum, self.pw) self.assertTrue(n.loggedIn) self.assertNotEqual(n.sessionData, "") self.assertNotEqual(n.lastLogin, "") self.assertNotEqual(n.username, "")
def test_login_empty(self): with self.assertRaises(IntradeResponseError): n = Intrade("", "")