全新的策略
This commit is contained in:
parent
7d5a14d9ec
commit
8d140b58c3
@ -1,55 +1,3 @@
|
||||
from freqtrade.strategy import IStrategy
|
||||
from pandas import DataFrame
|
||||
import pandas_ta as ta
|
||||
from freqtrade.exchange import timeframe_to_minutes
|
||||
|
||||
class ShortTermMultiTimeframeStrategy(IStrategy):
|
||||
# 策略参数
|
||||
minimal_roi = {
|
||||
"0": 0.04, # 4% ROI (10 分钟内)
|
||||
"60": 0.02, # 2% ROI (1 小时)
|
||||
"180": 0.01, # 1% ROI (3 小时)
|
||||
"360": 0.0 # 0% ROI (6 小时)
|
||||
}
|
||||
|
||||
stoploss = -0.015 # 初始止损 -1.5%
|
||||
trailing_stop = True # 启用追踪止损
|
||||
trailing_stop_positive = 0.008 # 价格上涨 0.8% 后开始追踪
|
||||
trailing_stop_positive_offset = 0.01 # 追踪止损偏移量 1%
|
||||
|
||||
timeframe = "3m" # 主时间框架为 3 分钟
|
||||
can_short = False # 禁用做空
|
||||
|
||||
# 自定义指标参数
|
||||
bb_length = 20 # 布林带周期
|
||||
bb_std = 2.0 # 布林带标准差
|
||||
rsi_length = 14 # RSI 周期
|
||||
rsi_overbought = 70 # RSI 超买阈值
|
||||
rsi_oversold = 30 # RSI 超卖阈值
|
||||
|
||||
def informative_pairs(self):
|
||||
# 定义辅助时间框架
|
||||
pairs = self.dp.current_whitelist()
|
||||
informative_pairs = [(pair, '15m') for pair in pairs] + [(pair, '1h') for pair in pairs]
|
||||
return informative_pairs
|
||||
|
||||
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
|
||||
# 计算 3m 周期的指标
|
||||
bb_3m = ta.bbands(dataframe['close'], length=self.bb_length, std=self.bb_std)
|
||||
dataframe['bb_lower_3m'] = bb_3m[f'BBL_{self.bb_length}_{self.bb_std}']
|
||||
dataframe['bb_upper_3m'] = bb_3m[f'BBU_{self.bb_length}_{self.bb_std}']
|
||||
dataframe['rsi_3m'] = ta.rsi(dataframe['close'], length=self.rsi_length)
|
||||
|
||||
# 成交量过滤
|
||||
dataframe['volume_ma'] = dataframe['volume'].rolling(20).mean()
|
||||
|
||||
# 计算 ATR 用于动态止损
|
||||
dataframe['atr'] = ta.atr(dataframe['high'], dataframe['low'], dataframe['close'], length=14)
|
||||
|
||||
# 获取 15m 数据
|
||||
df_15m = self.dp.get_pair_dataframe(pair=metadata['pair'], timeframe='15m')
|
||||
bb_15m = ta.bbands(df_15m['close'], length=self.bb_length, std=self.bb_std)
|
||||
df_15m['bb_lower_15m'] = bb_15m[f'BBL_{self.bb_length}_{self.bb_std}']
|
||||
df_15m['bb_upper_15m'] = bb_15m[f'BBU_{self.bb_length}_{self.bb_std}']
|
||||
df_15m['rsi_15m'] = ta.rsi(df_15m['close'], length=self.rsi_length)
|
||||
|
||||
@ -117,3 +65,4 @@ class ShortTermMultiTimeframeStrategy(IStrategy):
|
||||
if atr > 0:
|
||||
return -1.5 * atr / current_rate # 动态止损为 1.5 倍 ATR
|
||||
return self.stoploss # 回退到固定止损
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user