miniqmt-skills
npx skills add https://github.com/nnquant/miniqmt-skills --skill miniqmt-skills
Agent 安装分布
Skill 文档
XtQuant (è¿ æéå) æè½ææ¡£
XtQuant æ¯åºäºè¿ æ MiniQMT çå®å Python çç¥è¿è¡æ¡æ¶ï¼æä¾éå交ææéçè¡æ å交æ API æ¥å£ã
使¶ä½¿ç¨æ¤æè½
å¨ä»¥ä¸åºæ¯ä¸åºè¯¥ä½¿ç¨æ¤æè½ï¼
éå交æå¼å
- å¼å A è¡éå交æçç¥
- å®ç°èªå¨å交æç³»ç»
- æå»ºåæµæ¡æ¶
- ç¼å交æä¿¡å·çæé»è¾
è¡æ æ°æ®å¤ç
- è·ååå² K çº¿æ°æ®ï¼æ¥çº¿ãåé线çï¼
- 订é 宿¶è¡æ æ¨é
- ä¸è½½è´¢å¡æ°æ®åæ¿åä¿¡æ¯
- å¤çåç¬æäº¤æ°æ®
äº¤ææ§è¡
- ç¨åºåä¸åï¼éä»·åãå¸ä»·åçï¼
- æ¹éæ¤åæä½
- æ¥è¯¢è´¦æ·èµäº§ãæä»ãå§æ
- æ¥æ¶äº¤æåæ¥æ¨é
é®é¢ææ¥
- è°è¯ XtQuant è¿æ¥é®é¢
- è§£å³æ°æ®è®¢é 失败
- å¤çäº¤ææ¥å£æ¥é
- ä¼åçç¥æ§è½
æ ¸å¿æ¦å¿µ
ä¸¤å¤§æ ¸å¿æ¨¡å
xtdata – è¡æ æ°æ®æ¨¡å
- æä¾åå²å宿¶ç K 线ãåç¬æ°æ®
- è´¢å¡æ°æ®ãå约åºç¡ä¿¡æ¯
- æ¿ååè¡ä¸å类信æ¯
- éè¦å å¯å¨ MiniQMT 客æ·ç«¯
xttrader – äº¤ææ§è¡æ¨¡å
- æ¥åãæ¤åæä½
- æ¥è¯¢èµäº§ãå§æãæäº¤ãæä»
- æ¥æ¶èµéãå§æãæäº¤çä¸»æ¨æ¶æ¯
- æ¯æåè°æºå¶å¤ç交æäºä»¶
è¿è¡ç¯å¢è¦æ±
- Python çæ¬ï¼3.6 – 3.12ï¼64ä½ï¼
- å¿ é¡»å å¯å¨ MiniQMT 客æ·ç«¯
- éè¿ session_id åºåä¸åçç¥ä¼è¯
å¿«éåè
1. è¡æ æ°æ®è·åï¼åºç¡æ¨¡å¼ï¼
ä»å®æ¹ææ¡£æåç宿´ç¤ºä¾ï¼
from xtquant import xtdata
import time
# è®¾å®æ çå表å卿
code_list = ["000001.SZ"]
period = "1d"
# ä¸è½½åå²è¡æ
æ°æ®å°æ¬å°
for code in code_list:
xtdata.download_history_data(code, period=period, incrementally=True)
# ä¸è½½è´¢å¡åæ¿åæ°æ®
xtdata.download_financial_data(code_list)
xtdata.download_sector_data()
# è¯»åæ¬å°åå²è¡æ
history_data = xtdata.get_market_data_ex([], code_list, period=period, count=-1)
print(history_data)
说æï¼XtQuant çæ°æ®ä»¥å缩形å¼åå¨å¨æ¬å°ï¼ä½¿ç¨åéè¦å ä¸è½½ã
2. 宿¶è¡æ 订é ï¼åè°æ¨¡å¼ï¼
from xtquant import xtdata
code_list = ["000001.SZ"]
period = "1d"
# å®ä¹åè°å½æ°
def on_data(data):
code_list = list(data.keys())
kline = xtdata.get_market_data_ex([], code_list, period=period)
print(kline)
# 订é
è¡æ
并设置åè°
for code in code_list:
xtdata.subscribe_quote(code, period=period, count=-1, callback=on_data)
# é»å¡ç¨åºä»¥æç»æ¥æ¶åè°
xtdata.run()
说æï¼ä½¿ç¨åè°æ¨¡å¼æ¶ï¼å¿
é¡»è°ç¨ xtdata.run() é»å¡ç¨åºï¼å¦åç¨åºä¼ç´æ¥éåºã
3. äº¤ææ¨¡ååå§åä¸ä¸å
ä»å®æ¹ææ¡£æåç交æç¤ºä¾ï¼
from xtquant.xttrader import XtQuantTrader, XtQuantTraderCallback
from xtquant.xttype import StockAccount
from xtquant import xtconstant
# å®ä¹äº¤æåè°ç±»
class MyXtQuantTraderCallback(XtQuantTraderCallback):
def on_stock_order(self, order):
"""姿忥æ¨é"""
print("姿忥:", order.stock_code, order.order_status)
def on_stock_trade(self, trade):
"""æäº¤å卿¨é"""
print("æäº¤åæ¥:", trade.stock_code, trade.order_id)
def on_order_error(self, order_error):
"""å§æå¤±è´¥æ¨é"""
print("å§æå¤±è´¥:", order_error.error_msg)
# åå§å交æå®¢æ·ç«¯
path = 'D:\\è¿
ææé交æç»ç«¯\\userdata_mini' # MiniQMT å®è£
è·¯å¾
session_id = 123456 # ä¼è¯ç¼å·ï¼ä¸åçç¥ä½¿ç¨ä¸åç¼å·
xt_trader = XtQuantTrader(path, session_id)
# å建账å·å¯¹è±¡
acc = StockAccount('1000000365') # æ¿æ¢ä¸ºå®é
è´¦å·
# 注ååè°
callback = MyXtQuantTraderCallback()
xt_trader.register_callback(callback)
# å¯å¨äº¤æçº¿ç¨å¹¶è¿æ¥
xt_trader.start()
connect_result = xt_trader.connect() # è¿å0表示æå
subscribe_result = xt_trader.subscribe(acc) # 订é
äº¤ææ¨é
# ä¸å示ä¾
stock_code = '600000.SH'
order_id = xt_trader.order_stock(
acc,
stock_code,
xtconstant.STOCK_BUY, # ä¹°å
¥
200, # æ°é
xtconstant.FIX_PRICE, # éä»·å
10.5 # ä»·æ ¼
)
print(f"ä¸åæåï¼è®¢åå·: {order_id}")
说æï¼äº¤æåå¿ é¡»å å¯å¨ MiniQMT 客æ·ç«¯å¹¶ç»å½è´¦å·ã
4. è¿æ¥VIPæå¡å¨ï¼é«çº§åè½ï¼
ä»å®æ¹ææ¡£æåçVIPæå¡å¨è¿æ¥ç¤ºä¾ï¼
from xtquant import xtdatacenter as xtdc
from xtquant import xtdata
# 设置tokenï¼ä»æç ç¨æ·ä¸å¿è·åï¼
xtdc.set_token('è¿éè¾å
¥ä½ çtoken')
# 设置VIPæå¡å¨è¿æ¥æ±
addr_list = [
'115.231.218.73:55310',
'115.231.218.79:55310',
'42.228.16.211:55300',
'42.228.16.210:55300'
]
xtdc.set_allow_optmize_address(addr_list)
# å¼å¯K线å
¨æ¨åè½ï¼VIPåè½ï¼
xtdc.set_kline_mirror_enabled(True)
# åå§åå¹¶çå¬ç«¯å£
xtdc.init()
port = xtdc.listen(port=58621) # æå®åºå®ç«¯å£
xtdata.connect(port=port)
print('è¿æ¥æå')
xtdata.run()
说æï¼VIPæå¡å¨æä¾æ´å¿«çè¡æ æ¨éåæ´å¤çæ°æ®æå¡ï¼éè¦ä»æç ç¨æ·ä¸å¿è·åtokenã
5. æå®ç«¯å£é¿å å²çª
from xtquant import xtdatacenter as xtdc
xtdc.set_token("ä½ çtoken")
xtdc.init(False) # ä¸èªå¨åå§å
port = 58601 # èªå®ä¹ç«¯å£
xtdc.listen(port=port)
print(f"æå¡å¯å¨ï¼å¼æ¾ç«¯å£ï¼{port}")
说æï¼å½58609é»è®¤ç«¯å£è¢«å ç¨æ¶ï¼å¯ä»¥æå®èªå®ä¹ç«¯å£ã
常è§é®é¢ä¸è§£å³æ¹æ¡
é®é¢1ï¼å¯¼å ¥xtquantåºå¤±è´¥
é误信æ¯ï¼NO module named 'xtquant.IPythonAPiClient'
è§£å³æ¹æ¡ï¼
- 确认使ç¨çæ¯64ä½ Python 3.6-3.12 çæ¬
- æ£æ¥ xtquant åºæ¯å¦æ£ç¡®å®è£
- 妿åºç° PermissionErrorï¼è¯´æå卿件æéé®é¢
é®é¢2ï¼è¿æ¥å¤±è´¥è¿å-1
åå ï¼åä¸ä¸ª session ç两次 Python è¿ç¨ connect ä¹é´å¿ é¡»è¶ è¿3ç§
è§£å³æ¹æ¡ï¼
- çå¾ è³å°3ç§å忬¡è¿æ¥
- æè 使ç¨ä¸åç session_id
é®é¢3ï¼ç«¯å£58609被å ç¨
é误信æ¯ï¼æ§è¡ xtdatacenter.init æ¶æç¤ºçå¬58609端å£å¤±è´¥
è§£å³æ¹æ¡ï¼
# æ¹æ³1ï¼æå®èªå®ä¹ç«¯å£
xtdc.init(False)
port = xtdc.listen(port=58601)
# æ¹æ³2ï¼å
³éææPythonç¨åºæéå¯çµè
é®é¢4ï¼å§æå¤æ³¨åæ®µè¢«æªæ
é®é¢æè¿°ï¼æ¥è¯¢å§æçæèµå¤æ³¨åªæååé¨å
åå ï¼æç®å®¢æ·ç«¯ç order_remark åæ®µæå¤§24ä¸ªè±æå符ï¼ä¸ä¸ªä¸æå 3个ï¼ï¼è¶ åºé¨åä¼è¢«ä¸¢å¼
è§£å³æ¹æ¡ï¼æ§å¶å¤æ³¨é¿åº¦ï¼æä½¿ç¨å¤§QMTï¼æ é¿åº¦éå¶ï¼
åèææ¡£è¯´æ
æ¬æè½å
å«ä»¥ä¸åèææ¡£ï¼ä½¿ç¨ view å½ä»¤æ¥ç详ç»å
容ï¼
api.md – API宿´ææ¡£
æ¥æºï¼å®æ¹ææ¡£ 置信度ï¼ä¸ç å 容ï¼5个页é¢ï¼å å«ï¼
- 宿´å®ä¾ï¼è¡æ 订é ã交æä¸åç宿´ä»£ç 示ä¾
- XtData模åï¼è¡æ æ°æ®è·åç详ç»API说æ
- XtTrader模åï¼äº¤ææ§è¡ç详ç»API说æ
- 常è§é®é¢ï¼å®é 使ç¨ä¸çé®é¢åè§£å³æ¹æ¡
éç¨åºæ¯ï¼
- æ¥æ¾å ·ä½APIçåæ°è¯´æ
- å¦ä¹ 宿´ç代ç å®ç°æ¨¡å¼
- è§£å³å¼åä¸éå°çå ·ä½é®é¢
getting_started.md – å¿«éå ¥é¨
æ¥æºï¼å®æ¹ææ¡£ 置信度ï¼ä¸ç å 容ï¼2个页é¢ï¼å å«ï¼
- XtQuant è½æä¾çæå¡æ¦è¿°
- è¿è¡ä¾èµç¯å¢è¯´æ
- XtQuant è¿è¡é»è¾ä»ç»
- xtdata å xttrader 两大模åç®ä»
éç¨åºæ¯ï¼
- 忬¡æ¥è§¦ XtQuant
- äºè§£æ´ä½æ¶æå设计ç念
- 确认ç¯å¢é ç½®è¦æ±
ä½¿ç¨æå
åå¦è å ¥é¨è·¯å¾
ç¬¬ä¸æ¥ï¼ç¯å¢åå¤
- å®è£ 64ä½ Python 3.6-3.12
- ä¸è½½å¹¶å®è£ MiniQMT 客æ·ç«¯
- å®è£
xtquant åºï¼
pip install xtquant
ç¬¬äºæ¥ï¼å¦ä¹ åºç¡
- é
读
getting_started.mdäºè§£æ´ä½æ¶æ - è¿è¡”å¿«éåè”ä¸ç示ä¾1ï¼è¡æ æ°æ®è·åï¼
- çè§£æ°æ®ä¸è½½å读åçæµç¨
ç¬¬ä¸æ¥ï¼å®è·µè¿é¶
- å°è¯å®æ¶è¡æ 订é ï¼ç¤ºä¾2ï¼
- å¦ä¹ åè°æºå¶ç使ç¨
- æ¥ç
api.mdä¸ç宿´å®ä¾
ä¸çº§ç¨æ·è¿é¶
è¡æ æ°æ®å¤ç
- ææ¡å¤å¨ææ°æ®è·åï¼1m, 5m, 1dçï¼
- å¦ä¹ è´¢å¡æ°æ®åæ¿åæ°æ®ç使ç¨
- å®ç°æ°æ®ç¼ååå¢éæ´æ°çç¥
交æçç¥å¼å
- ç解交æåè°æºå¶ï¼on_stock_order, on_stock_tradeï¼
- å®ç°é£é©æ§å¶é»è¾
- å¤çå§æå¤±è´¥åæ¤ååºæ¯
æ§è½ä¼å
- 使ç¨å¼æ¥æ¥è¯¢æ¥å£ï¼query_stock_orders_asyncï¼
- åç设置订é èå´é¿å æ°æ®è¿è½½
- æ§å¶sessionæ°éé¿å æä»¶å 积
é«çº§ç¨æ·æä½³å®è·µ
VIPæå¡å¨ä½¿ç¨
- é ç½®VIPæå¡å¨è¿æ¥æ±
- å¼å¯Kçº¿å ¨æ¨åè½è·åå ¨å¸åºæ°æ®
- ä¼åç½ç»è¿æ¥åæ°æ®ä¼ è¾
å¤è´¦æ·ç®¡ç
- 使ç¨ä¸åsession_id管çå¤ä¸ªçç¥
- å®ç°è´¦æ·é´çèµéè°åº¦
- å¤ç沪港éãæ·±æ¸¯éçç¹æ®è´¦æ·ç±»å
ç产ç¯å¢é¨ç½²
- å®ç°æçº¿éè¿æºå¶
- æ·»å æ¥å¿è®°å½åçæ§
- 设置å¼å¸¸åè¦åèªå¨æ¢å¤
éè¦æç¤º
使ç¨åå¿ è¯»
-
MiniQMT客æ·ç«¯å¿ é¡»å å¯å¨
- ææ xtdata å xttrader åè½é½ä¾èµ MiniQMT 客æ·ç«¯
- ç¡®ä¿å®¢æ·ç«¯å·²ç»å½å¹¶è¿æ¥å°è¡æ æå¡å¨
-
æ°æ®ä¸è½½æºå¶
- XtQuant çå岿°æ®ä»¥å缩形å¼åå¨å¨æ¬å°
- 使ç¨åå¿ é¡»å è°ç¨ download_* æ¥å£ä¸è½½æ°æ®
- 订é ç宿¶æ°æ®ä¼èªå¨ä¿åï¼æ ééå¤ä¸è½½
-
åè°å½æ°æ³¨æäºé¡¹
- 使ç¨åè°æ¨¡å¼æ¶å¿
é¡»è°ç¨
xtdata.run()æxttrader.run()é»å¡ç¨åº - åè°å½æ°ä¸ä¸è¦æ§è¡èæ¶æä½ï¼é¿å é»å¡æ°æ®æ¥æ¶
- æ¨èå¨åè°ä¸ä½¿ç¨å¼æ¥æ¥è¯¢æ¥å£
- 使ç¨åè°æ¨¡å¼æ¶å¿
é¡»è°ç¨
-
Session管ç
- ä¸åçç¥ä½¿ç¨ä¸åç session_id
- åä¸ session çä¸¤æ¬¡è¿æ¥é´éå¿ é¡»è¶ è¿3ç§
- æ§å¶ session èå´é¿å 产ç大é down_queue æä»¶
-
é£é©æç¤º
- æ¬ææ¡£ä¸ççç¥ç¤ºä¾ä» ä¾åèå¦ä¹
- å®ç交æå请å åæµè¯
- 交ææé£é©ï¼æèµéè°¨æ
æè½æ¥æº
æ¬æè½ææ¡£åºäºä»¥ä¸æ¥æºèªå¨çæï¼
- 宿¹ææ¡£ï¼è¿ æç¥è¯åº (dict.thinktrader.net)
- æå页颿°ï¼7个页é¢
- ææ¡£åç±»ï¼å ¥é¨æåãAPIææ¡£ã宿´ç¤ºä¾ã常è§é®é¢
- çææ¶é´ï¼2026å¹´1æ
ç¸å ³èµæº
- 宿¹ç½ç«ï¼http://www.thinktrader.net
- æç ç¨æ·ä¸å¿ï¼https://xuntou.net/#/userInfoï¼è·åVIP tokenï¼
- è¿ æå¦é¢ï¼https://www.xuntou.net/plugin.php?id=keke_video_base
- ææ¯æ¯æï¼åè宿¹ææ¡£ç常è§é®é¢é¨å