이 전략은 다른 기간의 8 개의 기하급수적인 이동 평균 (EMA) 과 Ichimoku 클라우드를 주요 거래 신호로 사용하며 시간, 4 시간 또는 일간 시간 프레임에서 효과적으로 실행 할 수 있습니다.
이 전략의 핵심 원칙은 다음 두 부분에 기초합니다.
8 기하급수적인 이동 평균 (Octa-EMA)
이 전략은 5일, 11일, 15일, 18일, 21일, 24일, 28일, 34일 등 다양한 기간을 가진 8개의 EMA를 사용한다. 이 8개의 EMA는
이치모쿠 구름
이치모쿠 클라우드는 변환선, 기본선, 후퇴 스판 및 선도 스판 A/B를 포함합니다. 클라우드는 주로 트렌드 방향을 판단하고 지원/저항을 제공합니다. 가격이 클라우드 위에있을 때 상승 추세를 나타냅니다. 클라우드 아래에있을 때 하락 추세를 나타냅니다.
이 전략의 거래 신호는 위의 두 가지 구성 요소의 조합에서 발생합니다. 모든 8 EMA가 상승 추세 배열에있을 때 구매 신호가 생성되며 가격이 이치모쿠 클라우드 위에 있습니다. EMA 배열이 하락 추세로 전환 할 때 판매 신호가 생성됩니다.
이 전략의 주요 장점은 다음과 같습니다.
이 전략에는 또한 몇 가지 위험이 있습니다.
이러한 위험을 해결하기 위해 매개 변수를 조정하거나 위험을 줄이기 위해 입시 조건을 최적화 할 수 있습니다. 확인을 위해 다른 지표도 포함 할 수 있습니다.
이 전략은 몇 가지 측면에서 최적화 될 수 있습니다.
전체적으로, 오카타-EMA와 이치모쿠 클라우드 전략은 비교적 안정적이고 신뢰할 수 있는 트렌드 추적 시스템이다. 트렌드를 결정하기 위해 EMA 크로스오버를 사용하고 최적화되면 낮은 거짓 신호를 제공하여 신호를 필터하기 위해 이치모쿠를 사용합니다. 이 전략은 여러 시간 프레임에서 지수, 외환, 금속 등에 광범위하게 적용 될 수 있습니다. 스톱 로스/프로프트 취득 및 인디케이터를 확인함으로써 승률과 수익성이 더욱 향상 될 수 있습니다.
/*backtest start: 2022-12-04 00:00:00 end: 2023-12-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //Fukuiz strategy(title='Fukuiz Octa-EMA + Ichimoku', shorttitle='Fuku octa strategy', overlay=true, process_orders_on_close=true, default_qty_type= strategy.cash , default_qty_value=1000, currency=currency.USD, initial_capital=10000 ,commission_type = strategy.commission.percent,commission_value=0.25) //OCTA EMA ################################################## // Functions f_emaRibbon(_src, _e1, _e2, _e3, _e4, _e5, _e6, _e7, _e8) => _ema1 = ta.ema(_src, _e1) _ema2 = ta.ema(_src, _e2) _ema3 = ta.ema(_src, _e3) _ema4 = ta.ema(_src, _e4) _ema5 = ta.ema(_src, _e5) _ema6 = ta.ema(_src, _e6) _ema7 = ta.ema(_src, _e7) _ema8 = ta.ema(_src, _e8) [_ema1, _ema2, _ema3, _ema4, _ema5, _ema6, _ema7, _ema8] showRibbon = input(true, 'Show Ribbon (EMA)') ema1Len = input(5, title='EMA 1 Length') ema2Len = input(11, title='EMA 2 Length') ema3Len = input(15, title='EMA 3 Length') ema4Len = input(18, title='EMA 4 Length') ema5Len = input(21, title='EMA 5 Length') ema6Len = input(24, title='EMA 6 Length') ema7Len = input(28, title='EMA 7 Length') ema8Len = input(34, title='EMA 8 Length') [ema1, ema2, ema3, ema4, ema5, ema6, ema7, ema8] = f_emaRibbon(close, ema1Len, ema2Len, ema3Len, ema4Len, ema5Len, ema6Len, ema7Len, ema8Len) //Plot ribbonDir = ema8 < ema2 p1 = plot(ema1, color=showRibbon ? ribbonDir ? #1573d4 : color.new(#5d606b, 15) : na, linewidth=2, title='EMA 1') p2 = plot(ema2, color=showRibbon ? ribbonDir ? #3096ff : color.new(#5d606b, 15) : na, linewidth=2, title='EMA 2') plot(ema3, color=showRibbon ? ribbonDir ? #57abff : color.new(#5d606b, 15) : na, linewidth=2, title='EMA 3') plot(ema4, color=showRibbon ? ribbonDir ? #85c2ff : color.new(#5d606b, 15) : na, linewidth=2, title='EMA 4') plot(ema5, color=showRibbon ? ribbonDir ? #9bcdff : color.new(#5d606b, 30) : na, linewidth=2, title='EMA 5') plot(ema6, color=showRibbon ? ribbonDir ? #b3d9ff : color.new(#5d606b, 30) : na, linewidth=2, title='EMA 6') plot(ema7, color=showRibbon ? ribbonDir ? #c9e5ff : color.new(#5d606b, 30) : na, linewidth=2, title='EMA 7') p8 = plot(ema8, color=showRibbon ? ribbonDir ? #dfecfb : color.new(#5d606b, 30) : na, linewidth=2, title='EMA 8') fill(p1, p2, color.new(#1573d4, 85)) fill(p2, p8, color.new(#1573d4, 85)) //ichimoku################################################## //color colorblue = #3300CC colorred = #993300 colorwhite = #FFFFFF colorgreen = #CCCC33 colorpink = #CC6699 colorpurple = #6633FF //switch switch1 = input(false, title='Chikou') switch2 = input(false, title='Tenkan') switch3 = input(false, title='Kijun') middleDonchian(Length) => lower = ta.lowest(Length) upper = ta.highest(Length) math.avg(upper, lower) //Functions conversionPeriods = input.int(9, minval=1) basePeriods = input.int(26, minval=1) laggingSpan2Periods = input.int(52, minval=1) displacement = input.int(26, minval=1) Tenkan = middleDonchian(conversionPeriods) Kijun = middleDonchian(basePeriods) xChikou = close SenkouA = middleDonchian(laggingSpan2Periods) SenkouB = (Tenkan[basePeriods] + Kijun[basePeriods]) / 2 //Plot A = plot(SenkouA[displacement], color=color.new(colorpurple, 0), title='SenkouA') B = plot(SenkouB, color=color.new(colorgreen, 0), title='SenkouB') plot(switch1 ? xChikou : na, color=color.new(colorpink, 0), title='Chikou', offset=-displacement) plot(switch2 ? Tenkan : na, color=color.new(colorred, 0), title='Tenkan') plot(switch3 ? Kijun : na, color=color.new(colorblue, 0), title='Kijun') fill(A, B, color=color.new(colorgreen, 90), title='Ichimoku Cloud') //Buy and Sell signals fukuiz = math.avg(ema2, ema8) white = ema2 > ema8 gray = ema2 < ema8 buycond = white and white[1] == 0 sellcond = gray and gray[1] == 0 bullish = ta.barssince(buycond) < ta.barssince(sellcond) bearish = ta.barssince(sellcond) < ta.barssince(buycond) buy = bearish[1] and buycond and fukuiz > SenkouA[displacement] and fukuiz > SenkouB sell = bullish[1] and sellcond and fukuiz > SenkouA[displacement] and fukuiz > SenkouB sell2=ema2 < ema8 buy2 = white and fukuiz > SenkouA[displacement] and fukuiz > SenkouB //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ //Back test startYear = input.int(defval=2017, title='Start Year', minval=2000, maxval=3000) startMonth = input.int(defval=1, title='Start Month', minval=1, maxval=12) startDay = input.int(defval=1, title='Start Day', minval=1, maxval=31) endYear = input.int(defval=2023, title='End Year', minval=2000 ,maxval=3000) endMonth = input.int(defval=12, title='End Month', minval=1, maxval=12) endDay = input.int(defval=31, title='End Day', minval=1, maxval=31) start = timestamp(startYear, startMonth, startDay, 00, 00) end = timestamp(endYear, endMonth, endDay, 23, 59) period() => time >= start and time <= end ? true : false if buy2 strategy.entry(id='long', direction=strategy.long, when=period(), comment='BUY') if sell2 strategy.close(id='long', when=period(), comment='SELL')