
이 전략은 하인 아쉬 평균에서 거래 신호를 생성하는 것을 기반으로 한다. 이 중, 구매 및 판매 신호의 생성 하인 아쉬 종결 가격과 75 퍼센트 가격 수준의 교차와 하인 아쉬 종결 가격의 이동 평균보다 높은 두 가지 요소를 고려한다.
이 전략은 하인 아쉬 평균을 사용하여 일반 K 선을 대신하여 분석합니다. 이 평균은 시장 소음을 필터링하여 추세와 역전 신호를 발견하는 데 도움이 됩니다. 구체적으로, 이 전략은 퍼센트 채널과 이동 평균을 결합하여 거래 신호를 생성합니다.
또한, 이 전략은 단방위험을 통제하기 위해 손해배상거리를 설정하고 손해배상 추적을 한다.
위와 같은 위험을 줄이기 위해 이동 평균 주기를 적절하게 조정하거나 스톱 스포트 비율을 조정할 수 있습니다.
이 전략은 하인 아쉬 평균, 퍼센티지얼 채널 및 이동 평균의 여러 지표를 통합하여 거래 시스템을 형성한다. 이 시스템은 트렌드 방향을 효과적으로 식별하고 위험을 제어하기 위해 스톱로스를 설정할 수 있으며, 고려할 가치가 있는 양적 거래 전략이다. 파라미터를 최적화하고 다른 보조 지표를 추가함으로써 시스템의 안정성을 더욱 향상시킬 수 있다.
/*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)