Тенденция облаков Ичимоку в соответствии со стратегией

Автор:Чао Чжан, Дата: 2024-02-01 11:34:23
Тэги:

img

I. Название стратегии: Ichimoku Cloud Trend Следующая стратегия

II. Обзор стратегии

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

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

Эта стратегия в основном использует Тенкан-сен, Киджун-сен, Чику-Спан и другие ключевые индикаторы из Облака Ичимоку.

Подводя итог, основная логика заключается в следующем: подтверждение средне-долгосрочного тренда -> ожидание сильных сигналов о возобновлении тренда -> вход, чтобы следовать трендам -> выход со стоп-лосом.

В частности, для определения среднесрочной долгосрочной тенденции используется соотношение между лидирующим и отстающим Span (выше лидирующего зеленого Span, сигнализирующего восходящий тренд и наоборот).

Это отфильтровывает краткосрочные и среднесрочные консолидации и позволяет отслеживать сильные тенденции для постоянного превосходства на рынках.

IV. Преимущества

(1) Использование облака Ичимоку для определения направления среднесрочного и долгосрочного тренда полезно для определения основных направлений.

(2) Кроссворды Tenkan-sen/Kijun-sen и изменения ценовых отношений с облаком позволяют эффективно отфильтровывать консолидации и зафиксировать сильные тенденции на ранней стадии.

(3) Механизм отслеживания стоп-лосса позволяет эффективно контролировать большие тренды и одновременно контролировать изолированные потери.

(4) Объединение различных сигналов Ичимоку создает надежную систему, которая плавно следует за тенденциями.

V. Риски

(1) Системный риск неправильной идентификации большей тенденции.

(2) Риск, связанный с неправильно выбранным сроком входа.

(3) Риск от слишком жестких стопов. Экстремальные движения цен могут вывести слишком жесткие стопы, что приводит к непланированным потерям.

(4) Высокая частота торговли приводит к чрезмерным затратам на транзакции.

VI. Области повышения эффективности

(1) Испытайте различные комбинации периодов ввода Ichimoku для поиска оптимальных параметров.

(2) Оптимизировать фильтры ввода для обеспечения высокого качества ввода.

(3) Настройка дистанции остановки с учетом баланса риска и прибыли.

(4) Добавление целевых уровней прибыли на основе расстояний между ключевыми показателями цены для создания адаптивных механизмов получения прибыли.

VII. Заключение

Эта стратегия Ichimoku Cloud, следующая за трендом, синтезирует несколько сигналов Ichimoku для диагностики тренда, ввода времени и остановки траектории.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Ichimoku trendfollowing", overlay=true, initial_capital=1000, commission_type=strategy.commission.cash_per_order, commission_value=0.04, slippage=2)

//***************************
//  INPUT BACKTEST RANGE    *
//***************************
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2010, title = "From Year", minval = 2000) 
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2000)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true

//***************
//*  ICHIMOKU   *
//***************
//inizializzazione parametri,,
tenkanPeriods = input(9, minval=1, title="Tenkan-Sen")
kinjunPeriods = input(26, minval=1, title="Kinjun-Sen")
senkouSpanBPeriods = input(52, minval=1, title="Senkou Span B")
displacement = input(26, minval=1, title="-ChinkouSpan/+SenkouSpan A")

//definizione Tenkan-Sen (9 Period), Kinjun-Sen (26 Period), Chinkou Span (Lagging Line)
averageHighLow(period) => avg(lowest(period), highest(period))
tenkan= averageHighLow(tenkanPeriods)
kinjun = averageHighLow(kinjunPeriods)
senkouSpanA = avg(tenkan, kinjun)
senkouSpanB = averageHighLow(senkouSpanBPeriods)

//definisco il colore della kumo in base al trend.
senkouSpan1Above = senkouSpanA >= senkouSpanB ? 1 : na
senkouSpan2Below = senkouSpanA <= senkouSpanB ? 1 : na

span1plotU = senkouSpan1Above ? senkouSpanA : na
span2plotU = senkouSpan1Above ? senkouSpanB : na
span1plotD = senkouSpan2Below ? senkouSpanA : na
span2plotD = senkouSpan2Below ? senkouSpanB : na

col = senkouSpanA >= senkouSpanB ? lime : red

//plots Ichimoku
plot(tenkan, title = 'Tenkan-Sen', linewidth=1, color=blue)
plot(kinjun, title = 'Kinjun-Sen', linewidth=1, color=red)
plot(close, title = 'Chinkou Span', linewidth=1, offset = -displacement, color=aqua)
plot( senkouSpanA, title = 'Senkou Span A', style=line, linewidth=1, offset = displacement, color=lime)
plot(senkouSpanB, title = 'Senkou Span B', style=line, linewidth=1, offset = displacement, color=red)

//Cloud Lines Plot 
p1 = plot(span1plotU ? span1plotU  : na, title = 'Senkou Span A Above Senkou Span B', style=linebr, linewidth=1, offset = displacement, color=col)
p2 = plot(span2plotU ? span2plotU  : na, title = 'Senkou Span B (52 Period) Below Span A Cloud', style=linebr, linewidth=1, offset = displacement, color=col)
p3 = plot(span1plotD ? span1plotD  : na, title = 'Senkou Span A (26 Period) Below Span B Cloud', style=linebr, linewidth=1, offset = displacement, color=col)
p4 = plot(span2plotD ? span2plotD  : na, title = 'Senkou Span B (52 Period) Above Span A Cloud', style=linebr, linewidth=1, offset = displacement, color=col)
//Fills that color cloud based on Trend.
fill(p1, p2, color=lime, transp=70, title='Kumo (Cloud)')
fill(p3, p4, color=red, transp=70, title='Kumo (Cloud)')

//***********************************************
//*     condizioni ingresso ed uscita mercato   *
//***********************************************
isKumoRialzista = senkouSpanA >= senkouSpanB ? true : false
isSopraKumo = (close > max(senkouSpanA[displacement], senkouSpanB[displacement]))
isSottoKumo = (close < min(senkouSpanA[displacement], senkouSpanB[displacement]))
isChinkouSpanSopra = high[displacement]<close
isChinkouSpanSotto = low[displacement]>close

filtroLong=isSopraKumo and isChinkouSpanSopra
filtroShort=isSottoKumo and isChinkouSpanSotto

//rimbalzato su kijun quando i prezzi stavano ritracciando e il trend era già in atto(tenkan >kijun x entrare long
isPullBackLijunEntryLong = kinjun<tenkan and low<kinjun and (close>kinjun) 
isPullBackLijunEntryShort =kinjun>tenkan and high>kinjun and  (close<kinjun) 

//Breackout Kumo
isBreackoutKumoEntryLong =  crossover(close, max(senkouSpanA[displacement], senkouSpanB[displacement])) and (close>tenkan) and (close>kinjun) 
isBreackoutKumoEntryShort =  crossunder(close, min(senkouSpanA[displacement], senkouSpanB[displacement])) and (close<tenkan) and (close<kinjun)

ConditionEntryLong = (isPullBackLijunEntryLong or isBreackoutKumoEntryLong ) and filtroLong
ConditionEntryShort = (isPullBackLijunEntryShort or isBreackoutKumoEntryLong ) and filtroShort

isExitLong = close<kinjun
isExitShort = close>kinjun

//ingressi ed uscite Mercato
strategy.entry ("Long",long=true, when = window() and ConditionEntryLong)
strategy.entry ("Short",long=false, when = window() and ConditionEntryShort)

strategy.close(id="Long", when=isExitLong)
strategy.close(id="Short", when=isExitShort)
strategy.close_all(when=not window())


Больше