Стратегия двойной торговли через ЕМА

Автор:Чао Чжан, Дата: 2023-10-16 16:24:00
Тэги:

img

Обзор

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

Принцип

Стратегия использует голубую вилку для определения времени покупки и продажи с использованием быстрой линии EMA (9 циклов) и медленной линии EMA (21 циклов). Сигнал покупки возникает, когда быстрая линия проходит медленную линию, а сигнал продажи возникает, когда медленная линия проходит медленную линию. Для фильтрации фальшивых сигналов стратегия также вводит вспомогательную EMA (5 циклов) и две дополнительные EMA (1, 4 циклов). Настоящий торговый сигнал запускается только тогда, когда вспомогательная EMA находится между быстрыми линиями, и 1 цикл выше 4-цикличной EMA.

После того, как наступает торговый сигнал, стратегия устанавливает стоп-лосс и стоп-трит, в зависимости от значения ATR. TP1 - это 6 раз больше ATR, для получения частичной прибыли с более быстрой скоростью. Если цена не запускает TP1, то, когда быстрая ЭМА снова пересекает вспомогательную ЭМА, позиция сразу же опускается, достигая TP2 стоп-трит.

Преимущества

  • Использование комбинации двойных EMA для фильтрации ложных сигналов повышает качество торговых сигналов
  • Вспомогательные индикаторы EMA могут дополнительно подтвердить направление тренда и снизить риск обратной операции
  • Дизайн с двумя остановками, который позволяет быстро получать прибыль и устойчиво отслеживать тенденции прибыли
  • Движущий стоп-лосс ATR может регулироваться в зависимости от волатильности рынка, снижая риск

Риски и оптимизация

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

Оптимизация:

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

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

Стратегия двойного прорыва ЭМА использует перекрестные ЭМА для определения тренда, а также многочисленные фильтры ЭМА и динамические стоп-стоп-потери ATR, которые эффективно отслеживают трендовые прибыли. Однако необходимо обратить внимание на такие вопросы, как соответствие кривой ЭМА, риск стоп-потери. Благодаря оптимизации параметров, управлению рисками и другим мерам можно получить более стабильную торговую производительность.

Обзор

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

Принципы

Стратегия использует быструю линию EMA (9 периодов) и медленную линию EMA (21 периода) для определения входов. Золотой крест, где быстрая EMA пересекает более медленной EMA, генерирует сигнал покупки, в то время как смертельный крест с быстрой EMA, пересекающей ниже медленной EMA, генерирует сигнал продажи. Для фильтрации ложных сигналов стратегия также использует вспомогательную EMA (5 периодов) и еще две EMA (1 период, 4 периоды). Реальный торговый сигнал запускается только тогда, когда быстрые и медленные EMA пересекаются, когда вспомогательная EMA находится между ними, а 1-периодная EMA выше 4-периодной EMA.

После запуска торгового сигнала стратегия использует значения ATR для установки уровней стоп-лосса и получения прибыли. TP1 устанавливается на уровне 6 x ATR для более быстрого получения прибыли. Если цена не достигает TP1, стратегия закрывает позицию непосредственно, когда быстрая EMA пересекает вспомогательную EMA, достигая TP2.

Преимущества

  • Дизайн двойной EMA фильтрует ложные сигналы и улучшает качество сигнала
  • Помощная EMA добавляет проверку направления тренда, снижая риски обратной торговли
  • Двойная прибыль позволяет быстро получать прибыль и устойчивую тенденцию.
  • Динамическая система ATR для снятия потерь/приобретения прибыли, корректируемая в зависимости от волатильности рынка

Риски и улучшения

  • EMA могут отставать от цен и генерировать поздние сигналы
  • Более короткие комбинации EMA могут производить больше шума
  • Более жесткие остановки подвергаются большему риску внезапных событий

Направления улучшения:

  • Испытать несколько комбинаций EMA для улучшения параметров
  • Добавьте другие подтверждающие показатели, такие как объем, волатильность и т.д.
  • Расширить стоп-лосс для снижения коэффициентов стоп-аут
  • Оптимизировать коэффициенты прибыли по отношению к эффективности капитала

Заключение

Стратегия двойного перекрестка EMA использует перекрестки EMA для направления тренда, наряду с несколькими фильтрациями EMA и динамическим ATR стоп-лосс/прибылью. Это позволяет эффективно следить за трендом и получать прибыль. Однако ограничения приспособления EMA и риски стоп-лосса требуют осторожности. Правильная оптимизация, управление рисками и т. Д. могут привести к более надежной производительности.

[/trans]


/*backtest
start: 2022-10-09 00:00:00
end: 2023-04-13 00:00:00
period: 1d
basePeriod: 1h
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/
// @author ADHDCRYPT0

//@version=4
strategy(title = "EMA double crossover", shorttitle = "(TEST) double cross over", overlay = true, default_qty_value = 100, initial_capital = 1000,default_qty_type=strategy.percent_of_equity, pyramiding=0, process_orders_on_close=true)


// Variables
ema_len1 = input(9 , title="Fast EMA")
ema_len2 = input(21, title="Slow EMA")
ema_len3 = input(5, title="Exit EMA")
ema_len4 = input(1, title="FastConf EMA")
ema_len5 = input(4, title="SlowConf EMA")

fastEMA = ema(open, ema_len1)
slowEMA = ema(open, ema_len2)
exitEMA = ema(open, ema_len3)
conf1EMA = ema(open, ema_len4)
conf2EMA = ema(open, ema_len5)
plot(fastEMA, title='fastEMA', transp=0, color=color.green)
plot(slowEMA, title='slowEMA', transp=0, color=color.red  )
plot(exitEMA, title='exitEMA', transp=0, color=color.orange)
plot(conf1EMA, title='conf1EMA', transp=0, color=color.blue)
plot(conf2EMA, title='conf2EMA', transp=0, color=color.black)

vol = volume 
volma = sma(volume,7)
vol_cond = vol>volma

atr = atr(5)


// Entry Conditions and vol_cond
long = crossover(fastEMA, slowEMA) and (conf1EMA > conf2EMA) and (fastEMA < exitEMA)
short= crossunder(fastEMA, slowEMA) and (conf1EMA < conf2EMA) and (fastEMA > exitEMA)

tradeType = input("BOTH", title="What trades should be taken : ", options=["LONG", "SHORT", "BOTH", "NONE"])

pos = 0.0

if tradeType=="BOTH"
    pos:= long? 1 : short? -1 : pos[1]
if tradeType=="LONG"
    pos:= long? 1 : pos[1]
if tradeType=="SHORT"
    pos:=short? -1 : pos[1]

longCond  = long  and (pos[1]!= 1 or na(pos[1]))
shortCond = short and (pos[1]!=-1 or na(pos[1]))

// EXIT FUNCTIONS //
sl  = input(1, title="Stop Loss (ATR)", minval=0)
tp  = input(6, title="Take Profit 1 (ATR)", minval=0)

// Simple Stop Loss + 2 Take Profits
sl_long   =  valuewhen(longCond , low - atr * sl, 0)
sl_short  =  valuewhen(shortCond, high+ atr * sl, 0)

tp_long  = valuewhen(longCond , high + atr * tp, 0)
tp_short = valuewhen(shortCond, low  - atr * tp, 0)


long_exit = crossover(fastEMA, exitEMA) and pos[1]==1
short_exit= crossover(exitEMA, fastEMA) and pos[1]==-1

if long_exit or short_exit
	pos:=0


// Position Adjustment
long_sl  = low <sl_long [1] and pos[1]==1
short_sl = high>sl_short[1] and pos[1]==-1

if long_sl or short_sl
    pos:=0
    
//  Strategy Backtest Limiting Algorithm
i_startTime = input(defval = timestamp("01 Sep 2002 13:30 +0000"), title = "Backtesting Start Time", type = input.time)
i_endTime = input(defval = timestamp("30 Sep 2099 19:30 +0000"), title = "Backtesting End Time", type = input.time)
timeCond = true


// Make sure we are within the bar range, Set up entries and exit conditions
if strategy.equity >0
    strategy.entry("long" , strategy.long , when=longCond  and timeCond and tradeType!="SHORT" , alert_message="INSERT MESSAGE HERE")
    strategy.entry("short", strategy.short, when=shortCond and timeCond and tradeType!="LONG" , alert_message="INSERT MESSAGE HERE")
    
    strategy.exit("SL/TP1", from_entry = "long" , stop=sl_long , limit=tp_long , alert_message="INSERT MESSAGE HERE")
    strategy.exit("SL/TP1", from_entry = "short", stop=sl_short, limit=tp_short, alert_message="INSERT MESSAGE HERE")

    strategy.exit("SL", from_entry = "long" , stop=sl_long, alert_message="INSERT MESSAGE HERE")
    strategy.exit("SL", from_entry = "short", stop=sl_short, alert_message="INSERT MESSAGE HERE")
    
    strategy.close("long", when=long_exit , comment="TP2", alert_message="INSERT MESSAGE HERE")
    strategy.close("short", when=short_exit, comment="TP2", alert_message="INSERT MESSAGE HERE")


Больше