[英]Can't connect to Interactive broker API with python show error 502, 504
[英]Getting Error in Interactive Broker while connectiong through API 'error id=-1, errorCode=2104, errorMsg=Market data farm connection is OK:hfarm
在測試以下代碼時,我不斷收到以下錯誤。 我在IB有一個模擬交易帳戶。
不知道這些錯誤到底是什么。 嘗試過在線搜索,但沒有任何提示。
from ib.opt import Connection, message
from ib.ext.Contract import Contract as C
from ib.ext.Order import Order
import time
def make_contract(symbol,sec_type,exch,prim_exch,curr):
C.m_symbol=symbol
C.m_secType=sec_type
C.m_exch=exch
C.m_primaryExch=prim_exch
C.m_currency=curr
return C
def make_order(action,quantity,price=None):
if price is not None:
order=Order()
order.m_orderType = 'LMT'
order.m_totalQuantity = quantity
order.m_action = action
order.m_lmtprice = price
print(price)
else:
order=Order()
order.m_orderType = 'MKT'
order.m_totalQuantity = quantity
order.m_action = action
print('hi')
return order
def handleAll(msg):
print(msg)
cid = 103
conn = Connection.create(port=7497) #clietnID=888)
conn.connect()
conn.registerAll(handleAll)
oid = cid
cont = make_contract('AAPL','STK', 'SMART','SMART', 'USD')
offer = make_order('BUY', 1, 157)
conn.placeOrder(oid,cont,offer)
while 1:
time.sleep(1)
這並不是真正的錯誤,只是信息表明您已連接到市場數據。 但是,conn.disconnect()會在執行任何操作之前斷開連接。
同樣,AAPL的主要交換不是SMART。 您不需要放一個,除非在極少數情況下該符號是含糊不清的,並且永遠不是SMART。
if __name__ == "__main__":
請添加if __name__ == "__main__":
為了順利進行訂單下達。 順便說一句,對於AAPL主交換機不聰明,你可以把它作為空''
為最美股。
from ib.opt import Connection, message
from ib.ext.Contract import Contract
from ib.ext.Order import Order
import time
def make_contract(symbol, sec_type, exch, prim_exch, curr):
Contract.m_symbol = symbol
Contract.m_secType = sec_type
Contract.m_exchange = exch
Contract.m_primaryExch = prim_exch
Contract.m_currency = curr
return Contract
def make_order(action,quantity, price = None):
if price is not None:
order = Order()
order.m_orderType = 'LMT'
order.m_totalQuantity = quantity
order.m_action = action
order.m_lmtPrice = price
else:
order = Order()
order.m_orderType = 'MKT'
order.m_totalQuantity = quantity
order.m_action = action
return order
cid = 103
def handleAll(msg):
print(msg)
if __name__ == "__main__":
conn = Connection.create(port=4002, clientId=103)
conn.connect()
conn.registerAll(handleAll)
oid = cid
cont = make_contract('AAPL', 'STK', 'SMART', 'ISLAND', 'USD')
offer = make_order('BUY', 1, 200)
conn.placeOrder(oid, cont, offer)
time.sleep(1)
conn.disconnect()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.