# contract.currency = "HKD"
#
# req = Request.new_request()
# # client.cli.reqTickByTickData(req.req_id, contract, "AllLast", 0, False)
# # client.cli.reqContractDetails(req.req_id, contract)
# client.cli.reqMktData(req.req_id, contract, '', False, False, None)
code = 'CL_FUT_USD_NYMEX_202104'
# code = 'GSX_STK_USD_SMART'
dp: DataPortal = DataPortal(is_backtest=False,
                            ts_type_name_for_current_price='ibMarketData',
                            subscribe_codes=[code])
# cp = dp.current_price([code], Timestamp.now(tz='Asia/Shanghai'))
# print("cp:{}".format(cp))


class MySub(TimeSeriesSubscriber):
    def on_data(self, data: TSData):
        print(str(data.__dict__))


ts_repo: TimeSeriesRepo = BeanContainer.getBean(TimeSeriesRepo)
ts: TimeSeries = ts_repo.find_one('ibMarketData')
ts.subscribe(MySub(), ['CL_FUT_USD_NYMEX_202104'])

while True:
    import time
    time.sleep(2)
    cp = ts.func.current_price([code])
    if code in cp:
        print("当前价格:{}".format(cp[code].__dict__))
Beispiel #2
0
from trading_calendars import get_calendar

from se import config, BeanContainer, AccountRepo
from se.domain2.engine.engine import Engine, Scope
from se.infras.td import TDAccount
from st import SPCEStrategy

engine = Engine()
scope = Scope(["SPCE_STK_USD_SMART"], trading_calendar=get_calendar("NYSE"))
strategy = SPCEStrategy(scope)

account_name = "td_local_spce"
repo: AccountRepo = BeanContainer.getBean(AccountRepo)
acc: TDAccount = repo.find_one(account_name)
if not acc:
    acc = TDAccount(account_name, 100)

acc.with_order_callback(strategy).with_client(
    config.get("td_account", "client_id"),
    config.get("td_account", 'redirect_url'),
    config.get("td_account", 'credentials_path'),
    config.get("td_account", 'account_id'))

acc.start_save_thread()

engine.run(strategy, acc)