Рабочая станция трейдера (TWS) Python Опционный заказ API - цена исполнения и проблема с истечением срока действия - PullRequest
0 голосов
/ 15 марта 2020

Я могу разместить заказ на акции, но не могу заставить работать код для опционов. Ничего не произошло. Самым близким, что я получил, было то, что ордер будет размещен, но цена, которую я дал ему, чтобы использовать в качестве цены исполнения, фактически использовалась в качестве предельной цены. Я также не уверен, как выбрать конкретную c опцию даты. Я много часов пытался на ресурсах IB, но это не помогло.

from ib.opt import Connection, message
from ib.ext.Contract import Contract
from ib.ext.Order import Order
import pandas as pd

tickers = ['SPY']

LongPutPrice = 1.2

def make_contract(symbol, sec_type, exch, prim_exchange, curr):
    contract = Contract()
    Contract.m_symbol = symbol
    Contract.m_secType = sec_type
    Contract.m_exchange = exch
    Contract.m_primaryExch = prim_exchange
    Contract.m_currency = curr
    Contract.m_localSymbol = "Mar16'20 300 PUT"
    Contract.m_strike = 300
    return Contract

def make_order(action,quantity, price = None): #Function creates the order
    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 = 101
def main(i, LongPutPrice):
    conn = Connection.create(port=7497, clientId=999)
    conn.connect()
    oid = cid
    symbol = tickers[i]
    cont = make_contract(symbol, 'STK', 'SMART', 'SMART', 'USD')
    offer = make_order('BUY', 1, LongPutPrice)
    conn.placeOrder(oid, cont, offer)
    conn.disconnect()

for i in range (0, len(tickers)):
    main(i, LongPutPrice)
    cid += 1

Здесь "LongPutPrice" - это цена, которую я хочу использовать в качестве предельной цены, и страйк 300.

...