이 전략은 이치모쿠 클라우드 양자 전략입니다. 이 전략은 트렌드가 상승할 때 신호를 필터하고 더 나은 입구 지점에서 긴 거리를 가리기 위해 K-라인 패턴, 이동 평균 및 스토카스틱 RSI 지표와 결합하여 이치모쿠 지표를 통해 트렌드 방향을 판단합니다.
전략의 주요 판단 기준은 다음과 같습니다.
위의 모든 조건이 동시에 충족되면 전략은 긴 포지션을 열고 가격이 리드 라인 1 이하로 떨어지면 전략은 포지션을 닫습니다.
이 전략은 주로 이치모쿠 클라우드를 사용하여 주요 트렌드 방향을 결정하고 보조 지표와 결합하여 신호를 필터하고 트렌드가 상승할 때 더 나은 지점에서 긴 지점을 사용합니다.
대책:
이치모쿠 클라우드 퀀트 전략은 트렌드 방향을 판단함으로써 높은 승률을 달성하면서도 위험을 제어 할 수있는 단장 전략입니다. 전략의 장점은 분명하며 황소 시장에서 뛰어난 성능을 보여줍니다. 다음 단계는 지표 최적화, 스톱 로스 메커니즘, 포지션 관리와 같은 측면을 개선하여 전략을 보다 포괄적이고 안정적으로 만드는 것입니다.
/*backtest start: 2022-11-17 00:00:00 end: 2023-11-23 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Ichimoku only Long Strategy", shorttitle="Ichimoku only Long", overlay = true, pyramiding = 0, calc_on_order_fills = false, commission_type = strategy.commission.percent, commission_value = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital=10000, currency=currency.USD) // Time Range FromMonth=input(defval=1,title="FromMonth",minval=1,maxval=12) FromDay=input(defval=1,title="FromDay",minval=1,maxval=31) FromYear=input(defval=2017,title="FromYear",minval=2017) ToMonth=input(defval=1,title="ToMonth",minval=1,maxval=12) ToDay=input(defval=1,title="ToDay",minval=1,maxval=31) ToYear=input(defval=9999,title="ToYear",minval=2017) start=timestamp(FromYear,FromMonth,FromDay,00,00) finish=timestamp(ToYear,ToMonth,ToDay,23,59) window()=>true // See if this bar's time happened on/after start date afterStartDate = time >= start and time<=finish?true:false //Enable RSI enableema = input(true, title="Enable EMA?") enablestochrsi = input(false, title="Enable Stochastik RSI?") //EMA emasrc = close, len1 = input(24, minval=1, title="EMA 1") len2 = input(90, minval=1, title="EMA 2") ema1 = ema(emasrc, len1) ema2 = ema(emasrc, len2) col1 = color.lime col2 = color.red //EMA Plots plot(ema1, title="EMA 1", linewidth=1, color=col1) plot(ema2, title="EMA 2", linewidth=1, color=col2) //STOCH RSI smoothK = input(3, minval=1, title="RSI K Line") smoothD = input(3, minval=1, title="RSI D Line") lengthRSI = input(14, minval=1, title="RSI Length") lengthStoch = input(14, minval=1, title="Stochastik Length") src = input(close, title="RSI Source") rsi1 = rsi(src, lengthRSI) k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) d = sma(k, smoothD) //Ichimoku conversionPeriods = input(9, minval=1, title="Ichi Conversion Line Length") basePeriods = input(26, minval=1, title="Ichi Base Line Length") laggingSpan2Periods = input(52, minval=1, title="Ichi Lagging Span 2 Length") displacement = input(1, minval=0, title="Ichi Displacement") donchian(len) => avg(lowest(len), highest(len)) conversionLine = donchian(conversionPeriods) baseLine = donchian(basePeriods) leadLine1 = avg(conversionLine, baseLine) leadLine2 = donchian(laggingSpan2Periods) p1 = plot(leadLine1, offset = displacement - 1, color=color.green, title="Lead 1") p2 = plot(leadLine2, offset = displacement - 1, color=color.red, title="Lead 2") fill(p1, p2, color = leadLine1 > leadLine2 ? color.green : color.red) //Long Condition crossup = k[0] > d[0] and k[1] <= d[1] ichigreenabovered = leadLine1 > leadLine2 ichimokulong = close > leadLine1 greencandle = close > open redcandle = close < open emacond = ema1 > ema2 longcondition = ichigreenabovered and ichimokulong and greencandle //Exit Condition ichimokuexit = close < leadLine1 exitcondition = ichimokuexit and redcandle //Entrys if (enablestochrsi == false) and (enableema == false) and (longcondition) and (afterStartDate) and (strategy.opentrades < 1) strategy.entry("Long", strategy.long) if (enablestochrsi == true) and (enableema == false) and (longcondition) and (crossup) and (afterStartDate) and (strategy.opentrades < 1) strategy.entry("Long", strategy.long) if (enableema == true) and (enablestochrsi == false) and (longcondition) and (emacond) and (afterStartDate) and (strategy.opentrades < 1) strategy.entry("Long", strategy.long) if (enableema == true) and (enablestochrsi == true) and (longcondition) and (emacond) and (crossup) and (afterStartDate) and (strategy.opentrades < 1) strategy.entry("Long", strategy.long) //Exits if (afterStartDate) strategy.close(id = "Long", when = exitcondition)