Эта стратегия рассчитывает процентную разницу в цене между несколькими парами EMA для определения направления тренда, и торгует на основе волны Вегаса.
В частности, он вычисляет процентные ценовые различия между текущей ценой, 144-периодической EMA, 169-периодической EMA и 233-периодической EMA. Долгие сигналы генерируются, когда все три соответствуют заранее установленному положительному порогу разницы. Шорты запускаются, когда цена падает ниже всех трех EMA и 144-периодическая EMA пересекает ниже 233-периодической EMA.
Сочетание EMA отфильтровывает больше ложных перебоев по сравнению с одной EMA.
Однако EMA имеют врожденное отставание и не могут идентифицировать оптимальные записи. И есть субъективность в волновой теории, причем производительность в значительной степени зависит от оптимизации параметров. Требуется осторожная оценка результатов в режиме реального времени.
В целом, стратегия вегасской трендовой волны сочетает в себе анализ EMA и теорию волн для достижения хороших результатов на трендовых рынках.
/*backtest start: 2023-09-03 00:00:00 end: 2023-09-10 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Vegas Wave Strategy", overlay=true) ema144 = ema(close, 144) ema169 = ema(close, 169) ema233 = ema(close, 233) current = close upd144 = input(title="EMA144 percent difference from EMA233", type=float, defval=0.1) upd169 = input(title="EMA169 percent difference from EMA233", type=float, defval=0.1) upd_current = input(title="Current price percent difference from EMA233", type=float, defval=0.1) //pDiff - Percentage Difference pDiff(x, y) => ((x-y)/x)*100 gtDiff(x, y) => x > y pd144 = pDiff(ema144, ema233) pd169 = pDiff(ema169, ema233) pd_current = pDiff(current,ema233) plot(ema144,color=orange, linewidth=2, transp=0, title="144 EMA") plot(ema169,color=blue,linewidth=2, transp=0, title="169 EMA") plot(ema233,color=red,linewidth=2, transp=0, title="233 EMA") //plot(current, color=white, title="Current Candle") if (gtDiff(pd_current, upd_current) and gtDiff(pd144, upd144) and gtDiff(pd169, upd169)) strategy.entry("buy", strategy.long, when=strategy.position_size <=0) // if (ema8 > ema55 and ema13 > ema55 and ema21 > ema55 and current > ema55 and pd_current > upd_current) // strategy.entry("buy", strategy.long, 10000, when=strategy.position_size <=0) if (current < ema144 and current < ema169 and current < ema233 and ema144 <= ema233) strategy.entry("sell", strategy.short, when=strategy.position_size > 0)