Chiến lược giao dịch can thiệp phần trăm Heikin Ashi

Tác giả:ChaoZhang, Ngày: 2023-12-25 11:02:25
Tags:

img

Tổng quan

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 logic

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:

  1. Một tín hiệu dài được tạo ra khi Heikin Ashi đóng cửa vượt qua mức 75 phần trăm.
  2. Một tín hiệu bán được kích hoạt khi Heikin Ashi đóng cửa vượt dưới đường trung bình động 5 giai đoạn.

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.

Ưu điểm

  1. Những ngọn nến Heikin Ashi xác định rõ xu hướng và nhanh chóng phát hiện sự đảo ngược.
  2. Các kênh phần trăm giúp xác định các điều kiện mua quá mức / bán quá mức để thời gian vào và ra.
  3. Việc sử dụng lệnh dừng lỗ và lệnh dừng theo dõi chủ động kiểm soát rủi ro.

Rủi ro

  1. Nến Heikin Ashi có sự chậm trễ theo thiết kế, có thể dẫn đến việc thiếu giá nhập / xuất tốt nhất.
  2. Các kênh phần trăm không hoàn toàn xác định sự đảo ngược xu hướng, dẫn đến các whipsaws tiềm năng.
  3. Đặt điểm dừng lỗ không đúng có thể làm giảm lợi nhuận sớm hoặc cho phép mất mát không thể chấp nhận được.

Để 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.

Những cải tiến

  1. Kiểm tra các kết hợp trung bình động khác nhau để tìm các thông số tối ưu.
  2. Chọn chính xác độ dài kênh phần trăm để xác định tốt hơn giá vùng nóng .
  3. Bao gồm các chỉ số bổ sung để xác nhận tín hiệu và tránh tín hiệu sai.
  4. Thực hiện các khoảng cách dừng mất tích năng động.

Kết luận

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)


Thêm nữa