이치모쿠 쿠모 트위스트 전략은 이치모쿠 지표의 전환선, 기준선, 유도선 등을 이용하여 거래 신호를 구성하는 트렌드 추적 전략이다. 이치모쿠 클라우드 회전을 통해 단기 및 중기 트렌드 전환점을 찾아서 저위험의 돌파점과 오버사이드 기회를 획득한다. 이 전략은 일일 거래와 주둔 주간의 중장선 거래에 사용될 수 있다.
이 전략은 주로 이치모쿠 지표의 세 개의 중간선 - 전환선, 기준선, 및 유도선 1 - 과 K선의 최고 가격과 최저 가격 계산 클라우드 아래쪽 경계선을 사용합니다. 전환선은 지난 9개의 K선의 최고 가격과 최저 가격 중점을 계산하고, 첫 번째 평형 그래프의 단기 중간선을 나타냅니다. 전환선은 지난 26개의 K선의 최고 가격과 최저 가격 중점을 계산하고, 장기 평균선을 나타냅니다. 전환선과 유도선의 평균선, 유도선 2은 지난 52K선의 중간 가격을 계산합니다.
유도선 1이 유도선 2를 통과할 때 구매 신호가 발생하고 유도선 1이 유도선 2를 통과할 때 판매 신호가 발생한다. 이 거래 전략은 트렌드 변화를 포착하기 위해 단기 및 중장기 평균선의 금포 포크 도포를 추적하는 것이다.
이치모쿠 클라우드 베인드 리버스 전략은 단기 및 중기 트렌드를 동시에 결합하여 트렌드 리버스 포인트를 효과적으로 식별 할 수 있습니다.
일평선에 기반한 전략은 약간의 지연성을 가지고 있으며 일부 노이즈를 필터링할 수 있습니다.
클라우드 베인드를 사용하여 강한 경향의 명백한 정도를 판단하여 우수한 입출구를 달성합니다.
이치모쿠의 표준 파라미터를 사용하여 파라미터 최적화가 필요하지 않습니다.
이치모쿠 원리는 비교적 복잡하고, 매개 변수 조정에 민감하지 않으며, 과도하게 최적화되기 쉽지는 않다.
시장의 평준화 과정에서 여러 가지 잘못된 신호가 나타날 수 있습니다.
단기 및 중장기 트렌드가 이탈할 때 전략적 실패가 발생할 수 있습니다.
이 경우, 위험은 금손실과 함께 통제되어야 하며, 그렇지 않으면 더 큰 손실이 발생할 수 있습니다.
변환선과 기준선의 다른 매개 변수 조합을 테스트하여 최적의 균형을 찾을 수 있습니다.
다른 지표와 결합하여 진입 신호를 필터링하여 명백한 불리한 형태를 피합니다.
Stop Loss 전략을 추가하고, 동적 Stop Loss 또는 Tail Loss를 설정합니다.
포지션 관리를 최적화하고 시장 상황에 따라 포지션 크기를 조정합니다.
재검토에 트랜잭션 처리 요금을 추가하여 재검토 결과를 더 정확하게 만듭니다.
이치모쿠 클라우드 리버스 전략은 전체적으로 중위적인 트렌드 전략이다. 트렌드 리버스 포인트를 효과적으로 식별하여 트렌드와 일치하는 방향으로 포지션을 개척할 수 있다. 그러나 이 전략에는 일정 모니터링 비용도 있으며, 장기적으로 사용하려면 엄격한 위험 관리 조치가 있어야 한다. 파라미터 설정, 입문 필터, 손실 방식 등을 지속적으로 최적화함으로써 이 전략의 안정성과 수익성을 계속 향상시킬 수 있다.
/*backtest start: 2022-10-20 00:00:00 end: 2023-10-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="Ichimoku Kumo Twist Strategy (Presets)", shorttitle="Kumo Twist Strategy", overlay=true) xlowest_(src, len) => x = src for i = 1 to len - 1 v = src[i] if (na(v)) break x := min(x, v) x xlowest(src, len) => na(src[len]) ? xlowest_(src, len) : lowest(src, len) xhighest_(src, len) => x = src for i = 1 to len - 1 v = src[i] if (na(v)) break x := max(x, v) x xhighest(src, len) => na(src[len]) ? xhighest_(src, len) : highest(src, len) dropn(src, n) => na(src[n]) ? na : src ichiConversionPeriods(presets) => if presets == "Crypto Doubled" 20 else if presets == "Crypto Singled" 10 else if presets == "Standard Doubled" 18 else 9 ichiBasePeriods(presets) => if presets == "Crypto Doubled" 60 else if presets == "Crypto Singled" 30 else if presets == "Standard Doubled" 52 else 26 ichiLaggingSpan2Periods(presets) => if presets == "Crypto Doubled" 120 else if presets == "Crypto Singled" 60 else if presets == "Standard Doubled" 104 else 52 ichiDisplacement(presets) => if presets == "Crypto Doubled" 30 else if presets == "Crypto Singled" 30 else if presets == "Standard Doubled" 26 else 26 scaling = input(title="Scaling", options=["Linear", "Log"], defval="Linear") presets = input(title="Presets", options=["Crypto Doubled", "Crypto Singled", "Standard Doubled", "Standard Singled"], defval="Crypto Doubled") dropCandles = input(1, minval=0, title="Drop first N candles") showClouds = input(false, "Show Clouds") stoploss = input(true, title="Stop Loss") conversionPeriods = ichiConversionPeriods(presets) basePeriods = ichiBasePeriods(presets) laggingSpan2Periods = ichiLaggingSpan2Periods(presets) displacement = ichiDisplacement(presets) logScaling = scaling == "Log" lows = dropn(low, dropCandles) highs = dropn(high, dropCandles) lowsp = logScaling ? log(lows) : lows highsp = logScaling ? log(highs) : highs donchian(len) => avg(xlowest(lowsp, len), xhighest(highsp, len)) conversionLine = donchian(conversionPeriods) baseLine = donchian(basePeriods) leadLine1 = avg(conversionLine, baseLine) leadLine2 = donchian(laggingSpan2Periods) golong = crossover(leadLine1, leadLine2) goshort = crossunder(leadLine1, leadLine2) strategy.entry("Buy", strategy.long, when=golong, stop=(stoploss ? high+syminfo.mintick : na)) strategy.entry("Sell", strategy.short, when=goshort, stop=(stoploss ? low-syminfo.mintick : na)) conversionLinep = logScaling ? exp(conversionLine) : conversionLine baseLinep = logScaling ? exp(baseLine) : baseLine leadLine1p = logScaling ? exp(leadLine1) : leadLine1 leadLine2p = logScaling ? exp(leadLine2) : leadLine2 plot(showClouds ? conversionLinep : na, color=#0496ff, title="Conversion Line") plot(showClouds ? baseLinep : na, color=#991515, title="Base Line") p1 = plot(showClouds ? leadLine1p : na, offset = displacement, color=green, title="Lead 1") p2 = plot(showClouds ? leadLine2p : na, offset = displacement, color=red, title="Lead 2") fill(p1, p2, color = showClouds ? (leadLine1p > leadLine2p ? green : red) : na)