Торговая стратегия Ишимоку Кумо


Дата создания: 2024-05-29 17:23:36 Последнее изменение: 2024-05-29 17:23:36
Копировать: 3 Количество просмотров: 581
1
Подписаться
1617
Подписчики

Торговая стратегия Ишимоку Кумо

Обзор

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

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

  1. Используйте линии Киджун-сен, Тенкан-сен и Сенку-Спан в индикаторе Ичимоку, чтобы судить о тенденциях рынка.
  2. Когда цена закрытия находится ниже линии Senkou Span и линия Kijun-sen находится над облаком Kumo, образуется многозначный сигнал.
  3. Сигналы об уменьшении цены появляются, когда цена закрывается выше линии Сенкоу-Спан и линия Киджун-сен находится ниже облака Кумо.
  4. Стропинг рассчитывается с помощью ATR, где максимальная/минимальная точка ближайших 5 K-линий уменьшается/увеличивается в 3 раза ATR.
  5. Когда цена пробивает предельную позицию, она выходит из позиции.

Стратегические преимущества

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

Стратегический риск

  1. Эта стратегия может привести к появлению большего количества ложных сигналов в нестабильных рынках, что приведет к частым сделкам и потерем средств.
  2. Выполнение стратегии зависит от выбора параметров индикатора Ичимоку, а разные параметры могут привести к разным результатам торгов.
  3. В экстремальных ситуациях цена может быстро прорваться через свои стоп-позиции, что приводит к большим скольжениям и убыткам.

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

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

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

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

Исходный код стратегии
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © muratatilay

//@version=5
strategy(
     "Kumo Trade Concept", 
     overlay=true,
     initial_capital=10000,
     currency=currency.USDT,
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=30,
     commission_type=strategy.commission.percent,
     commission_value=0.1,
     margin_long=10, 
     margin_short=10)


// ICHIMOKU Lines 
//  INPUTS
tenkanSenPeriods = input.int(9, minval=1, title="Tenkan-sen")
kijunSenPeriods = input.int(26, minval=1, title="Kijun-sen")
senkouBPeriod = input.int(52, minval=1, title="Senkou span B")
displacement = input.int(26, minval=1, title="Chikou span")

donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
tenkanSen = donchian(tenkanSenPeriods)
kijunSen = donchian(kijunSenPeriods)
senkouA = math.avg(tenkanSen, kijunSen)
senkouB = donchian(senkouBPeriod)

// Other Indicators
float   atrValue    = ta.atr(5)

// Calculate Senkou Span A 25 bars back
senkouA_current = math.avg(tenkanSen[25], kijunSen[25])
// Calculate Senkou Span B 25 bars back
senkouB_current = math.avg(ta.highest(senkouBPeriod)[25], ta.lowest(senkouBPeriod)[25])

// Kumo top bottom 
senkou_max = (senkouA_current >= senkouB_current) ? senkouA_current : senkouB_current
senkou_min = (senkouB_current >= senkouA_current) ? senkouA_current : senkouB_current

// Trade Setups
long_setup = (kijunSen > senkou_max) and (close < senkou_min) 
short_setup = (kijunSen < senkou_min ) and ( close > senkou_max ) 

// Check long_setup for the last 10 bars
long_setup_last_10 = false
for i = 0 to 50
    if long_setup[i]
        long_setup_last_10 := true
short_setup_last_10 = false
for i = 0 to 50
    if short_setup[i]
        short_setup_last_10 := true


closeSenkouCross = (close > senkou_max) and barstate.isconfirmed 
closeKijunCross = (close > kijunSen ) 

senkouCloseCross = close < senkou_min
kijunCloseCross = close < kijunSen


// Handle Trades
// Enter Trade
var float trailStopLong = na
var float trailStopShort = na
if ( closeSenkouCross and long_setup_last_10 and closeKijunCross ) 
    strategy.entry(id="Buy", direction = strategy.long)
    trailStopLong := na
if senkouCloseCross and short_setup_last_10 and kijunCloseCross
    strategy.entry(id="Sell", direction = strategy.short)
    trailStopShort := na


// Update trailing stop
float temp_trailStop_long = ta.highest(high, 5) - (atrValue * 3)
float temp_trailStop_short = ta.lowest(low, 5) + (atrValue * 3)
if strategy.position_size > 0
    if temp_trailStop_long > trailStopLong or na(trailStopLong)
        trailStopLong := temp_trailStop_long
if strategy.position_size < 0
    if temp_trailStop_short < trailStopShort or na(trailStopShort)
        trailStopShort := temp_trailStop_short

// Handle strategy exit
if close < trailStopLong and barstate.isconfirmed
    strategy.close("Buy", comment="Stop Long")
if close > trailStopShort and barstate.isconfirmed
    strategy.close("Sell", comment="Stop Short")


// PRINT ON CHART
plot(kijunSen, color=color.rgb(214, 58, 30), title="Kijun-sen", linewidth=2)
p1 = plot(senkouA, offset=displacement - 1, color=#A5D6A7, title="Senkou span A")
p2 = plot(senkouB, offset=displacement - 1, color=#EF9A9A, title="Senkou Span B")
fill(p1, p2, color=senkouA > senkouB ? color.rgb(67, 160, 71, 90) : color.rgb(244, 67, 54, 90))
// PRINT SETUPS
plotshape(long_setup , style=shape.circle, color=color.green, location=location.belowbar, size=size.small)
plotshape(short_setup, style=shape.circle, color=color.red, location=location.abovebar, size=size.small)

// Trail Stop
plot(strategy.position_size[1] > 0 ? trailStopLong : na, style=plot.style_linebr, color=color.purple, title="Stop Loss")
plot(strategy.position_size[1] < 0 ? trailStopShort : na, style=plot.style_linebr, color=color.purple, title="Stop Loss")