爬了文件, 需要用 event.set()
有什麼好方法能夠ctrl+c 讓程式中斷呢, 謝謝!
代碼: 選擇全部
import shioaji as sj
import signal
import sys
from shioaji import TickSTKv1, Exchange
from threading import Event
def signal_handler(signum, frame):
print(f'Signal_handler: caught signal {signum}')
if signum == signal.SIGINT.value:
print('SIGINT')
api.logout()
sys.exit(1)
signal.signal(signal.SIGINT, signal_handler)
try:
api = sj.Shioaji()
api.login(
api_key='key',
secret_key='pass',
contracts_cb=lambda security_type: print(
f"{repr(security_type)} fetch done."),
subscribe_trade=True
)
api.quote.subscribe(
api.Contracts.Stocks["1609"],
quote_type=sj.constant.QuoteType.Tick,
version=sj.constant.QuoteVersion.v1
)
@api.on_tick_stk_v1()
def quote_callback(exchange: Exchange, tick: TickSTKv1):
print(f'Exchange: {exchange}, Tick: {tick}')
Event().wait()
except KeyboardInterrupt:
print('Logout success!')
finally:
api.logout()