This strategy is a trend following system based on smoothed Heikin Ashi candlesticks. By calculating Heikin Ashi candlesticks at a higher timeframe and applying them to trading decisions at lower timeframes, it effectively reduces market noise. The strategy offers flexible trading direction options, allowing long-only, short-only, or bi-directional trading, and integrates stop-loss and take-profit functions for fully automated trading.
The core logic utilizes the smoothing characteristics of Heikin Ashi candlesticks at higher timeframes to identify trends. Heikin Ashi candlesticks effectively filter market noise and highlight major trends through moving average calculations of opening and closing prices. The system enters long positions in long-only mode when green candles appear, indicating an uptrend, and enters short positions in short-only mode when red candles appear, indicating a downtrend. The strategy also includes percentage-based stop-loss and take-profit mechanisms to help control risk and lock in profits.
This strategy effectively captures market trends through the smoothing characteristics of multi-timeframe Heikin Ashi indicators while controlling drawdowns through comprehensive risk management mechanisms. The strategy’s flexibility and scalability give it good practical value, and through continuous optimization and improvement, it can adapt to different market environments. While certain risks exist, stable trading performance can be achieved through appropriate parameter settings and risk management.
/*backtest start: 2024-11-10 00:00:00 end: 2024-12-09 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Optimized Heikin Ashi Strategy with Buy/Sell Options", overlay=true) // User inputs for customizing backtest settings startDate = input(timestamp("2023-01-01 00:00"), title="Backtest Start Date", tooltip="Start date for the backtest") endDate = input(timestamp("2024-01-01 00:00"), title="Backtest End Date", tooltip="End date for the backtest") // Input for Heikin Ashi timeframe optimization ha_timeframe = input.timeframe("D", title="Heikin Ashi Timeframe", tooltip="Choose the timeframe for Heikin Ashi candles") // Inputs for optimizing stop loss and take profit use_stop_loss = input.bool(true, title="Use Stop Loss") stop_loss_percent = input.float(2.0, title="Stop Loss (%)", minval=0.0, tooltip="Set stop loss percentage") use_take_profit = input.bool(true, title="Use Take Profit") take_profit_percent = input.float(4.0, title="Take Profit (%)", minval=0.0, tooltip="Set take profit percentage") // Input to choose Buy or Sell trade_type = input.string("Buy Only", options=["Buy Only", "Sell Only"], title="Trade Type", tooltip="Choose whether to only Buy or only Sell") // Heikin Ashi calculation on a user-defined timeframe ha_open = request.security(syminfo.tickerid, ha_timeframe, ta.sma(open, 2), barmerge.gaps_off, barmerge.lookahead_on) ha_close = request.security(syminfo.tickerid, ha_timeframe, ta.sma(close, 2), barmerge.gaps_off, barmerge.lookahead_on) ha_high = request.security(syminfo.tickerid, ha_timeframe, math.max(high, close), barmerge.gaps_off, barmerge.lookahead_on) ha_low = request.security(syminfo.tickerid, ha_timeframe, math.min(low, open), barmerge.gaps_off, barmerge.lookahead_on) // Heikin Ashi candle colors ha_bullish = ha_close > ha_open // Green candle ha_bearish = ha_close < ha_open // Red candle // Backtest period filter inDateRange = true // Trading logic depending on user input if (inDateRange) // Ensures trades happen only in the selected period if (trade_type == "Buy Only") // Buy when green, Sell when red if (ha_bullish and strategy.position_size <= 0) // Buy on green candle only if no position is open strategy.entry("Buy", strategy.long) if (ha_bearish and strategy.position_size > 0) // Sell on red candle (close the long position) strategy.close("Buy") if (trade_type == "Sell Only") // Sell when red, Exit sell when green if (ha_bearish and strategy.position_size >= 0) // Sell on red candle only if no position is open strategy.entry("Sell", strategy.short) if (ha_bullish and strategy.position_size < 0) // Exit the sell position on green candle strategy.close("Sell") // Add Stop Loss and Take Profit conditions if enabled if (use_stop_loss) strategy.exit("Stop Loss", from_entry="Buy", stop=strategy.position_avg_price * (1 - stop_loss_percent / 100)) if (use_take_profit) strategy.exit("Take Profit", from_entry="Buy", limit=strategy.position_avg_price * (1 + take_profit_percent / 100)) // Plot Heikin Ashi candles on the chart plotcandle(ha_open, ha_high, ha_low, ha_close, color=ha_bullish ? color.green : color.red)