Стратегия прорыва «Золотого креста» с двойной EMA


Дата создания: 2023-12-20 16:34:58 Последнее изменение: 2023-12-20 16:34:58
Копировать: 1 Количество просмотров: 719
1
Подписаться
1621
Подписчики

Стратегия прорыва «Золотого креста» с двойной EMA

Обзор

Эта стратегия является стратегией отслеживания тенденций, основанной на 5-минутных и 34-минутных EMA, для совершения операций по золотому кресту и кресту смерти. Открывайте позиции на длинную позицию, когда быстрая линия проходит медленную линию снизу; открывайте позиции на пустую позицию, когда быстрая линия проходит медленную линию сверху вниз.

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

  1. Быстрая линия EMA5 и медленная линия EMA34 составляют торговый сигнал.
  2. Когда быстрая линия пересекает медленную линию, она пересекается с золотом, что означает, что краткосрочная ситуация лучше, чем среднесрочная.
  3. Когда быстрая линия пересекает медленную линию, пересекается для смерти, чтобы показать, что краткосрочная ситуация хуже, чем среднесрочная.
  4. Установите стоп-стоп для блокировки прибыли и контроля риска.

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

  1. Используйте двойные фильтры EMA, чтобы избежать ложного прорыва.
  2. Следить за среднесрочными тенденциями и увеличивать возможности получения прибыли.
  3. Настройка стоп-стоп-убытков эффективно контролирует риск.

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

  1. Двойные EMA имеют отсталость и могут упустить краткосрочные торговые возможности.
  2. Стоп-пойнты слишком большие, риск увеличения убытков.
  3. Ограничительная точка была установлена слишком низко, чтобы максимизировать шансы на получение прибыли.

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

  1. Оптимизируйте параметры EMA, чтобы найти оптимальную комбинацию параметров.
  2. Оптимизация остановочных точек, блокировка более выгодных ценностей.
  3. Добавление фильтров для других показателей, таких как MACD, KDJ и т. Д., повышает точность сигнала.

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

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

Исходный код стратегии
/*backtest
start: 2023-11-01 00:00:00
end: 2023-11-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title='[STRATEGY][RS]MicuRobert EMA cross V2', shorttitle='S', overlay=true, pyramiding=0, initial_capital=100000)
USE_TRADESESSION = input(title='Use Trading Session?', type=bool, defval=true)
USE_TRAILINGSTOP = input(title='Use Trailing Stop?', type=bool, defval=true)
trade_session = input(title='Trade Session:',defval='0400-1500', confirm=false)
istradingsession = not USE_TRADESESSION ? false : not na(time('1', trade_session))
bgcolor(istradingsession?gray:na)
trade_size = input(title='Trade Size:', type=float, defval=1)
tp = input(title='Take profit in pips:', type=float, defval=55.0) * (syminfo.mintick*10)
sl = input(title='Stop loss in pips:', type=float, defval=22.0) * (syminfo.mintick*10)
ma_length00 = input(title='EMA length:',  defval=5)
ma_length01 = input(title='DEMA length:',  defval=34)
price = input(title='Price source:',  defval=open)

//  ||--- NO LAG EMA, Credit LazyBear:  ---||
f_LB_zlema(_src, _length)=>
    _ema1=ema(_src, _length)
    _ema2=ema(_ema1, _length)
    _d=_ema1-_ema2
    _zlema=_ema1+_d
//  ||-------------------------------------||

ma00 = f_LB_zlema(price, ma_length00)
ma01 = f_LB_zlema(price, ma_length01)
plot(title='M0', series=ma00, color=black)
plot(title='M1', series=ma01, color=black)

isnewbuy = change(strategy.position_size)>0 and change(strategy.opentrades)>0
isnewsel = change(strategy.position_size)<0 and change(strategy.opentrades)>0

buy_entry_price = isnewbuy ? price : buy_entry_price[1]
sel_entry_price = isnewsel ? price : sel_entry_price[1]
plot(title='BE', series=buy_entry_price, style=circles, color=strategy.position_size <= 0 ? na : aqua)
plot(title='SE', series=sel_entry_price, style=circles, color=strategy.position_size >= 0 ? na : aqua)
buy_appex = na(buy_appex[1]) ? price : isnewbuy ? high : high >= buy_appex[1] ? high : buy_appex[1]
sel_appex = na(sel_appex[1]) ? price : isnewsel ? low : low <= sel_appex[1] ? low : sel_appex[1]
plot(title='BA', series=buy_appex, style=circles, color=strategy.position_size <= 0 ? na : teal)
plot(title='SA', series=sel_appex, style=circles, color=strategy.position_size >= 0 ? na : teal)
buy_ts = buy_appex - sl
sel_ts = sel_appex + sl
plot(title='Bts', series=buy_ts, style=circles, color=strategy.position_size <= 0 ? na : red)
plot(title='Sts', series=sel_ts, style=circles, color=strategy.position_size >= 0 ? na : red)

buy_cond1 = crossover(ma00, ma01) and (USE_TRADESESSION ? istradingsession : true)
buy_cond0 = crossover(price, ma00) and ma00 > ma01 and (USE_TRADESESSION ? istradingsession : true)
buy_entry = buy_cond1 or buy_cond0
buy_close = (not USE_TRAILINGSTOP ? low <= buy_entry_price - sl: low <= buy_ts) or high>=buy_entry_price+tp//high>=last_traded_price + tp or low<=last_traded_price - sl //high >= hh or 
sel_cond1 = crossunder(ma00, ma01) and (USE_TRADESESSION ? istradingsession : true)
sel_cond0 = crossunder(price, ma00) and ma00 < ma01 and (USE_TRADESESSION ? istradingsession : true)
sel_entry = sel_cond1 or sel_cond0
sel_close = (not USE_TRAILINGSTOP ? high >= sel_entry_price + sl : high >= sel_ts) or low<=sel_entry_price-tp//low<=last_traded_price - tp or high>=last_traded_price + sl //low <= ll or 

strategy.entry('buy', long=strategy.long, qty=trade_size, comment='buy', when=buy_entry)
strategy.close('buy', when=buy_close)
strategy.entry('sell', long=strategy.short, qty=trade_size, comment='sell', when=sel_entry)
strategy.close('sell', when=sel_close)