В процессе загрузки ресурсов... загрузка...

Многопоказательная стратегия EMA

Автор:Чао Чжан, Дата: 2023-09-28 15:57:34
Тэги:

Обзор

Многоиндикаторная стратегия EMA - это стратегия, которая включает в себя несколько индикаторов, таких как EMA, MACD, осциллятор, RSI, стохастик, полосы Боллинджера, чтобы генерировать торговые сигналы.

Логика стратегии

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

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

  • MACD: линии MACD DIF и DEA.

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

  • RSI: Индекс относительной силы за определенный период.

  • Стохастический: Стохастические значения K и D с параметрами.

  • Боллингерские полосы: верхние, средние и нижние полосы за определенный период.

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

Если триггер >= 7, генерируется длинный сигнал. Если триггер <= -7, генерируется короткий сигнал.

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

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

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

В частности, преимущества:

  1. Объединение нескольких индикаторов обеспечивает более надежное определение тенденции.

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

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

  4. Весы каждого индикатора можно настроить. Более важным показателям могут быть присвоены более высокие весы.

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

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

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

  1. Неправильное сочетание индикаторов может не позволить использовать сильные стороны или вызвать конфликты.

  2. Иррациональное распределение веса может неверно отражать важность показателя.

  3. Один набор параметров может привести к перенастройке.

  4. Статические показатели весов/параметров не могут адаптироваться к изменяющимся рыночным условиям.

  5. Сигналы индикатора могут отставать. Для определения времени остановки следует использовать другие методы.

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

Возможности для улучшения

Некоторые способы улучшения стратегии:

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

  2. Оптимизировать периоды показателей для отслеживания тенденций в разные периоды времени.

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

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

  5. Включайте стратегии стоп-лосса с рациональными точками стоп-лосса для ограничения потерь.

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

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

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

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

Заключение

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


/*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)


Больше