
이치모쿠 쿠모 트위스트 (Ichimoku Kumo Twist) 전략은 이치모쿠 지표의 전환선, 기준선, 유도선을 이용하여 거래 신호를 구축하는 트렌드 추적 전략에 속한다. 이치모쿠 클라우드 밴드의 반전으로 단기 및 중기 트렌드의 반전점을 찾아서 낮은 위험의 돌파점 지점과 오버 바이 오버 판매 기회를 얻는다. 이 전략은 일간 거래와 수주간의 지점을 보유한 중장선 거래에 사용할 수 있다.
이 전략은 주로 이치모쿠 지표의 세 개의 평균선 - 전환선, 기준선, 유도선 1, 그리고 K 선의 최고 가격과 최저 가격을 계산하기 위해 클라우드 대역의 상하계를 사용합니다. 전환선은 지난 9개의 K 선의 최고 가격과 최저 가격의 중간 지점을 계산하여, 첫 번째 평형 도표의 단기 평균을 나타냅니다.
1호선이 2호선을 통과하면 구매 신호가 발생하고, 1호선이 2호선을 통과하면 판매 신호가 발생한다. 이 거래 전략은 단기 및 중기 평균 선의 황금 포크를 추적하여 트렌드의 변화를 포착하는 것이다.
이치모쿠 클라우드 벨트 반전 전략은 단기 및 중기 트렌드를 동시에 결합하여 트렌드 반전 지점을 효과적으로 식별할 수 있다.
일률적인 전략에 기반하여 약간의 지연성을 가지고 있으며, 일부 소음을 필터링 할 수 있습니다.
클라우드 띠를 사용하여 강하고 약한 트렌드의 명백한 정도를 판단하여 우수한 엔트리와 엑시트를 구현하십시오.
이치모쿠 표준 파라미터를 사용하여 파라미터를 최적화 할 필요가 없습니다.
이치모쿠 원리는 비교적 복잡하고, 파라미터 조정에 민감하지 않으며, 지나치게 최적화하기 쉽지 않다.
시장조정에서 여러번의 잘못된 신호가 나타날 수 있다.
단기 및 중기적 추세에서 벗어날 때 전략이 실패하는 경우가 있습니다.
위험을 통제하기 위해 스톱 로즈와 함께 사용해야 합니다. 그렇지 않으면 큰 손실이 발생할 수 있습니다.
전환선과 기준선의 다른 파라미터 조합을 테스트하여 최적의 균형점을 찾을 수 있다.
다른 지표와 함께 진입 신호를 필터링하여 명백하게 불리한 형태로 하반기를 설정하는 것을 피하십시오.
손해 중지 전략을 추가하고, 동적 손해 중지 또는 후속 손해 중지 설정을 합니다.
포지션 관리를 최적화하고, 시장 상황에 따라 포지션 규모를 조정한다.
재검토에 거래 수수료를 추가하여 재검토 결과를 더 정확하게 만듭니다.
이치모쿠 클라우드 벨트 반전 전략은 전체적으로 중간 트렌드 전략이다. 트렌드 전환점을 효과적으로 식별하여 트렌드 방향에 맞는 위치를 열 수 있다. 그러나 이 전략에는 일정 모니터링 비용도 존재하며, 엄격한 위험 관리 조치와 함께 장기적으로 사용되어야 한다. 매개 변수 설정, 출전 필터, 손해 중지 방법 등을 지속적으로 최적화함으로써 이 전략의 안정성과 수익성을 계속 향상시킬 수 있다.
/*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)