Chiến lược này tạo ra các tín hiệu giao dịch dựa trên các ngọn nến Heikin Ashi. Cụ thể, các tín hiệu mua và bán được coi là dựa trên sự chéo chéo của giá đóng cửa Heikin Ashi và mức giá phần trăm thứ 75, cũng như giá đóng cửa Heikin Ashi nằm trên các đường trung bình động nhất định.
Chiến lược này sử dụng nến Heikin Ashi thay vì nến thông thường để phân tích. Bản chất mịn của nến Heikin Ashi giúp xác định xu hướng và đảo ngược rõ ràng hơn. Cụ thể, chiến lược kết hợp các kênh phần trăm và trung bình động để tạo ra tín hiệu giao dịch:
Dừng lỗ và dừng theo dõi cũng được sử dụng để kiểm soát rủi ro giảm trên mỗi giao dịch.
Để giảm thiểu rủi ro, các thông số như thời gian trung bình động và tỷ lệ phần trăm dừng lỗ có thể cần phải điều chỉnh.
Chiến lược này kết hợp các nến Heikin Ashi, kênh phần trăm và đường trung bình động để tạo thành một cách tiếp cận có hệ thống, có khả năng xác định xu hướng và kiểm soát rủi ro thông qua dừng lỗ.
/*backtest start: 2023-12-17 00:00:00 end: 2023-12-24 00:00:00 period: 45m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("HK Percentile Interpolation One",shorttitle = "HKPIO", overlay=false, default_qty_type = strategy.cash, default_qty_value = 5000, calc_on_order_fills = true, calc_on_every_tick = true) // Input parameters stopLossPercentage = input(3, title="Stop Loss (%)") // User can set Stop Loss as a percentage trailStopPercentage = input(1.5, title="Trailing Stop (%)") // User can set Trailing Stop as a percentage lookback = input.int(14, title="Lookback Period", minval=1) // User can set the lookback period for percentile calculation yellowLine_length = input.int(5, "Yellow", minval=1) // User can set the length for Yellow EMA purplLine_length = input.int(10, "Purple", minval=1) // User can set the length for Purple EMA holdPeriod = input.int(200, title="Minimum Holding Period", minval=10) // User can set the minimum holding period startDate = timestamp("2021 01 01") // User can set the start date for the strategy // Calculate Heikin Ashi values haClose = ohlc4 var float haOpen = na haOpen := na(haOpen[1]) ? (open + close) / 2 : (haOpen[1] + haClose[1]) / 2 haHigh = math.max(nz(haOpen, high), nz(haClose, high), high) haLow = math.min(nz(haOpen, low), nz(haClose, low), low) // Calculate Moving Averages yellowLine = ta.ema(haClose, yellowLine_length) purplLine = ta.ema(haClose, purplLine_length) // Calculate 25th and 75th percentiles p25 = ta.percentile_linear_interpolation(haClose, lookback, 28) p75 = ta.percentile_linear_interpolation(haClose, lookback, 78) // Generate buy/sell signals longSignal = ta.crossover(haClose, p75) and haClose > yellowLine sellSignal = ta.crossunder(haClose, yellowLine) longSignal1 = ta.crossover(haClose, p75) and haClose > purplLine sellSignal1 = ta.crossunder(haClose, purplLine) // Set start time and trade conditions if(time >= startDate) // When longSignal is true, enter a long trade and set stop loss and trailing stop conditions if (longSignal) strategy.entry("Long", strategy.long, 1) strategy.exit("Sell", "Long", stop=close*(1-stopLossPercentage/100), trail_points=close*trailStopPercentage/100, trail_offset=close*trailStopPercentage/100) // When sellSignal is true, close the long trade if (sellSignal) strategy.close("Long") // When sellSignal1 is true, enter a short trade if (sellSignal1) strategy.entry("Short", strategy.short, 1) // When longSignal1 is true, close the short trade if (longSignal1) strategy.close("Short") // Plot Heikin Ashi candles plotcandle(haOpen, haHigh, haLow, haClose, title="Heikin Ashi", color=(haClose >= haOpen ? color.rgb(1, 168, 6) : color.rgb(176, 0, 0))) // Plot 25th and 75th percentile levels plot(p25, title="25th Percentile", color=color.green, linewidth=1, style=plot.style_circles) plot(p75, title="75th Percentile", color=color.red, linewidth=1, style=plot.style_circles) // Plot Moving Averages plot(yellowLine, color = color.rgb(254, 242, 73, 2), linewidth = 2, style = plot.style_stepline) plot(purplLine, color = color.rgb(255, 77, 234, 2), linewidth = 2, style = plot.style_stepline)