Оптимизация стратегии тренда на основе диаграммы облаков Ичимоку

Автор:Чао Чжан, Дата: 2024-01-19 14:45:21
Тэги:

img

Обзор

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

Принципы

Эта стратегия в основном использует трансформацию облака Ичимоку для оценки направления тренда. Она длинна, когда Тенкан-сен пересекает над облаком, и коротка, когда Тенкан-сен пересекает ниже. Между тем, она использует Чику Спан, гистограмму MACD, CMF и TSI для многослойной фильтрации для обеспечения качества сигнала.

В частности, длинный сигнал запускается, когда:

  1. Тенкан-сен пересекает над облаком
  2. Облака широкие и Тенкан-сен над Киджун-сен
  3. Чику Спан выше нулевой линии.
  4. Цена закрытия выше облака.
  5. Гистограмма MACD выше 0
  6. CMF больше 0,1
  7. ТСОС выше 0

По таким всеобъемлющим критериям можно отфильтровать большинство ложных сигналов и выявить основные тенденции на рынке.

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

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

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

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

Риски

К основным рискам этой стратегии относятся:

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

Решения:

  1. Упростить критерии фильтрации, чтобы увеличить частоту торговли
  2. Добавить условие остановки потери для ограничения размера потери
  3. Оптимизировать параметры для улучшения точности сигнала

Улучшение

Основные направления оптимизации:

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

  2. Добавление механизма стоп-лосса для контроля рисков

  3. Добавить остановку потери для блокировки прибыли

  4. Проверьте больше показателей, чтобы найти лучшую комбинацию фильтров

  5. Добавьте правила, чтобы отличить настоящий прорыв.

Заключение

Эта стратегия эффективно сочетает в себе облако Ичимоку и несколько вспомогательных индикаторов.


/*backtest
start: 2024-01-11 00:00:00
end: 2024-01-13 14:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=4
strategy("Ichimoku with MACD/ CMF/ TSI", overlay=true, margin_long=0, margin_short=0)



//Inputs
ts_bars = input(10, minval=1, title="Tenkan-Sen Bars")
ks_bars = input(30, minval=1, title="Kijun-Sen Bars")
ssb_bars = input(52, minval=1, title="Senkou-Span B Bars")
cs_offset = input(26, minval=1, title="Chikou-Span Offset")
ss_offset = input(26, minval=1, title="Senkou-Span Offset")
long_entry = input(true, title="Long Entry")
short_entry = input(true, title="Short Entry")

middle(len) => avg(lowest(len), highest(len))

// Ichimoku Components
tenkan = middle(ts_bars)
kijun = middle(ks_bars)
senkouA = avg(tenkan, kijun)
senkouB = middle(ssb_bars)


ss_high = max(senkouA[ss_offset-1], senkouB[ss_offset-1])
ss_low = min(senkouA[ss_offset-1], senkouB[ss_offset-1])

// Entry/Exit Signals
fast_length = input(title="Fast Length", type=input.integer, defval=17)
slow_length = input(title="Slow Length", type=input.integer, defval=28)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 5)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=true)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=true)

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal


tk_cross_bull = tenkan > kijun
tk_cross_bear = tenkan < kijun
cs_cross_bull = mom(close, cs_offset-1) > 0
cs_cross_bear = mom(close, cs_offset-1) < 0
price_above_kumo = close > ss_high
price_below_kumo = close < ss_low


//CMF
lengthA = input(8, minval=1, title="CMF Length")
ad = close==high and close==low or high==low ? 0 : ((2*close-low-high)/(high-low))*volume
mf = sum(ad, lengthA) / sum(volume, lengthA)


//TSI
long = input(title="Long Length", type=input.integer, defval=8)
short = input(title="Short Length", type=input.integer, defval=8)
price = close
double_smooth(src, long, short) =>
	fist_smooth = ema(src, long)
	ema(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)



bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and hist > 0 and mf > 0.1 and tsi_value > 0
bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and hist < 0  and mf < -0.1 and tsi_value < 0



strategy.entry("Long", strategy.long, when=bullish and long_entry)
strategy.entry("Short", strategy.short, when=bearish and short_entry)

strategy.close("Long", when=bearish and not short_entry)
strategy.close("Short", when=bullish and not long_entry)

Больше