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


Дата создания: 2023-12-11 15:00:29 Последнее изменение: 2023-12-11 15:00:29
Копировать: 0 Количество просмотров: 666
1
Подписаться
1621
Подписчики

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

Обзор

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

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

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

  1. Сигнал покупать возникает, когда цена на закрытии пересекает базовую линию и эта линия движется необычно.
  2. Сигнал продажи возникает, когда цена закрытия пересекает базисную линию и эта линия движется необычно.
  3. При закрытии цены выше, чем волатильность, лучшая ликвидность, позволяет построить склад.
  4. При закрытии цены ниже нуля ликвидность слабая, поэтому строительство хранилищ запрещено.
  5. Проход через линию задержки приводит к появлению сигнала покупки.
  6. Задержка в нижней линии, проходящая через цену закрытия, создает сигнал продажи.

Окончательное время входа определяется после анализа вышеуказанных торговых сигналов.

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

Эта стратегия имеет следующие преимущества:

  1. Используйте первичный балансный стол, чтобы определить тенденцию, отфильтровать рыночный шум и зафиксировать среднюю и длинную тенденции.
  2. В сочетании с оценкой ликвидности, можно избежать риска создания позиций.
  3. Задержка в качестве подтверждающего сигнала, чтобы избежать ложного прорыва.
  4. Правила просты, понятны и легко применяются.

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

Также существуют следующие риски:

  1. Неправильная настройка параметров может привести к пропущенным торговым возможностям.
  2. В случае, если тенденция мутирует, она не может быть остановлена вовремя.
  3. Большинство владельцев позиций рискуют потерять деньги.

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

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

Также можно оптимизировать стратегию следующим образом:

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

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

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

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

//@version=3
strategy("My Ichimoku Strat", overlay=true,default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=1000, currency=currency.EUR)
// === BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2017, title = "From Year", minval = 2014)
ToMonth   = input(defval = 1, title = "To Month", minval = 1)
ToDay     = input(defval = 1, title = "To Day", minval = 1)
ToYear    = input(defval = 9999, title = "To Year", minval = 2014)

// === SERIES SETUP ===
//**** Inputs *******
KijunSenLag = input(6,title="KijunSen Lag",minval=1)

//Kijun-sen
//Support resistance line, buy signal when price crosses it
KijunSen = sma((high+low)/2,26)
buy2 = crossover(close,KijunSen) and (rising(KijunSen,KijunSenLag) or falling(KijunSen,KijunSenLag))
sell2= crossunder(close,KijunSen) and (rising(KijunSen,KijunSenLag) or falling(KijunSen,KijunSenLag))


//Tenkan-Sen
TenkanSen = sma((high+low)/2,9)

//Senkou Span A 
SenkouSpanA = (KijunSen + TenkanSen)/2

//Senkou Span B 
SenkouSpanB = sma((high+low)/2,52)

//Cloud conditions : ignore buy if price is under the cloud
// Huge cloud means safe support and resistance. Little cloud means danger.
buy3 = close > SenkouSpanA and close > SenkouSpanB
sell3 = close < SenkouSpanA and close < SenkouSpanB


//Chikou Span
//Buy signal : crossover(ChikouSpan,close)
//Sell Signal : crossunder(ChikouSpan,close)
ChikouSpan = close
buy1=crossover(ChikouSpan,close[26])
sell1=crossunder(ChikouSpan,close[26])

plotshape(buy1,style=shape.diamond,color=lime,size=size.small)
plotshape(sell1,style=shape.diamond,color=orange,size=size.small)

//Alerts

buyCompteur = -1
buyCompteur := nz(buyCompteur[1],-1)
buyCompteur := buy2 or buy3 ? 1 : buyCompteur
buyCompteur := buyCompteur > 0 ? buyCompteur + 1 : buyCompteur
buyCompteur := sell2 or sell3 ? -1 : buyCompteur

sellCompteur = -1
sellCompteur := nz(sellCompteur[1],-1)
sellCompteur := sell2 or sell3 ? 1 : sellCompteur
sellCompteur := sellCompteur > 0 ? sellCompteur + 1 : sellCompteur
sellCompteur := buy2 or buy3 ? -1 : sellCompteur

sell= sell2 and sell3 or (sell1 and buyCompteur <= 8)
buy=buy2 and buy3 or (buy1 and sellCompteur <=8)
plotchar(buy,char='B',size=size.small,color=lime)
plotchar(sell,char='S',size=size.small,color=orange)

//plots
plot(KijunSen,title="Kijun-Sen",color=blue,linewidth=4)
plot(TenkanSen,title="Tenkan-Sen",color=red,linewidth=2)
cloudA = plot(SenkouSpanA,title="cloud A", color=lime,offset=26,linewidth=2)
cloudB = plot(SenkouSpanB,title="cloud B", color=orange,offset=26,linewidth=2)
plot(ChikouSpan,title="lag span",color=fuchsia, linewidth=2,offset=-26)
//plot()
fill(cloudA,cloudB,color=SenkouSpanA>SenkouSpanB?lime:orange)
//plot(close,color=silver,linewidth=4)

// === ALERTS ===
strategy.entry("L", strategy.long, when=(buy and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))
strategy.close("L", when=(sell and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))