This strategy is a trend-following trading system based on price fractal theory, which identifies market fractal structures and combines fixed-point trigger conditions with take-profit settings for automated trading. The core strategy involves setting long entry points above bottom fractals and short entry points below top fractals, along with corresponding take-profit levels for risk control.
The core logic includes the following key steps:
This strategy combines fractal theory with momentum breakout concepts to build a complete trading system. Its strengths lie in objectivity and high automation, though it faces some market adaptability challenges. Through optimization measures like dynamic parameter adjustment and market environment recognition, the strategy’s stability and profitability can be further enhanced. In live trading, investors should adjust parameters based on their risk tolerance and capital size.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-09 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Fractal Buy/Sell Strategy with 107 Pips Target", overlay=true) // 输入参数 trigger_pips = input.int(107, title="Entry Distance (Pips)") // 入场点距离底分型或顶分型的距离 take_profit_pips = input.int(107, title="Take Profit (Pips)") // 止盈点数 pip_value = syminfo.mintick * 10 // 点值(每点等于多少价格单位) // 计算分型 is_bottom_fractal = low[1] < low[2] and low[1] < low[0] // 判断是否为底分型 is_top_fractal = high[1] > high[2] and high[1] > high[0] // 判断是否为顶分型 // 存储分型位置 var float last_bottom_fractal = na var float last_top_fractal = na // 更新分型值 if is_bottom_fractal last_bottom_fractal := low[1] if is_top_fractal last_top_fractal := high[1] // 计算开盘价格 bottom_trigger_price = na(last_bottom_fractal) ? na : last_bottom_fractal + trigger_pips * pip_value top_trigger_price = na(last_top_fractal) ? na : last_top_fractal - trigger_pips * pip_value // 交易逻辑:底分型多单和顶分型空单 if not na(last_bottom_fractal) if close <= bottom_trigger_price strategy.entry("Buy", strategy.long) strategy.exit("Take Profit", from_entry="Buy", limit=bottom_trigger_price + take_profit_pips * pip_value) if not na(last_top_fractal) if close >= top_trigger_price strategy.entry("Sell", strategy.short) strategy.exit("Take Profit", from_entry="Sell", limit=top_trigger_price - take_profit_pips * pip_value) // 绘制分型和触发价格 plotshape(series=is_bottom_fractal, style=shape.triangleup, location=location.belowbar, color=color.green, title="Bottom Fractal") plotshape(series=is_top_fractal, style=shape.triangledown, location=location.abovebar, color=color.red, title="Top Fractal") plot(bottom_trigger_price, title="Buy Trigger", color=color.green, linewidth=1) plot(top_trigger_price, title="Sell Trigger", color=color.red, linewidth=1)