Комбинированная стратегия Ichimoku Mixed Macd и Tsi


Дата создания: 2023-11-27 11:50:43 Последнее изменение: 2023-11-27 11:50:43
Копировать: 0 Количество просмотров: 641
1
Подписаться
1617
Подписчики

Комбинированная стратегия Ichimoku Mixed Macd и Tsi

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

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

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

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

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

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

Третье: стратегические преимущества.

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

  2. Это означает, что вы можете использовать короткую линию, чтобы отслеживать рыночные колебания в реальном времени.

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

Стратегические риски и решения

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

  2. Высокочастотные коротколинейные сделки имеют более высокую комиссионную плату и трудности с улавливанием тенденций. Можно должным образом продлить цикл удержания позиций, стремясь к дополнительной прибыли, чтобы компенсировать затраты.

  3. Безпотеря может привести к большим потерям. В сочетании с ATR можно установить подходящую точку остановки или мобильную остановку.

Пятое: оптимизация стратегии

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

  2. Добавление механизма остановки убытков. Динамическая установка мобильной остановки убытков в сочетании с показателями ATR.

  3. Повышение управления позициями. Динамическая корректировка доли объема торгов.

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

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

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

Исходный код стратегии
/*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)