Add files

Add first batch of files
This commit is contained in:
jackyu66git
2025-04-22 10:09:19 +08:00
parent 626d3a6f26
commit 70e14c2ea3
5 changed files with 73 additions and 4 deletions
+2
View File
@@ -0,0 +1,2 @@
.DS_Store
__pycache__/
+8 -1
View File
@@ -53,7 +53,14 @@ class ChanBI():
def set_next(self, bi):
self.next = bi
def add_klc(self, klc):
self.klc_list.append(klc)
added = False
if len(self.klc_list) > 0:
for index in range(0, len(self.klc_list)):
if self.klc_list[index].index == klc.index:
added = True
break
if not added:
self.klc_list.append(klc)
def append_klc_list(self, klc_list):
self.klc_list.append(klc_list)
def update_bi(self, klc):
+18 -2
View File
@@ -1,7 +1,7 @@
import copy
from typing import Dict, Optional
from ChanEnum import Chan_FX_TYPE, Chan_KLINE_DIR
from ChanEnum import Chan_FX_TYPE, Chan_KLINE_DIR, Chan_BI_DIR
import ChanKLU
import ChanCTime
@@ -25,6 +25,7 @@ class ChanKLC():
self.open = klu.open
self.close = klu.close
self.volume = klu.volume
self.macdhist = 0
def add_klu(self, klu):
self.klus.append(klu)
def set_end_klu(self, klu):
@@ -107,8 +108,23 @@ class ChanKLC():
return Chan_FX_TYPE.BOTTOM
else:
return Chan_FX_TYPE.UNKNOWN
def set_bi_data(self, bi):
def set_bi(self, bi):
self.bi = bi
self.get_macdhist()
for index in range(0, len(self.bi.klc_list)):
klc = self.bi.klc_list[index]
if klc.index == self.index:
break
else:
if bi.dir == Chan_BI_DIR.UP:
self.macdhist += klc.get_macdhist()
else:
self.macdhist -= klc.get_macdhist()
def get_macdhist(self):
self.macdhist = 0
for klu in self.klus:
self.macdhist += klu.macdhist
return self.macdhist
def cal_klu_features(self):
features = dict()
feature_sums = dict()
+42 -1
View File
@@ -148,7 +148,7 @@ class ChanLun():
state_list.append("00")
return state_list
def get_bi_list(self, dataframe):
bi_list, klc_list = self.cal_bi_list(self.get_klc_list(dataframe))
bi_list = self.cal_bi_list(self.get_klc_list(dataframe))
return bi_list
def calculate_zs(self, bi_list, seg_list):
return self.get_zs_list(bi_list, seg_list)
@@ -528,6 +528,9 @@ class ChanLun():
# Do nothing
if fx == Chan_FX_TYPE.UNKNOWN:
klc.set_fx(Chan_FX_TYPE.UNKNOWN)
if len(bi_list) > 0:
bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1])
else:
if fx == Chan_FX_TYPE.TOP:
if last_top:
@@ -538,6 +541,8 @@ class ChanLun():
if last_top.high > klc.high:
klc.set_fx(Chan_FX_TYPE.TT)
klc.set_state("20")
bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1])
#print(klc.start_time, klc.fx, "二类买卖点Sell 1")
else:
# A new top found
@@ -545,12 +550,16 @@ class ChanLun():
last_top = klc
#print(klc.start_time, klc.fx, "一类买卖点Sell 1")
klc.set_state("10")
bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1])
else:
# 不满足结合律的分型
if last_bottom.index + 4 > klc.index:
if last_top.high > klc.high:
#print(klc.start_time, last_bottom.start_time, klc.fx, "中枢买卖点Sell 1")
klc.set_fx(Chan_FX_TYPE.UNKNOWN)
bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1])
# New TOP Found replace last top
else:
if last_top.index + 4 < klc.index and len(bi_list) > 1:
@@ -565,8 +574,12 @@ class ChanLun():
last_bottom = pre_last_bi.start_klc
#print(klc.start_time, last_bi.start_klc.start_time, "New TOP Found reset last bi")
klc.set_state("10")
bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1])
else:
klc.set_fx(Chan_FX_TYPE.UNKNOWN)
bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1])
#print(klc.start_time, last_bottom.start_time, klc.fx, "中枢买卖点Sell 2")
# 满足结合律
else:
@@ -581,6 +594,8 @@ class ChanLun():
bi_list.append(bi)
last_top = klc
klc.set_state('30')
bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1])
#print(klc.start_time, last_bottom.start_time, "Normal TOP Found, Confirm down bi 4")
# last bottom = None
else:
@@ -589,10 +604,14 @@ class ChanLun():
last_bi.set_start_klc(klc, Chan_BI_DIR.DOWN)
#last_top.set_fx(Chan_FX_TYPE.UNKNOWN)
last_top = klc
bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1])
else:
klc.set_fx(Chan_FX_TYPE.TT)
klc.set_state('20')
#print(klc.start_time, klc.fx, "二类买卖点Sell 2")
bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1])
else:
if last_bottom:
# 不满足结合律的分型
@@ -618,6 +637,8 @@ class ChanLun():
if last_bottom.low < klc.low:
klc.set_fx(Chan_FX_TYPE.BB)
klc.set_state("-20")
bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1])
#print(klc.start_time, klc.fx, "二类买卖点Buy 1")
else:
# A new bottom found
@@ -625,6 +646,8 @@ class ChanLun():
last_bottom = klc
#print(klc.start_time, klc.fx, "一类买卖点Buy 1")
klc.set_state("-10")
bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1])
else:
# 不满足结合律的分型
if last_top.index + 4 > klc.index:
@@ -633,6 +656,8 @@ class ChanLun():
#klc.set_fx(Chan_FX_TYPE.BB)
#klc.set_state("-100")
#print(klc.start_time, klc.fx, "中枢买卖点Buy 1")
bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1])
# Found new bottom
else:
if last_bottom.index + 4 < klc.index and len(bi_list) > 1:
@@ -647,8 +672,12 @@ class ChanLun():
last_top = pre_last_bi.start_klc
#print(klc.start_time, last_bi.start_klc.start_time, "New BOTTOM Found reset last bi")
klc.set_state("-10")
bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1])
else:
klc.set_fx(Chan_FX_TYPE.UNKNOWN)
bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1])
#print(klc.start_time, klc.fx, "中枢买卖点Buy 2")
# 满足结合律的分型
else:
@@ -663,6 +692,8 @@ class ChanLun():
bi_list.append(bi)
last_bottom = klc
klc.set_state('-30')
bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1])
#print(klc.start_time, last_top.start_time, "Normal Bottom Found, Confirm up bi 6")
# last_top = None
else:
@@ -671,25 +702,35 @@ class ChanLun():
last_bi.set_start_klc(klc, Chan_BI_DIR.UP)
#last_bottom.set_fx(Chan_FX_TYPE.UNKNOWN)
last_bottom = klc
bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1])
else:
klc.set_fx(Chan_FX_TYPE.BB)
klc.set_state('-20')
#print(klc.start_time, klc.fx, "二类买卖点Buy 2")
bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1])
# last_bottom = None
else:
if last_top:
# 不满足结合律的分型
if last_top.index + 4 > klc.index:
klc.set_fx(Chan_FX_TYPE.UNKNOWN)
bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1])
else:
# First temp bottom and last top confirmed
last_bottom = klc
bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1])
# Last top = None, last bottom = None, create first up bi
else:
# First temp bottom and no top yet
last_bottom = klc
bi = ChanBI(klc, len(bi_list), Chan_BI_DIR.UP)
bi_list.append(bi)
bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1])
#print(klc.start_time, 'Create first bottom')
#print(klc.time, klc.fx, klc.state)
for klc in klc_list:
+3
View File
@@ -290,6 +290,9 @@ class ChanLunClassifier:
if bi_index == len(bi_list):
bi_index = len(bi_list) - 1
bi = bi_list[bi_index]
if klc.end_klu and bi.end_klc and klc.start_klu.index >= bi.start_klc.start_klu.index and klc.end_klu.index <= bi.end_klc.end_klu.index:
klc.set_bi(bi)
# 提取特征
features = klc.get_feature_data()