Check 1day data

This commit is contained in:
jackyu66git
2025-06-06 21:42:35 +08:00
parent 6fbdf65422
commit 9ace03b29b
5 changed files with 1951 additions and 1862 deletions
+33 -13
View File
@@ -21,7 +21,8 @@ logger = logging.getLogger(__name__)
# freqtrade plot-dataframe --strategy ChanLun_BTC_15 --datadir user_data/data/binance -c ./user_data/ChanLun_SOL_15.json --timerange=20250309-
# freqtrade trade -c ./user_data/Chan/config/ChanLun_BTC_15.json --strategy ChanLun_BTC_15 --strategy-path ./user_data/Chan/strategies
# freqtrade backtesting -c ./user_data/Chan/config/ChanLun_BTC_15.json --strategy ChanLun_BTC_15 --strategy-path ./user_data/Chan/strategies --timerange=20250525-
# freqtrade backtesting --export none -c ./user_data/Chan/config/ChanLun_BTC_15.json --strategy ChanLun_BTC_15 --strategy-path ./user_data/Chan/strategies --timerange=20250525-
# freqtrade lookahead-analysis --export none -c ./user_data/Chan/config/ChanLun_BTC_15.json --strategy ChanLun_BTC_15 --strategy-path ./user_data/Chan/strategies --timerange=20250525-
# freqtrade download-data -c ./user_data/Chan/config/ChanLun_BTC_15.json -t 1m --pairs BTC/USDT:USDT --timerange=20250405-
# freqtrade hyperopt --hyperopt-loss SharpeHyperOptLossDaily --spaces roi stoploss --strategy ChanLun_BTC_15 --strategy-path ./user_data/Chan/strategies -c ./user_data/Chan/config/ChanLun_BTC_15.json -e 200 --timerange=20250201-20250401
@@ -41,12 +42,19 @@ class ChanLun_BTC_15(IStrategy):
"1200": 0
}
# 5m and 15m
minimal_roi_1 = {
minimal_roi = {
"0": 0.1,
"60": 0.05,
"120": 0.02,
"240": 0
}
# 5m and 15m
minimal_roi_1 = {
"0": 0.05,
"120": 0.02,
"240": 0.01,
"360": 0
}
# 15m and 30m
minimal_roi_1 = {
"0": 0.1,
@@ -61,22 +69,24 @@ class ChanLun_BTC_15(IStrategy):
"3600": 0
}
can_short = True
lev = 50.0
lev = 1.0
stoploss = -0.3
bsp_offset = 2
trailing_stop = False
trailing_stop_positive = 0.025
trailing_stop_positive_offset = 0.045
trailing_only_offset_is_reached = False
position_adjustment_enable = True
startup_candle_count = 600
startup_candle_count = 100
time5 = 5
time15 = 15
time30 = 30
time60 = 60
time4h = 240
time5 = 15
time1d = 1440
time5 = 1440
last_time = datetime.now()
chan = ChanLun()
classifier = ChanLunClassifier(None)
@@ -108,6 +118,7 @@ class ChanLun_BTC_15(IStrategy):
state_list, fx_list = self.chan.get_klc_strength_list(dataframe_15)
dataframe_15['state'] = state_list
dataframe_15['fx'] = fx_list
dataframe_15['bsp'] = self.chan.get_klc_bsp_list(dataframe_15)
klc_list = self.chan.get_klc_list(dataframe_15)
bi_list = self.chan.cal_bi_list(klc_list)
if self.last_time + timedelta(minutes=1) < datetime.now():
@@ -147,6 +158,7 @@ class ChanLun_BTC_15(IStrategy):
# 填充缺失值(前N根K线)
df['volume_ratio'] = df['volume_ratio'].fillna(1.0)
return df['volume_ratio']
def custom_entry_price(self, pair: str, trade: Trade | None, current_time: datetime, proposed_rate: float,
entry_tag: str | None, side: str, **kwargs) -> float:
new_entryprice = proposed_rate
@@ -171,11 +183,14 @@ class ChanLun_BTC_15(IStrategy):
def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
state_str = 'resample_{}_state'.format(self.get_ticker_indicator()*self.time5)
fx_str = 'resample_{}_fx'.format(self.get_ticker_indicator()*self.time5)
bsp_str = 'resample_{}_bsp'.format(self.get_ticker_indicator()*self.time5)
shift = self.time5*self.bsp_offset
dataframe.loc[
(
#(dataframe['state'] == "-30")
(dataframe[state_str].shift(self.time5) > 1.0) &
(dataframe[fx_str].shift(self.time5) == -1)
#(dataframe[state_str].shift(shift) > 1.0) &
#(dataframe[fx_str].shift(shift) == -1)
(dataframe[bsp_str].shift(shift) == -1)
#(dataframe['resample_{}_state'.format(self.get_ticker_indicator()*self.time5)].shift(self.time5) == "-10") &
#(dataframe['resample_{}_state'.format(self.get_ticker_indicator()*self.time30)] == "-10") &
#(dataframe['resample_{}_state'.format(self.get_ticker_indicator()*self.time5)].shift(self.time5) == "-10")
@@ -185,8 +200,9 @@ class ChanLun_BTC_15(IStrategy):
dataframe.loc[
(
#(dataframe['state'] == "-30")
(dataframe[state_str].shift(self.time5) > 1.0) &
(dataframe[fx_str].shift(self.time5) == 1)
#(dataframe[state_str].shift(shift) > 1.0) &
#(dataframe[fx_str].shift(shift) == 1)
(dataframe[bsp_str].shift(shift) == 1)
#(dataframe['resample_{}_state'.format(self.get_ticker_indicator()*self.time5)].shift(self.time5) == "-10") &
#(dataframe['resample_{}_state'.format(self.get_ticker_indicator()*self.time30)] == "-10") &
#(dataframe['resample_{}_state'.format(self.get_ticker_indicator()*self.time5)].shift(self.time5) == "-10")
@@ -197,11 +213,14 @@ class ChanLun_BTC_15(IStrategy):
def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
state_str = 'resample_{}_state'.format(self.get_ticker_indicator()*self.time5)
fx_str = 'resample_{}_fx'.format(self.get_ticker_indicator()*self.time5)
bsp_str = 'resample_{}_bsp'.format(self.get_ticker_indicator()*self.time5)
shift = self.time5*self.bsp_offset
dataframe.loc[
(
#(dataframe['state']== "30")
(dataframe[state_str].shift(self.time5) > 1.0) &
(dataframe[fx_str].shift(self.time5) == 1)
#(dataframe[state_str].shift(shift) > 1.0) &
#(dataframe[fx_str].shift(shift) == 1)
(dataframe[bsp_str].shift(shift) == 1)
#(dataframe['resample_{}_state'.format(self.get_ticker_indicator()*self.time30)] == "10") &
#(dataframe['resample_{}_state'.format(self.get_ticker_indicator()*self.time60)] == "10")
),
@@ -209,8 +228,9 @@ class ChanLun_BTC_15(IStrategy):
dataframe.loc[
(
#(dataframe['state']== "30")
(dataframe[state_str].shift(self.time5) > 1.0) &
(dataframe[fx_str].shift(self.time5) == -1)
#(dataframe[state_str].shift(shift) > 1.0) &
#(dataframe[fx_str].shift(shift) == -1)
(dataframe[bsp_str].shift(shift) == -1)
#(dataframe['resample_{}_state'.format(self.get_ticker_indicator()*self.time30)] == "10") &
#(dataframe['resample_{}_state'.format(self.get_ticker_indicator()*self.time60)] == "10")
),