簡體   English   中英

通過API'g錯誤ID = -1,errorCode = 2104,errorMsg = Market data farm連接正常時在Interactive Broker中獲取錯誤:hfarm

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM