Ichimoku Mixed Equilibrium Table Макд и Ци Совместная стратегия

Автор:Чао Чжан, Дата: 2023-11-27 11:50:43
Тэги:

img

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

Эта стратегия широко использует такие технические индикаторы, как Ichimoku Kinko Hyo, Macd, Chaikin Money Flow и Tsi Oscillator, чтобы точно оценить направление рыночных тенденций для краткосрочной торговли.

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

Стратегия использует линию Тенкан-сен, линию Киджун-сен, линию Сенкоу-Спан А и линию Сенкоу-Спан В в Ичимоку для оценки внутридневных ценовых тенденций. В то же время она сочетает в себе перекрестные сигналы быстрых и медленно движущихся средних линий Macd и индикатор денежного потока и индикатор колебаний для определения притока и оттока средств. После всестороннего суждения по нескольким показателям принимаются решения о покупке и продаже.

Когда линия Тенкан-сен пересекает линию Киджун-сен, то Чикоу-спан находится выше 0 оси, а цена закрытия находится выше облака Ичимоку, это бычий сигнал. Напротив, когда линия Тенкан-сен пересекает линию Киджун-сен ниже 0 оси, то Чикоу-спан находится ниже 0 оси, а цена закрытия ниже облака, это медвежий сигнал. В то же время стратегия обнаруживает, является ли гистограмма MACD положительной, и являются ли индикатор денежного потока Чайкина и осциллятор TSI положительными в том же направлении. Если индикаторы быстры в том же направлении, то длинную позицию открывают путем покупки, а если индикаторы медвежие в том же направлении, то короткую позицию открывают путем продажи.

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

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

  1. Использование комбинации нескольких показателей улучшает точность суждения.

  2. Краткосрочные операции отслеживают колебания рынка в режиме реального времени.

  3. Без ручного вмешательства, полностью автоматизированная алгоритмическая торговля.

IV. Риски стратегии и решения

  1. Совместное суждение о том, что несколько индикаторов одновременно являются бычьими или медвежьими, сопряжено с риском ошибочного суждения.

  2. Высокочастотная краткосрочная торговля имеет относительно высокие комиссионные и трудно отслеживать тенденции.

  3. Никакая установка стоп-лосса не может привести к большему количеству потерь.

V. Руководство по оптимизации стратегии

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

  2. Увеличьте механизм стоп-лосса, установите динамические линии стоп-лосса в сочетании с индикатором ATR.

  3. Увеличьте управление позициями, динамически корректируйте объемы торгов.

  4. Объединить технологии машинного обучения для оптимизации показателей и сигналов.

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

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


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1h
basePeriod: 15m
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)

Больше