Стратегия многоиндикаторного EMA


Дата создания: 2023-09-28 15:57:34 Последнее изменение: 2023-09-28 15:57:34
Копировать: 1 Количество просмотров: 766
1
Подписаться
1617
Подписчики

Обзор

Стратегия EMA с несколькими индикаторами - это стратегия отслеживания тенденций, использующая несколько индикаторов, таких как EMA, MACD, Oscillator, RSI, Stochastic и Bollinger Bands. Эта стратегия использует объединенные сигналы нескольких индикаторов, чтобы определить, находится ли в настоящее время в тенденции к росту или снижению, что приводит к сигналам покупки и продажи.

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

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

  • EMA: рассчитывается показательная скользящая средняя EMA за определенный период.

  • MACD: рассчитывается линия DIF и линия DEA MACD.

  • Осциллятор: рассчитывает разницу между ценой закрытия и ценой открытия за определенный период.

  • RSI: рассчитывается как относительно сильный или слабый индекс на определенный период.

  • Stochastic: вычисляет значения K и D случайных индикаторов с определенными параметрами.

  • Bollinger Bands: Bollinger Bands, которые рассчитывают за определенный период времени на верхней, средней и нижней полосах.

Затем, в зависимости от текущего состояния этих индикаторов, им присваиваются различные числовые значения. Например, когда Stochastic меньше 20, значение присваивается 2; когда RSI больше 80, значение присваивается -2.

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

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

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

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

В частности, преимущества этой стратегии заключаются в следующем:

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

  2. Используйте различные характеристики индикатора, чтобы идентифицировать различные этапы в тренде. Например, MACD может идентифицировать начало тренда, RSI может определить, не перегревается ли он и т. Д.

  3. Показатели с различными параметрами могут быть установлены для того, чтобы фиксировать характеристики различных циклов. Например, быстрые и медленные EMA.

  4. Можно настроить вес для каждого показателя. Для более важных показателей можно придать им более высокий вес.

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

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

Несмотря на то, что в стратегии используются различные показатели для оценки тенденций, существуют следующие риски:

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

  2. Распределение веса нерационально, невозможно точно выразить важность каждого показателя. Необходимо оптимизировать веса путем повторного тестирования.

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

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

  5. При наличии задержки в сигнале индикатора время остановки ущерба должно быть определено в сочетании с другими техническими методами.

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

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

Подобная стратегия может быть оптимизирована в следующих аспектах:

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

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

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

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

  5. В сочетании с стратегией остановки убытков, установление разумных точек остановки убытков снижает риск потерь.

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

  7. Используйте методы пошаговой оптимизации и комбинационной оптимизации, чтобы найти оптимальную комбинацию параметров.

  8. Добавление более продвинутых методов, таких как машинное обучение, для более интеллектуальной перевешивания показателей.

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

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

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

Исходный код стратегии
/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 4h
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/
// © ally17

//@version=4
// strategy("ELIA MULTI STRATEGY",overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, commission_type=strategy.commission.percent, commission_value=0.00, default_qty_value=25)

//INPUT
start = timestamp(input(2021, "start year"), 1, 1, 00, 00)
end = timestamp(input(9999, "end year"), 1, 1, 00, 00)

emalen=input(80, title="Ema Len")
macdfast=input(12, title="Macd Fast Len")
macdslow=input(26, title="Macd Fast Len")
macdsig=input(12, title="Macd Signal Len")
occlen=input(15, title="Occ Len")

rsilen=input(2, title="Rsi Len")
stochklen=input(11, title="Stk K Len")
stochdlen=input(3, title="Stk D Len")
stochlen=input(3, title="Stk Smooth Len")
bblength = input(10, minval=1, title="BB Len")
mult = input(2.0, minval=0.001, maxval=50, title="BB Std Dev")

momlen=input(10, title="Mom Len")


//CALCOLI
var trigger = 0.0

var emavar = 0.0
var macdvar = 0.0
var occvar = 0.0

var rsivar = 0.0
var stochvar = 0.0
var bbvar = 0.0

var donvar =0.0

ema = ema(close,emalen)

[macdLine, signalLine, histLine] = macd(close, 12, 26, 9) // MACD

occ = ema(close,occlen) - ema(open,occlen)

rsi = rsi(close, rsilen) // RSI

stoch = sma(stoch(close, high, low, stochklen), stochlen) // Stoch

basis = sma(close, bblength)
dev = mult * stdev(close, bblength)
upper = basis + dev
lower = basis - dev

moment = mom(close, momlen) // Momentum

Obv = obv // OBV


//PLOT


//STRATEGIA
emavar := (close>ema)? 3 : -3
macdvar := (macdLine>signalLine)? 3 : -3
occvar := (occ>0)? 3 : -3

rsivar := (rsi<20)? 2 : (rsi>50 and rsi<80)? 1 : (rsi>80)? -2 : (rsi<50 and rsi>20)? -1 : 0
stochvar := (stoch<20)? 2 : (stoch>80)? -2 : 0
bbvar :=  (close<lower)? 2 : (close>upper)? -2 : 0

trigger := emavar+macdvar+occvar+rsivar+stochvar+bbvar

longcondition = trigger>=7
closelong = trigger<3

shortcondition = trigger<=-7
closeshort = trigger >-3

trendcolor = longcondition ? color.green : shortcondition? color.red : (trigger>3 and trigger<7)? #A2E1BF : (trigger<-3 and trigger>-7)? #E19997 : na
bgcolor(trendcolor, transp=80)


if time > start and time < end
    if longcondition
        strategy.entry("LONG", long=strategy.long)

if closelong
    strategy.close("LONG", comment="CLOSE LONG")
    
if time > start and time < end
    if shortcondition
        strategy.entry("SHORT", long=strategy.short)

if closeshort
    strategy.close("SHORT", comment="CLOSE SHORT")
    
//plotshape(longcondition, color=color.green, text="L", size=size.small, style=shape.triangledown)
//plotshape(shortcondition, color=color.red, "S"(trigger), size=size.small, style=shape.triangledown)
//plotshape(closelong, color=color.purple, text="LC", size=size.small, style=shape.triangledown)
//plotshape(closeshort, color=color.purple, text="SC", size=size.small, style=shape.triangledown)