Initial commit
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
|
||||
import json
|
||||
from typing import Dict, TypedDict
|
||||
|
||||
import xgboost as xgb
|
||||
from strategy_demo5 import stragety_feature
|
||||
|
||||
from BuySellPoint.BS_Point import CBS_Point
|
||||
from Chan import CChan
|
||||
from ChanConfig import CChanConfig
|
||||
from ChanModel.Features import CFeatures
|
||||
from Common.CEnum import AUTYPE, DATA_SRC, KL_TYPE
|
||||
from Common.CTime import CTime
|
||||
|
||||
|
||||
class T_SAMPLE_INFO(TypedDict):
|
||||
feature: CFeatures
|
||||
is_buy: bool
|
||||
open_time: CTime
|
||||
|
||||
|
||||
def predict_bsp(model: xgb.Booster, last_bsp: CBS_Point, meta: Dict[str, int]):
|
||||
missing = -9999999
|
||||
feature_arr = [missing] * len(meta)
|
||||
for feat_name, feat_value in last_bsp.features.items():
|
||||
if feat_name in meta:
|
||||
feature_arr[meta[feat_name]] = feat_value
|
||||
feature_arr = [feature_arr]
|
||||
dtest = xgb.DMatrix(feature_arr, missing=missing)
|
||||
return model.predict(dtest)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
"""
|
||||
本demo主要演示如何在实盘中把策略产出的买卖点,对接到demo5中训练好的离线模型上
|
||||
"""
|
||||
code = "BTC/USDT"
|
||||
begin_time = "2023-11-30"
|
||||
end_time = None
|
||||
data_src = DATA_SRC.CCXT
|
||||
lv_list = [KL_TYPE.K_DAY]
|
||||
|
||||
config = CChanConfig({
|
||||
"trigger_step": True, # 打开开关!
|
||||
})
|
||||
|
||||
chan = CChan(
|
||||
code=code,
|
||||
begin_time=begin_time,
|
||||
end_time=end_time,
|
||||
data_src=data_src,
|
||||
lv_list=lv_list,
|
||||
config=config,
|
||||
autype=AUTYPE.QFQ,
|
||||
)
|
||||
|
||||
model = xgb.Booster()
|
||||
model.load_model("model.json")
|
||||
meta = json.load(open("feature.meta", "r"))
|
||||
|
||||
treated_bsp_idx = set()
|
||||
for chan_snapshot in chan.step_load():
|
||||
# 策略逻辑要对齐demo5
|
||||
last_klu = chan_snapshot[0][-1][-1]
|
||||
bsp_list = chan_snapshot.get_bsp()
|
||||
if not bsp_list:
|
||||
continue
|
||||
last_bsp = bsp_list[-1]
|
||||
|
||||
cur_lv_chan = chan_snapshot[0]
|
||||
if last_bsp.klu.idx in treated_bsp_idx or cur_lv_chan[-2].idx != last_bsp.klu.klc.idx:
|
||||
continue
|
||||
|
||||
last_bsp.features.add_feat(stragety_feature(last_klu)) # 开仓K线特征
|
||||
# 买卖点打分,应该和demo5最后的predict结果完全一致才对
|
||||
print(last_bsp.klu.time, predict_bsp(model, last_bsp, meta))
|
||||
treated_bsp_idx.add(last_bsp.klu.idx)
|
||||
Reference in New Issue
Block a user