
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)