이치모쿠 킨코 히오 기반 BTC 거래 전략

저자:차오장, 날짜: 2023-12-20 13:34:08
태그:

img

전반적인 설명

이 전략은 이치모쿠 킨코 히오 전략이라고 불립니다. 다른 기술 지표와 결합된 이치모쿠 킨코 히오 시스템을 기반으로 한 BTC 거래 전략입니다.

전략 논리

이 전략은 주로 트렌드 트레이딩을 위한 여러 가지 기술적 지표를 포함하는 이치모쿠 킨코 히오 시스템을 기반으로 합니다. 주요 구성 요소는 다음과 같습니다.

키준 센: 시장 트렌드 방향을 나타냅니다. 지난 26 일 동안 가장 높고 가장 낮은 가격의 중간 지점이며, 지원 및 저항 라인으로 작용합니다. 가격 폐쇄가 키준 센을 넘을 때 구매 및 판매 신호가 생성됩니다.

텐칸 센: 가격의 움직임을 나타냅니다. 지난 9 일 동안 가장 높고 가장 낮은 가격의 중간 지점이며 가장 좋은 입점과 출구 지점을 결정하는 데 도움이됩니다.

센쿠 스판 A: 이치모쿠의 중간선을 나타냅니다. 키준 센과 텐칸 센의 평균이며, 이치모쿠의 경고 라인으로 작용합니다.

센쿠 스판 B: 장기 트렌드 라인을 나타냅니다. 지난 52 일 중점입니다. 장기 및 단기 트렌드를 결정하기 위해 이치모쿠 클라우드를 형성합니다.

또한, 전략은 또한 RSI 지표를 통합하여 과잉 구매 및 과잉 판매 구역에서 거래 신호를 생성합니다.

구매 신호는 가격 종료가 키 센 위를 넘어서 클라우드 위를 위치할 때 생성됩니다. 판매 신호는 가격 종료가 키 센 아래를 넘어서 클라우드 아래를 위치할 때 생성됩니다.

장점

  1. 이치모쿠 시스템은 상대적으로 높은 승률을 가진 트렌드를 정확하게 결정합니다.

  2. 여러 가지 지표를 통합하면 놓친 기회를 피할 수 있습니다.

  3. RSI는 반전 지점을 효과적으로 결정합니다.

  4. 클라우드는 직관적으로 장기적이고 단기적인 트렌드를 제시합니다.

위험 분석

  1. 이치모쿠 시스템은 약간의 차질이 있습니다. 다른 지표들을 포함해야 합니다.

  2. 트렌딩 시장에서는 매우 잘 작동하지만, 다양한 시장에서는 소박합니다.

  3. RSI 매개 변수는 시장에 따라 조정되어야 합니다.

  4. 클라우드 구조는 복잡한 구조로 능숙한 조작이 필요합니다.

이치모쿠의 매개 변수를 최적화하거나 더 많은 지표를 추가할 수 있습니다.

최적화 방향

  1. 이치모쿠의 매개 변수를 최적화해서 추세를 더 빨리 결정해

  2. 신호의 정확성을 높이기 위해 이동 평균과 같은 더 많은 지표를 추가합니다.

  3. 다른 시장에 따라 RSI 매개 변수를 조정합니다.

  4. 위험을 통제하기 위해 스톱 로스 메커니즘을 추가하는 것을 고려하십시오.

결론

이치모쿠는 RSI와 같은 지표와 결합하여 상승 추세를 파악하는 데 높은 정확성을 가지고 있습니다. 이치모쿠의 지연과 시장 범위에서의 적응성이 주요 위험 요소입니다. 적절한 매개 변수 조정 및 더 많은 지표를 추가하면 이러한 위험을 크게 완화하여 전략을 더욱 견고하고 신뢰할 수 있습니다.


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

//@version=3
strategy("My Ichimoku Strat v2", overlay=true,default_qty_type=strategy.fixed, default_qty_value=1, initial_capital=1000, currency=currency.EUR,commission_type=strategy.commission.percent,commission_value=0.05)
// === BACKTEST RANGE ===
FromMonth = input(defval = 3, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2018, title = "From Year", minval = 2014)
ToMonth   = input(defval = 1, title = "To Month", minval = 1)
ToDay     = input(defval = 1, title = "To Day", minval = 1)
ToYear    = input(defval = 9999, title = "To Year", minval = 2014)

// === SERIES SETUP ===



//**** Inputs *******
KijunSenLag = input(6,title="KijunSen Lag",minval=1)

//Kijun-sen
//Support resistance line, buy signal when price crosses it
KijunSen = sma((high+low)/2,26)
buy2 = crossover(close,KijunSen) and (rising(KijunSen,KijunSenLag) or falling(KijunSen,KijunSenLag))
sell2= crossunder(close,KijunSen) and (rising(KijunSen,KijunSenLag) or falling(KijunSen,KijunSenLag))


//Tenkan-Sen
TenkanSen = sma((high+low)/2,9)

//Senkou Span A 
SenkouSpanA = (KijunSen + TenkanSen)/2

//Senkou Span B 
SenkouSpanB = sma((high+low)/2,52)

//Cloud conditions : ignore buy if price is under the cloud
// Huge cloud means safe support and resistance. Little cloud means danger.
buy3 = close > SenkouSpanA and close > SenkouSpanB
sell3 = close < SenkouSpanA and close < SenkouSpanB


//Chikou Span
//Buy signal : crossover(ChikouSpan,close)
//Sell Signal : crossunder(ChikouSpan,close)
ChikouSpan = close
buy1=crossover(ChikouSpan,close[26])
sell1=crossunder(ChikouSpan,close[26])

plotshape(buy1,style=shape.diamond,color=lime,size=size.small)
plotshape(sell1,style=shape.diamond,color=orange,size=size.small)

//Alerts

buyCompteur = -1
buyCompteur := nz(buyCompteur[1],-1)
buyCompteur := buy2 or buy3 ? 1 : buyCompteur
buyCompteur := buyCompteur > 0 ? buyCompteur + 1 : buyCompteur
buyCompteur := sell2 or sell3 ? -1 : buyCompteur

sellCompteur = -1
sellCompteur := nz(sellCompteur[1],-1)
sellCompteur := sell2 or sell3 ? 1 : sellCompteur
sellCompteur := sellCompteur > 0 ? sellCompteur + 1 : sellCompteur
sellCompteur := buy2 or buy3 ? -1 : sellCompteur



//RSI
src = close, len = input(14, minval=1, title="RSI Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
buyRSI = crossover(rsi,40) and close > TenkanSen and rsi[5]<30 and (rsi-rsi[1])>5
sellRSI = crossunder(rsi,60) and close < TenkanSen and rsi[5]>70 and (rsi[1]-rsi)>5
plotshape(buyRSI,style=shape.triangleup,color=lime,transp=0,location=location.belowbar,size=size.small)

sell= sell2 and sell3 or (sell1 and buyCompteur <= 8) or sellRSI
buy=buy2 and buy3 or (buy1 and sellCompteur <=8) or buyRSI
plotchar(buy,char='B',size=size.small,color=lime) 
plotchar(sell,char='S',size=size.small,color=orange)


//plots
plot(KijunSen,title="Kijun-Sen",color=blue,linewidth=4)
plot(TenkanSen,title="Tenkan-Sen",color=red,linewidth=2)
cloudA = plot(SenkouSpanA,title="cloud A", color=lime,offset=26,linewidth=2)
cloudB = plot(SenkouSpanB,title="cloud B", color=orange,offset=26,linewidth=2)
plot(ChikouSpan,title="lag span",color=fuchsia, linewidth=2,offset=-26)
//plot()
fill(cloudA,cloudB,color=SenkouSpanA>SenkouSpanB?lime:orange)
//plot(close,color=silver,linewidth=4)

// === ALERTS ===
strategy.entry("L", strategy.long, when=(buy and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))
strategy.close("L", when=(sell and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))

더 많은