Стратегия разворота скользящей средней с четырьмя индикаторами


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

Стратегия разворота скользящей средней с четырьмя индикаторами

Обзор

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

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

  1. Для определения ценового тренда используйте среднюю линию EMA 4-х и 8-х циклов, чтобы быстро определить 4-х и 8-х циклов;

  2. Когда средняя линия EMA поворачивает вверх, то есть 4 циклические линии проходят 8 циклических линий, а затем вспомогательно судить, что показатель RSI выше 65 ((относительно зоны сверхпокупок) и показатель CCI выше 0 ((представляет отсутствие сверхпокупок и сверхпродажи), удовлетворение производит сигналы сверхпокупок;

  3. Когда средняя линия EMA поворачивает вниз, то есть 4 циклические линии проходят 8 циклических линий, а затем вспомогательно судить, что показатель RSI ниже 35 (относительно зоны перепродажи) и показатель CCI ниже 0 (представляет собой отсутствие перекупа и перепродажи), удовлетворение приводит к появлению сигнала заикания;

  4. После формирования сигнала устанавливаются стоп-стоп и стоп-стоп-цены в зависимости от ввода стоп-стап и стоп-стап.

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

Анализ преимуществ

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

  2. EMA использует усредненную линию для оценки основных тенденций, чтобы избежать ошибочного суждения о краткосрочных колебаниях; RSI и CCI, чтобы избежать перекупа и перепродажи, чтобы увеличить шансы на победу;

  3. Автоматическая установка стоп-лосс и стоп-стоп для контроля риска в каждой сделке, что эффективно предотвращает увеличение убытков в результате экстремальных ситуаций;

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

Анализ рисков

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

  2. При резких колебаниях цен на акции, стоп-потери могут быть преодолены, и стоп-потери должны быть расширены;

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

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

  1. Добавление алгоритмов машинного обучения для автоматической корректировки параметров в сочетании с фундаментальными условиями акций;

  2. Добавление адаптивного механизма остановки, а не фиксированной дистанции остановки.

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

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

Исходный код стратегии
/*backtest
start: 2023-11-19 00:00:00
end: 2023-11-26 00:00:00
period: 45m
basePeriod: 5m
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/
// © SoftKill21

//@version=4


strategy(title="Moving Average Exponential", shorttitle="EMA", overlay=true)


len4 = input(4, minval=1, title="Length_MA4")
src4 = input(close, title="Source")
offset4 = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
out4 = ema(src4, len4)
plot(out4, title="EMA", color=color.blue, offset=offset4)

len8 = input(8, minval=1, title="Length_MA8")
src8 = input(close, title="Source")
offset8 = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
out8 = ema(src8, len8)
plot(out8, title="EMA", color=color.blue, offset=offset8)


//rsioma
src = close, len = input(14, minval=1, title="Length")
up = rma(max(change(ema(src, len)), 0), len)
down = rma(-min(change(ema(src, len)), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
//plot(rsi, color=color.blue)
//band1 = hline(80)
//band0 = hline(20)
//fill(band1, band0, color=color.purple, transp=90)
//hline(50, color=color.gray, linestyle=plot.style_line)
sig = ema(rsi, 21)
//plot(sig, color=color.purple)

//woodie
cciTurboLength = input(title="CCI Turbo Length", type=input.integer, defval=6, minval=3, maxval=14)
cci14Length = input(title="CCI 14 Length", type=input.integer, defval=14, minval=7, maxval=20)

source = close

cciTurbo = cci(source, cciTurboLength)
cci14 = cci(source, cci14Length)

last5IsDown = cci14[5] < 0 and cci14[4] < 0 and cci14[3] < 0 and cci14[2] < 0 and cci14[1] < 0
last5IsUp = cci14[5] > 0 and cci14[4] > 0 and cci14[3] > 0 and cci14[2] > 0 and cci14[1] > 0
histogramColor = last5IsUp ? color.green : last5IsDown ? color.red : cci14 < 0 ? color.green : color.red


// Exit Condition
// Exit Condition
a = input(12)*10
b = input(15)*10
c = a*syminfo.mintick
d = b*syminfo.mintick


longCondition = crossover(out4, out8) and (rsi >= 65 and cci14>=0)
shortCondition = crossunder(out4, out8) and (rsi <=35 and cci14<=0)


long_stop_level     = float(na)
long_profit_level1  = float(na)
long_profit_level2  = float(na)
long_even_level     = float(na)

short_stop_level    = float(na)
short_profit_level1 = float(na)
short_profit_level2 = float(na)
short_even_level    = float(na)

long_stop_level     := longCondition  ? close - c : long_stop_level     [1]
long_profit_level1  := longCondition  ? close + d : long_profit_level1  [1]
//long_profit_level2  := longCondition  ? close + d : long_profit_level2  [1]
//long_even_level     := longCondition  ? close + 0 : long_even_level     [1]

short_stop_level    := shortCondition ? close + c : short_stop_level    [1]
short_profit_level1 := shortCondition ? close - d : short_profit_level1 [1]
//short_profit_level2 := shortCondition ? close - d : short_profit_level2 [1]
//short_even_level    := shortCondition ? close + 0 : short_even_level    [1] 


//ha
// === Input ===
//ma1_len = input(1, title="MA 01")
//ma2_len = input(40, title="MA 02")

// === MA 01 Filter ===
//o=ema(open,ma1_len)
//cc=ema(close,ma1_len)
//h=ema(high,ma1_len)
//l=ema(low,ma1_len)

// === HA calculator ===
//ha_t = heikinashi(syminfo.tickerid)
//ha_o = security(ha_t, timeframe.period, o)
//ha_c = security(ha_t, timeframe.period, cc)
//ha_h = security(ha_t, timeframe.period, h)
//ha_l = security(ha_t, timeframe.period, l)

// === MA 02 Filter ===
//o2=ema(ha_o, ma2_len)
//c2=ema(ha_c, ma2_len)
//h2=ema(ha_h, ma2_len)
//l2=ema(ha_l, ma2_len)

// === Color def ===
//ha_col=o2>c2 ? color.red : color.lime

// ===  PLOTITING===
//plotcandle(o2, h2, l2, c2, title="HA Smoothed", color=ha_col)

tp=input(120)
sl=input(96)
    
strategy.entry("long", strategy.long, when = longCondition)
//strategy.close("long", when = o2>c2 , comment="ha_long")
strategy.entry("short", strategy.short , when =shortCondition )
//strategy.close("short", when = o2<=c2 , comment = "ha_short" )

//strategy.close("long",when=long_profit_level1 or long_stop_level  , comment="tp/sl")
//strategy.close("short",when=short_profit_level1 or short_stop_level , comment="tp/sl")

strategy.exit("x_long","long",profit = tp, loss = sl) //when = o2>c2)
strategy.exit("x_short","short",profit = tp, loss = sl) //when = o2<c2)