Стратегия Ichimoku Kumo Twist использует линию конверсии, базовую линию и лидирующие линии протяженности индикатора Ichimoku для построения торговых сигналов в качестве следующей стратегии тренда. Она определяет краткосрочные и среднесрочные точки обратного движения тренда, наблюдая за поворотами в облаках Ichimoku, чтобы найти точки более низкого риска и возможности перекупки / перепродажи. Стратегия может использоваться для внутридневной торговли, а также многонедельной промежуточной торговли.
Стратегия в основном использует три линии Ичимоку
Сигналы покупки генерируются, когда лидирующий спан 1 пересекает лидирующий спан 2, в то время как сигналы продажи генерируются, когда лидирующий спан 1 пересекает лидирующий спан 2.
Стратегия Ichimoku cloud twist сочетает в себе как краткосрочные, так и среднесрочные тенденции, которые могут эффективно идентифицировать точки переворота тренда.
Стратегии, основанные на средней реверсии, имеют некоторую задержку, чтобы отфильтровать шум.
Использование облаков для измерения силы тренда позволяет улучшить входы и выходы.
Не нужно оптимизировать параметры - стандартные параметры Ichimoku работают хорошо.
Ichimoku имеет довольно сложные внутренние компоненты и не очень чувствителен к изменениям параметров, что затрудняет чрезмерную оптимизацию.
На рынках с ограниченным диапазоном может быть несколько ложных сигналов.
Разница между краткосрочными и среднесрочными тенденциями может привести к сбоям в стратегии.
Стоп-потери необходимы для контроля риска, в противном случае возможны большие выводы.
Испытывать различные комбинации конверсионных и базовых периодов, чтобы найти оптимальное равновесие.
Добавьте фильтры с другими индикаторами, чтобы избежать приема сигналов в неблагоприятных формациях.
Включайте стратегии стоп-лосса, такие как динамические или отстающие стопы.
Оптимизировать размещение позиций на основе рыночных условий.
Добавьте комиссионные в обратные тесты для более реалистичных результатов.
В целом, стратегия Ichimoku Cloud Twist является умеренной стратегией, следующей за трендом. Она может эффективно идентифицировать повороты в тренде и занимать позиции в соответствии с направлением тренда. Но для долгосрочного использования требуется мониторинг и строгий контроль рисков. Постоянные улучшения в настройке параметров, фильтрах входа, механике остановки потерь и многом другом могут еще больше повысить стабильность и прибыльность этой стратегии.
/*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)