Стратегия торговли на основе облака Ичимоку

Автор:Чао Чжан, Дата: 2024-01-12 14:20:43
Тэги:

img

Обзор

Эта стратегия разрабатывает количественную торговую систему на основе индикатора Ichimoku Cloud, в основном для активов с хорошими тенденциями.

Принцип стратегии

Облако Ичимоку состоит из линий конверсии, базовой линии, лидирующего спена 1, лидирующего спена 2 и облачных графиков. Торговые сигналы этой стратегии происходят из отношения между ценой и облачными графиками. В частности, сигнал покупки генерируется, когда цена пересекает лидирующий спен 1; сигнал продажи генерируется, когда цена пересекает лидирующий спен 1. Кроме того, лидирующий спен 2 также служит вспомогательным индикатором суждения.

Эта стратегия также устанавливает стоп-лосс и прибыль на основе индикатора ATR. Индикатор ATR может эффективно отслеживать степень колебаний рынка. Стоп-лосс установлен в 2 раза выше ATR, а прибыль установлена в 4 раза выше ATR. Это может эффективно контролировать одиночные потери и блокировать некоторые прибыли.

Наконец, стратегия использует механизм отслеживания стоп-лосса. В частности, для длинных позиций она будет использовать 2 раза ATR в качестве амплитуды обратного вызова для корректировки линии стоп-лосса в режиме реального времени для блокировки прибыли; для коротких позиций она будет использовать 2 раза ATR в качестве амплитуды обратного вызова для корректировки линии стоп-лосса в режиме реального времени для блокирования прибыли.

Анализ преимуществ

  1. Основанный на индикаторе карты облаков Ичимоку, он может эффективно фиксировать тенденции
  2. С ATR-основанной стоп-лосс и взять прибыль, он может контролировать риски
  3. Используйте механизм остановки потерь для получения прибыли.
  4. Логика стратегии проста и ясна, легко понять и проверить
  5. параметризация доступна, параметры могут быть настроены в соответствии с различными рынками

Анализ рисков

  1. Ичимоку облачные карты очень чувствительны к настройкам параметров, неправильные настройки могут упустить торговые возможности или генерировать неправильные сигналы
  2. Если амплитуда остаточного стопа потерь установлена слишком высокой, то стоп-потеря может произойти преждевременно
  3. Сильные акции могут прорваться через линию стоп-лосса или линию стоп-лосса, указанную индикатором ATR.
  4. Транзакционные издержки также окажут некоторое влияние на рентабельность

Решение соответствующих рисков:

  1. Оптимизировать параметры облачных карт Ichimoku для поиска наиболее подходящих настроек
  2. Оценить разумную амплитуду остановки потерь, ни слишком большую, ни слишком маленькую
  3. Для сильных акций соответствующим образом ослабить диапазон стоп-лосса
  4. Выбирайте брокеров с низкой комиссией

Руководство по оптимизации

  1. Комбинировать другие технические показатели для фильтрации сигналов с целью уменьшения ошибочных сделок
  2. Оптимизировать параметры на основе исторических данных/реактивного тестирования
  3. Параметры для различных сортов можно оптимизировать отдельно
  4. Подумайте о динамическом регулировании амплитуды стоп-потери
  5. Объедините алгоритмы для разработки функций для создания более надежных торговых сигналов

Резюме

В целом, эта стратегия является стабильной стратегией отслеживания тренда. Судите о направлении тренда на основе индикатора облака Ичимоку; установите стоп-лосс и получите прибыль с помощью индикатора 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)


Больше