Стратегия следования за трендом на основе Ichimoku Kinko Hyo


Дата создания: 2023-10-12 17:29:46 Последнее изменение: 2023-10-12 17:29:46
Копировать: 0 Количество просмотров: 665
1
Подписаться
1617
Подписчики

Обзор

Стратегия использует линию конверсии, базовую линию и линейные облака, чтобы определить направление тренда цены и отследить торговлю. Когда цена превышает вершину, она становится пустой, когда она превышает дно.

Стратегический принцип

Эта стратегия основана на следующих показателях Ichimoku:

  • Conversion Line (Tenkan-sen): конверсионная линия, представляющая собой краткосрочную тенденцию, среднее значение максимальных и минимальных цен за 9 циклов
  • Base Line (Kijun-sen): эталонная линия, представляющая среднесрочную тенденцию, среднее значение максимума и минимума за 26 циклов
  • Leading Span A (Senkou Span A): линейная линия A, средняя между переходной и базовой линиями
  • Leading Span B (Senkou Span B): линейная линия B, средняя величина наивысшей и наименьшей цены за 52 цикла

Когда цена поднимается вверх и проникает в предыдущие облака, делайте больше; когда цена падает вниз и проникает в предыдущие облака, делайте выигрыш. ConfigEntry и ExitReason открывают позиции, когда они проходят через верхние и нижние облака, соответственно, и закрывают позиции, когда они достигают доходной и убыточной пропорций.

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

  • Используйте индикатор Ичимоку, чтобы определить направление тренда и избежать заблуждения от рыночных потрясений
  • Выявление переменных в тренде с использованием метода прорыва в облако / облако, повышение эффективности торговли
  • Установка стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп

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

  • Индекс Ичимоку отстает и может пропустить лучший момент для изменения тренда
  • Недостаточная циклическая настройка параметров, таких как линия преобразования, эталонная линия, может привести к ложному сигналу
  • Стойки слишком маленькие, возможно, преждевременные; слишком большие, риск увеличения убытков

Направление оптимизации

  • Повышение точности в сочетании с другими тенденциями
  • Динамическая оптимизация параметров цикла, адаптация к различным циклам и рыночным условиям
  • Настройка отслеживания стоп-порогов, позволяющая скорректировать стоп-пороги в зависимости от колебаний цены, чтобы избежать преждевременных стоп-порогов
  • Рассмотреть возможность разработки автоматической стратегии стоп-стоп, с использованием интеллекта для корректировки стоп-стоп в соответствии с волатильностью рынка

Подвести итог

Эта стратегия использует облако Ichimoku для определения направления тенденций и простого и эффективного отслеживания тенденций. Несмотря на определенный риск задержки и ложных сигналов, она может быть улучшена путем оптимизации параметров, улучшения технологий сдерживания убытков и в сочетании с другими показателями. Эта стратегия проста в понимании и реализации, подходит для изучения новичками, а также может использоваться в качестве ссылки на другие стратегии.

Исходный код стратегии
/*backtest
start: 2023-10-04 00:00:00
end: 2023-10-08 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Estratégia com Ichimoku" , pyramiding=0, calc_on_every_tick = true, initial_capital = 20000, commission_type = strategy.commission.cash_per_order, commission_value = 10.00)

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////Ichimoku Clouds////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////(VERSÃO 40.0)//////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

periodoLinhaDeConversao = input(defval=9, title="Tenkan-sen (Linha de Conversão)",  minval=1)
periodoLinhaBase = input(defval=26, title="Kijun-sen (Linha Base)",  minval=1)
periodoNivelAdiantadoB = input(defval=52, title="Senkou Span B (Nível adiantado B)",  minval=1)
deslocamento = input(defval=26, title="Deslocamento",  minval=1)

linhaDeConversao = (highest(high,periodoLinhaDeConversao)+lowest(low,periodoLinhaDeConversao))/2
linhaBase = (highest(high,periodoLinhaBase)+lowest(low,periodoLinhaBase))/2
nivelAdiantadoA = (linhaDeConversao + linhaBase)/2
nivelAdiantadoB = (highest(high,periodoNivelAdiantadoB)+lowest(low,periodoNivelAdiantadoB))/2

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
strategy.initial_capital = 50000
//Hardcoded quantity - strategy.entry(qty=)
capitalInicial = strategy.initial_capital
lotes = (strategy.initial_capital - (strategy.initial_capital % (open*100)))/open

//Percentage input goal - strategy.exit(profit=)
percentGoal = input (defval = 5.0, title = "Goal (%)", type = float, minval=0.0, step=0.1)
longGoal = (strategy.position_avg_price * (percentGoal/100)) * 100
shortGoal = (strategy.position_avg_price - (strategy.position_avg_price / (1+(percentGoal/100)))) * 100

//Percentage input stop - strategy.exit(loss=)
percentStop = input (defval = 0.5, title = "Stop (%)", type = float, minval=0.0, step=0.1)
longStop = (strategy.position_avg_price * (percentStop/100)) * 100
shortStop = (strategy.position_avg_price * (percentStop/100)) * 100

strategy.entry('entryLong', strategy.long, lotes, when = strategy.position_size == 0 and crossover(close,max(nivelAdiantadoA[deslocamento], nivelAdiantadoB[deslocamento])))
strategy.entry('entryShort', strategy.short, lotes, when = strategy.position_size == 0 and crossunder(close,min(nivelAdiantadoA[deslocamento], nivelAdiantadoB[deslocamento])))
strategy.exit('exitLong', 'entryLong', profit = longGoal, loss = longStop)
strategy.exit('exitShort', 'entryShort', profit = shortGoal, loss = shortStop)

plot(strategy.equity, title="Variação de capital", color=white)
//plot(strategy.position_size, color=red)