하이켄 아시를 기반으로 한 전략을 따르는 암호화폐 트렌드

저자:차오장, 날짜: 2024-01-19 17:40:52
태그:

img

전반적인 설명

이 전략은 하이켄 아시 지표에 기반한 암호화폐 트렌드를 따르는 전략이다. 하이켄 아시와 다른 기간과 다양한 조건을 결합한 두 개의 기하급수적인 이동 평균 (EMA) 을 사용하여 거래 신호를 생성한다. 이 전략의 목표는 중장기 가격 추세를 파악하고 트렌드 반전이 발생했을 때 적시에 접근하는 것이다.

전략 논리

이 전략은 50 및 100 기간 EMA를 사용합니다. 한편, 시장 소음을 필터 할 수있는 특수 촛불인 하이켄 아시 촛불을 계산합니다. 이 전략은 하이켄 아시 촛불의 오픈, 클로즈, 고 및 저 가격을 사용하여 더 정확한 거래 신호를 생성하기 위해 100 기간 EMA에 적용합니다.

특히, 100주기 하이켄 아시의 오픈 가격은 클로즈 가격보다 높고, 이전 촛불의 오픈 가격은 클로즈 가격보다 낮을 때, 그것은 긴 신호입니다. 반대로, 100주기 하이켄 아시의 오픈 가격은 클로즈 가격보다 낮고, 이전 촛불의 오픈 가격은 클로즈 가격보다 높을 때, 그것은 짧은 신호입니다.

이 전략은 이중 EMA 시스템과 하이켄 아시 지표를 결합하여 중장기 트렌드가 형성될 때 적시에 기회를 포착하는 것을 목표로 한다. 이 전략은 하이켄 아시를 사용하여 단기 시장 소음을 필터링하여 거래 신호가 더 신뢰할 수 있도록 한다.

장점

  • 하이켄 아시를 사용하면 효과적으로 소음을 필터링하고 거래 신호를 더 명확하게 할 수 있습니다.
  • 이중 EMA와 하이켄 아시는 비교적 강한 중장기 동향을 파악할 수 있습니다.
  • 여러 조건 판단은 좋은 기회를 놓치지 않도록 도와줍니다.
  • 이 전략은 특히 매우 변동적인 암호화폐 시장에 적합합니다.
  • 거래 위험을 줄이기 위해 단장 전략으로 구성할 수 있습니다.

위험성

  • 스톱 로스가 너무 느려서 큰 손실이 발생할 수 있습니다.
  • 이 전략은 범위에 제한된 시장에서 더 비효율적인 거래를 일으킬 수 있습니다.
  • 하이켄 아시의 경우 여전히 약간의 지연이 있습니다. 위험을 완전히 피할 수 없습니다.
  • 트렌드 반전 지점을 결정할 수 없어 손실 증가 위험이 있습니다.

위험을 완화하기 위해, 우리는 적절하게 중지 손실 범위를 줄일 수 있습니다. 또는 추세 반전을 결정하기 위해 다른 지표를 결합하는 것을 고려할 수 있습니다. 시장이 범위에 묶인 기간에 들어갈 때, 우리는 또한 전략을 일시 중단하고 새로운 추세가 나타날 때까지 기다릴 수 있습니다.

최적화 방향

이 전략은 다음 측면에서도 최적화 될 수 있습니다.

  • 가장 좋은 매개 변수 조합을 찾기 위해 EMA 매개 변수를 최적화
  • 다른 지표를 시도 하이켄 아시, KDJ, MACD 등을 대체합니다.
  • 입시 확인으로 가격 파장을 추가합니다
  • 트렌드 반전을 결정하기 위해 변동성 지표를 포함
  • 매개 변수를 동적으로 최적화하기 위해 기계 학습 방법을 사용

결론

하이켄 아시 (Heiken Ashi) 를 기반으로 한 암호화폐 트렌드 다음 전략은 트렌드 판단, 엔트리 타이밍, 스톱 로스 제어 등과 같은 측면을 포괄적으로 고려하여 암호화폐와 같은 매우 변동성 있는 자산에 매우 적응력을 갖추고 있습니다. 하이켄 아시를 사용하여 소음을 필터링하고 강력한 리스크 제어 방법을 채택함으로써 전략은 중장기 가격 트렌드에 의해 제공되는 거래 기회를 효과적으로 포착 할 수 있습니다. 매개 변수, 지표 선택 및 리스크 제어 방법을 더 이상 최적화 할 수 있다면 전략의 성능에는 여전히 개선의 여지가 있습니다.


/*backtest
start: 2023-01-12 00:00:00
end: 2024-01-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//@SoftKill21
strategy(title="CRYPTO HA Strategy", shorttitle="CRYPTO HA Strategy", overlay=true , default_qty_type =strategy.percent_of_equity, default_qty_value =100, commission_type= strategy.commission.percent,commission_value =0.1 )


ma1_len = input(50)
ma2_len = input(100)

fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2020, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true


//First Moving Average data
o = ema(open, ma1_len)
c = ema(close, ma1_len)
h = ema(high, ma1_len)
l = ema(low, ma1_len)

// === HA calculator ===
ha_t = heikinashi(syminfo.tickerid)
ha_o = security(ha_t, timeframe.period, o)
ha_c = security(ha_t, timeframe.period, c)
ha_h = security(ha_t, timeframe.period, h)
ha_l = security(ha_t, timeframe.period, l)

//Second Moving Average data

o2 = ema(ha_o, ma2_len)
c2 = ema(ha_c, ma2_len)
h2 = ema(ha_h, ma2_len)
l2 = ema(ha_l, ma2_len)

// === Color def ===
ha_col = o2 > c2 ? color.white : color.lime

sell = o2 > c2 and o2[1] < c2[1] and time_cond
buy = o2 < c2 and o2[1] > c2[1] and time_cond
plotshape(buy, color=color.green, text= "Buy", location= location.belowbar,style= shape.labelup, textcolor=color.white, size = size.tiny, title="Buy Alert",editable=false, transp=60)
plotshape(sell, color=color.red, text= "Sell", location= location.abovebar,style= shape.labeldown, textcolor=color.white, size = size.tiny, title="Sell Alert", editable=false, transp=60)

trendColor = buy ? color.red : sell ? color.green : na
plot( buy ? close: sell  ? close : na , color=trendColor, style=plot.style_line, linewidth=4, editable=false)



onlylong=input(true)
original=input(false)

if(onlylong)
    strategy.entry("long",1,when=buy)
    strategy.close("long",when=sell)
if(original)
    strategy.entry("long",1,when=buy)
    strategy.entry("short",0,when=sell)

sl = input(0.075)
strategy.exit("closelong", "long" , loss = close * sl / syminfo.mintick, alert_message = "sl point")
strategy.exit("closeshort", "short" , loss = close * sl / syminfo.mintick, alert_message = "sl point")




더 많은