次のコードを使用して、TWS に注文を送信して Google 共有に配置しようとしています。アカウントを要求し続ける理由がわかりません。TWS を開き、ActiveX などを有効にすることを確認しました。また、ソケット番号とクライアント ID が正しいことも確認しました。
from ib.ext.Contract import Contract
from ib.ext.Order import Order
from ib.opt import Connection, message
import time
def error_handler(msg):
print "Server Error: %s" % msg
def reply_handler(msg):
print "Server Response: %s, %s" % (msg.typeName, msg)
def create_contract(symbol, sec_type, exch, prim_exch, curr):
contract = Contract()
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 create_order(order_type, quantity, action):
order = Order()
order.m_orderType = order_type
order.m_totalQuantity = quantity
order.m_action = action
return order
if __name__ == "__main__":
tws_conn = Connection.create(port=7496, clientId=100)
tws_conn.connect()
tws_conn.register(error_handler, 'Error')
tws_conn.registerAll(reply_handler)
order_id = 200
goog_contract = create_contract('GOOG', 'STK', 'SMART', 'SMART', 'USD')
goog_order = create_order('MKT', 5, 'BUY')
tws_conn.placeOrder(order_id, goog_contract, goog_order)
time.sleep(1)
tws_conn.disconnect()
次のエラーが表示されます
Server Response: error, <error id=200, errorCode=321, errorMsg=Error validating request:-'ie' : cause - You must specify an account.
デモ IB アカウントでコードを実行すると、注文が行われて約定されるので、すべてが機能します。しかし、紙の取引口座で同じコードを実行すると、上記のエラー メッセージが表示されます。
「アカウントを指定する」こと、つまりアカウント番号をどこかに入力することを知っている人はいますか?