Initial commit
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
from Chan import CChan
|
||||
from ChanConfig import CChanConfig
|
||||
from Common.CEnum import AUTYPE, DATA_SRC, KL_TYPE
|
||||
from Plot.AnimatePlotDriver import CAnimateDriver
|
||||
from Plot.PlotDriver import CPlotDriver
|
||||
|
||||
"""
|
||||
def try_open(self, chan: CChan, lv) -> Optional[CCustomBSP]:
|
||||
data = chan[lv]
|
||||
if lv != len(chan.lv_list)-1 and data.bi_list: # 当前级别不是最低级别,且至少有一笔
|
||||
if qjt_bsp := self.cal_qjt_bsp(data, chan[lv + 1]): # 计算区间套
|
||||
return qjt_bsp
|
||||
|
||||
def cal_qjt_bsp(self, data: CKLine_List, sub_lv_data: CKLine_List) -> Optional[CCustomBSP]:
|
||||
last_klu = data[-1][-1]
|
||||
last_bsp_lst = data.bs_point_lst.getLastestBspList()
|
||||
if len(last_bsp_lst) == 0:
|
||||
return None
|
||||
last_bsp = last_bsp_lst[0]
|
||||
if last_bsp.klu.idx != last_klu.idx: # 当前K线是父级别的买卖点
|
||||
return None
|
||||
for sub_bsp in sub_lv_data.cbsp_strategy: # 对于次级别的买卖点
|
||||
if sub_bsp.klu.sup_kl.idx == last_klu.idx and sub_bsp.type2str().find("1") >= 0: # 且是一类买卖点
|
||||
return CCustomBSP(
|
||||
bsp=last_bsp,
|
||||
klu=last_klu,
|
||||
bs_type=last_bsp.qjt_type(), # 返回区间套买卖点
|
||||
is_buy=last_bsp.is_buy,
|
||||
target_klc=sub_bsp.target_klc[-1].sup_kl.klc,
|
||||
price=sub_bsp.open_price,
|
||||
)
|
||||
return None
|
||||
"""
|
||||
|
||||
if __name__ == "__main__":
|
||||
code = "BTC/USDT:USDT"
|
||||
begin_time = "2025-6-1"
|
||||
end_time = "2025-6-8"
|
||||
data_src = DATA_SRC.CCXT
|
||||
lv_list = [KL_TYPE.K_60M]
|
||||
|
||||
config = CChanConfig({
|
||||
"bi_strict": True,
|
||||
"trigger_step": False,
|
||||
"skip_step": 0,
|
||||
"divergence_rate": float("inf"),
|
||||
"bsp2_follow_1": False,
|
||||
"bsp3_follow_1": False,
|
||||
"min_zs_cnt": 0,
|
||||
"bs1_peak": False,
|
||||
"macd_algo": "peak",
|
||||
"bs_type": '1,2,3a,1p,2s,3b',
|
||||
"print_warning": True,
|
||||
"zs_algo": "normal",
|
||||
})
|
||||
|
||||
plot_config = {
|
||||
"plot_kline": True,
|
||||
"plot_kline_combine": True,
|
||||
"plot_bi": True,
|
||||
"plot_seg": True,
|
||||
"plot_eigen": True,
|
||||
"plot_zs": True,
|
||||
"plot_macd": True,
|
||||
"plot_mean": False,
|
||||
"plot_channel": False,
|
||||
"plot_bsp": True,
|
||||
"plot_extrainfo": False,
|
||||
"plot_demark": False,
|
||||
"plot_marker": False,
|
||||
"plot_rsi": False,
|
||||
"plot_kdj": False,
|
||||
}
|
||||
|
||||
plot_para = {
|
||||
"seg": {
|
||||
"plot_trendline": True,
|
||||
},
|
||||
"bi": {
|
||||
"show_num": True,
|
||||
"disp_end": True,
|
||||
},
|
||||
"figure": {
|
||||
"x_range": 1000,
|
||||
},
|
||||
"marker": {
|
||||
# "markers": { # text, position, color
|
||||
# '2023/06/01': ('marker here', 'up', 'red'),
|
||||
# '2023/06/08': ('marker here', 'down')
|
||||
# },
|
||||
}
|
||||
}
|
||||
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,
|
||||
)
|
||||
|
||||
if not config.trigger_step:
|
||||
plot_driver = CPlotDriver(
|
||||
chan,
|
||||
plot_config=plot_config,
|
||||
plot_para=plot_para,
|
||||
)
|
||||
# plot_driver.figure.show()
|
||||
plot_driver.save2img("./test.png")
|
||||
else:
|
||||
CAnimateDriver(
|
||||
chan,
|
||||
plot_config=plot_config,
|
||||
plot_para=plot_para,
|
||||
)
|
||||
bsp_list = chan.get_bsp()
|
||||
for bsp in bsp_list:
|
||||
print(bsp.klu.time, bsp.type2str(), bsp.is_buy)
|
||||
Reference in New Issue
Block a user