
Эта стратегия основана на графическом индикаторе Ичимоку, который разработан как система количественной торговли, в основном для активов с хорошей тенденцией. Эта стратегия объединяет функции, такие как остановка, остановка убытков и отслеживание остановки убытков, чтобы обеспечить стабильную прибыль.
Ичимоку облачный график состоит из переходных линий, базовых линий, предыдущих линий 1, 2 и облачный график. Торговые сигналы для этой стратегии исходят из отношений цены и облачного графика. В частности, когда цена пересекает предыдущую линию 1, создается сигнал покупки; когда цена пересекает предыдущую линию 1, создается сигнал продажи. Кроме того, предыдущая линия 2 также может служить вспомогательным показателем.
Эта стратегия также устанавливает стоп-лосс и стоп-офф на основе показателей ATR. Показатели ATR эффективно улавливают степень колебаний рынка. Стоп-лосс составляет 2 раза больше ATR, а стоп-офф - 4 раза больше ATR. Это позволяет эффективно контролировать одиночные потери и блокировать часть прибыли.
Наконец, в этой стратегии используется механизм отслеживания стоп-лосса. В частности, для выполнения множественных заказов, будет использоваться два раза ATR в качестве отклонения, чтобы в реальном времени скорректировать стоп-лосса, чтобы заблокировать прибыль; для выполнения авиационных заказов, будет использоваться два раза ATR в качестве отклонения, чтобы в реальном времени скорректировать стоп-лосса, чтобы заблокировать прибыль.
Решение риска:
Эта стратегия в целом является стабильной стратегией отслеживания трендов. На основе показателей Ichimoku Cloud Diagram определяется направление тренда; используются показатели ATR для установления стоп-лосса; используется отслеживание стоп-лосса для блокировки прибыли. Преимущества состоят в том, что логика проста и понятна; можно контролировать одиночные потери; можно эффективно отслеживать тренды.
/*backtest
start: 2023-01-05 00:00:00
end: 2024-01-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Ichimoku Cloud Strategy with SL, TP, and Trailing Stop", overlay=true)
conversionPeriods = input(9, "Conversion Line Length")
basePeriods = input(26, "Base Line Length")
laggingSpan2Periods = input(52, "Leading Span B Length")
displacement = input(26, "Lagging Span")
atrLength = input(14, title="ATR Length")
donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = math.avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)
// Plot the Ichimoku Cloud components
plot(conversionLine, color=color.blue, title="Conversion Line")
plot(baseLine, color=color.red, title="Base Line")
plot(leadLine1, color=color.green, title="Leading Span A")
plot(leadLine2, color=color.orange, title="Leading Span B")
plot(leadLine1 > leadLine2 ? leadLine1 : leadLine2, color=color.green, title="Kumo Cloud Upper Line")
plot(leadLine1 < leadLine2 ? leadLine1 : leadLine2, color=color.red, title="Kumo Cloud Lower Line")
// ATR for stop loss and take profit
atrValue = ta.atr(atrLength)
stopLoss = atrValue * 2
takeProfit = atrValue * 4
// Strategy entry and exit conditions
longCondition = ta.crossover(close, leadLine1) and close > leadLine2
shortCondition = ta.crossunder(close, leadLine1) and close < leadLine2
// Plot buy and sell signals
plotshape(series=longCondition ? leadLine1 : na, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=shortCondition ? leadLine1 : na, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
// Execute strategy orders with stop loss and take profit
strategy.entry("Buy", strategy.long, when=longCondition)
strategy.close("Buy", when=shortCondition) // Close buy position when sell condition is met
strategy.entry("Sell", strategy.short, when=shortCondition)
strategy.close("Sell", when=longCondition) // Close sell position when buy condition is met
// Trailing stop
strategy.cancel("Trailing Stop")
var float trailingStopPrice = na
if (longCondition)
trailingStopPrice := math.max(trailingStopPrice, close - atrValue * 2)
strategy.exit("Trailing Stop", from_entry="Buy", trail_offset=atrValue * 2, trail_price=trailingStopPrice)
else if (shortCondition)
trailingStopPrice := math.min(trailingStopPrice, close + atrValue * 2)
strategy.exit("Trailing Stop", from_entry="Sell", trail_offset=atrValue * 2, trail_price=trailingStopPrice)