Двойная EMA-прорывная стратегия - это стратегия отслеживания тренда, которая использует два разных циклических средних EMA для определения сигналов продажи. Эта стратегия также сочетает в себе дополнительные EMA-индикаторы для фильтрации сигналов торговли, чтобы получить лучшее время входа в трендовый рынок.
Стратегия использует голубую вилку для определения времени покупки и продажи с использованием быстрой линии EMA (9 циклов) и медленной линии EMA (21 циклов). Сигнал покупки возникает, когда быстрая линия проходит медленную линию, а сигнал продажи возникает, когда медленная линия проходит медленную линию. Для фильтрации фальшивых сигналов стратегия также вводит вспомогательную EMA (5 циклов) и две дополнительные EMA (1, 4 циклов). Настоящий торговый сигнал запускается только тогда, когда вспомогательная EMA находится между быстрыми линиями, и 1 цикл выше 4-цикличной EMA.
После того, как наступает торговый сигнал, стратегия устанавливает стоп-лосс и стоп-трит, в зависимости от значения ATR. TP1 - это 6 раз больше ATR, для получения частичной прибыли с более быстрой скоростью. Если цена не запускает TP1, то, когда быстрая ЭМА снова пересекает вспомогательную ЭМА, позиция сразу же опускается, достигая TP2 стоп-трит.
Оптимизация:
Стратегия двойного прорыва ЭМА использует перекрестные ЭМА для определения тренда, а также многочисленные фильтры ЭМА и динамические стоп-стоп-потери 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 для направления тренда, наряду с несколькими фильтрациями 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")