v2.2b: 当前最优基线 - 回测+4673%/+17%最大回撤 + backtest配置
This commit is contained in:
35
config.backtest.json
Normal file
35
config.backtest.json
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"max_open_trades": 1,
|
||||||
|
"stake_currency": "USDT",
|
||||||
|
"stake_amount": "unlimited",
|
||||||
|
"tradable_balance_ratio": 0.99,
|
||||||
|
"fiat_display_currency": "USD",
|
||||||
|
"dry_run": true,
|
||||||
|
"dry_run_wallet": 10000,
|
||||||
|
"trading_mode": "futures",
|
||||||
|
"margin_mode": "isolated",
|
||||||
|
"liquidation_buffer": 0.05,
|
||||||
|
"exchange": {
|
||||||
|
"name": "binance",
|
||||||
|
"key": "",
|
||||||
|
"secret": "",
|
||||||
|
"password": "",
|
||||||
|
"ccxt_config": {"enableRateLimit": true},
|
||||||
|
"ccxt_async_config": {"enableRateLimit": true},
|
||||||
|
"pair_whitelist": ["ETH/USDT:USDT"],
|
||||||
|
"pair_blacklist": []
|
||||||
|
},
|
||||||
|
"pairlists": [{"method": "StaticPairList"}],
|
||||||
|
"telegram": {"enabled": false, "token": "", "chat_id": ""},
|
||||||
|
"api_server": {
|
||||||
|
"enabled": false,
|
||||||
|
"listen_ip_address": "0.0.0.0",
|
||||||
|
"listen_port": 8080,
|
||||||
|
"username": "freqtrader",
|
||||||
|
"password": "password",
|
||||||
|
"jwt_secret_key": "somethingRandom123"
|
||||||
|
},
|
||||||
|
"bot_name": "backtest",
|
||||||
|
"entry_pricing": {"price_side": "same", "use_order_book": true, "order_book_top": 1},
|
||||||
|
"exit_pricing": {"price_side": "same", "use_order_book": true, "order_book_top": 1}
|
||||||
|
}
|
||||||
21
strategy.py
21
strategy.py
@ -1,10 +1,10 @@
|
|||||||
"""
|
"""
|
||||||
Structure Flow Strategy v2.1
|
Structure Flow Strategy v2.2b
|
||||||
=======================
|
=======================
|
||||||
变更记录:
|
变更记录:
|
||||||
v1.6 (2026-06-07): 最优基线 — +3659.63%, 190笔, 69.3% trailing胜率
|
v1.6 (2026-06-07): 最优基线 — +3659.63%, 190笔, 69.3% trailing胜率
|
||||||
v2.0 (2026-06-08): B1 入场延迟确认 — 方向正确但降频严重
|
v2.0 (2026-06-08): B1 入场延迟确认 — 方向正确但降频严重
|
||||||
v2.1 (2026-06-08): ===== D1: 趋势强度过滤 =====
|
v2.2b (2026-06-09): ===== 只移除 bullish_signal/bearish_signal =====
|
||||||
在4H级别评估趋势强度:最近2个Swing Point的间距变化。
|
在4H级别评估趋势强度:最近2个Swing Point的间距变化。
|
||||||
如果趋势在扩张(HH/HL间距增大),允许入场;
|
如果趋势在扩张(HH/HL间距增大),允许入场;
|
||||||
如果趋势在收缩(HH/HL间距缩小或震荡),过滤信号。
|
如果趋势在收缩(HH/HL间距缩小或震荡),过滤信号。
|
||||||
@ -19,11 +19,11 @@ from freqtrade.strategy import IStrategy, IntParameter, informative
|
|||||||
from freqtrade.persistence import Trade
|
from freqtrade.persistence import Trade
|
||||||
|
|
||||||
|
|
||||||
class StructureFlowStrategyV21(IStrategy):
|
class StructureFlowStrategyV22b(IStrategy):
|
||||||
"""
|
"""
|
||||||
Structure Flow Strategy v2.1 — D1: 趋势强度过滤
|
Structure Flow Strategy v2.2b — D1: 趋势强度过滤
|
||||||
|
|
||||||
v2.1改动(相对于v1.6):
|
v2.2b改动(相对于v2.1):
|
||||||
在4H级别计算趋势强度:最近2个Swing High间距 + Swing Low间距的变化。
|
在4H级别计算趋势强度:最近2个Swing High间距 + Swing Low间距的变化。
|
||||||
只有趋势在扩张(或至少不收缩)时才允许入场。
|
只有趋势在扩张(或至少不收缩)时才允许入场。
|
||||||
"""
|
"""
|
||||||
@ -46,7 +46,7 @@ class StructureFlowStrategyV21(IStrategy):
|
|||||||
cooldown_bars = IntParameter(3, 12, default=6, space="buy")
|
cooldown_bars = IntParameter(3, 12, default=6, space="buy")
|
||||||
# v2.1 新增:趋势强度最小扩张比例(x/100 = 0%~50%)
|
# v2.1 新增:趋势强度最小扩张比例(x/100 = 0%~50%)
|
||||||
# 0 = 只要不收缩就行;越大要求趋势扩张越强
|
# 0 = 只要不收缩就行;越大要求趋势扩张越强
|
||||||
trend_strength_min = IntParameter(-50, 20, default=-20, space="buy") # -20=允许SP轻微收缩, 最佳值
|
trend_strength_min = IntParameter(-50, 20, default=-20, space="buy") # 扫描更宽范围
|
||||||
|
|
||||||
# =====================
|
# =====================
|
||||||
# 工具:Swing Point 检测
|
# 工具:Swing Point 检测
|
||||||
@ -322,9 +322,8 @@ class StructureFlowStrategyV21(IStrategy):
|
|||||||
"""
|
"""
|
||||||
入场逻辑(1H 时间框架)。
|
入场逻辑(1H 时间框架)。
|
||||||
|
|
||||||
v2.1 核心改动:D1 — 趋势强度过滤
|
v2.2b 改动:只移除 bullish_signal/bearish_signal(1H K线过滤)
|
||||||
做多额外条件:4H上升趋势在扩张(strong_uptrend_4h)
|
消融实验变体3:移除后收益 +19.4%,是三个可移除条件中收益提升最大的
|
||||||
做空额外条件:4H下降趋势在扩张(strong_downtrend_4h)
|
|
||||||
"""
|
"""
|
||||||
max_dist = self.max_stop_dist.value / 100.0
|
max_dist = self.max_stop_dist.value / 100.0
|
||||||
cooldown = self.cooldown_bars.value
|
cooldown = self.cooldown_bars.value
|
||||||
@ -348,7 +347,7 @@ class StructureFlowStrategyV21(IStrategy):
|
|||||||
long_base = (
|
long_base = (
|
||||||
dataframe["trend_up_1d"]
|
dataframe["trend_up_1d"]
|
||||||
& dataframe["in_demand_4h"]
|
& dataframe["in_demand_4h"]
|
||||||
& dataframe["bullish_signal"]
|
# v2.2b: 已移除 bullish_signal(消融变体3)
|
||||||
& (long_stop_dist <= max_dist)
|
& (long_stop_dist <= max_dist)
|
||||||
& (long_stop_dist > 0.003)
|
& (long_stop_dist > 0.003)
|
||||||
& dataframe["support_alive_4h"]
|
& dataframe["support_alive_4h"]
|
||||||
@ -365,7 +364,7 @@ class StructureFlowStrategyV21(IStrategy):
|
|||||||
short_base = (
|
short_base = (
|
||||||
dataframe["trend_down_1d"]
|
dataframe["trend_down_1d"]
|
||||||
& dataframe["in_supply_4h"]
|
& dataframe["in_supply_4h"]
|
||||||
& dataframe["bearish_signal"]
|
# v2.2b: 已移除 bearish_signal(消融变体3)
|
||||||
& (short_stop_dist <= max_dist)
|
& (short_stop_dist <= max_dist)
|
||||||
& (short_stop_dist > 0.003)
|
& (short_stop_dist > 0.003)
|
||||||
& dataframe["resistance_alive_4h"]
|
& dataframe["resistance_alive_4h"]
|
||||||
|
|||||||
Reference in New Issue
Block a user