Ошибка в Interactive Broker при подключении через API с идентификатором ошибки = -1, errorCode = 2104, errorMsg = Подключение к ферме рыночных данных в порядке: hfarm - PullRequest
0 голосов
/ 30 декабря 2018

Я продолжаю получать приведенные ниже ошибки при тестировании приведенного ниже кода.У меня есть бумажный торговый счет в 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)

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Пожалуйста, добавьте if __name__ == "__main__":, чтобы оформить заказ.Кстати, основной обмен на AAPL не SMART, вы можете оставить его пустым как '' для большинства акций США.

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()
0 голосов
/ 01 января 2019

Это на самом деле не ошибка, просто информация о том, что вы подключены к рыночным данным.Однако conn.disconnect () отключается, прежде чем вы что-либо можете сделать.

Также основным обменом для AAPL является не SMART.Вам не нужно ставить один, кроме редких случаев, когда символ неоднозначен, и он никогда не SMART.

...