Эта стратегия генерирует торговые сигналы, основанные на золотом кресте и мертвом кресте скользящих средних с различными циклами.
Стратегия сначала рассчитывает среднесрочные и краткосрочные скользящие средние, ma1 и ma2, цены, где ma1 имеет более короткий цикл, а ma2 имеет более длительный цикл. Затем она рассчитывает разницу между ma1 и ma2 как ma3, и далее вычисляет сглаженную скользящую среднюю ma4 ma3. Когда ma3 пересекает ma4 вверх, генерируется сигнал покупки. Когда он пересекает вниз, генерируется сигнал продажи.
Таким образом, ma3 отражает среднесрочную тенденцию цены, а ma4 фильтрует какой-то шум от ma3, чтобы сформировать более надежный торговый сигнал. Циклы ma1 и ma2 устанавливаются параметром maLen. Пользователи могут оптимизировать параметры для достижения наилучшей настройки для разных рынков.
Преимущества этой стратегии включают:
Эта стратегия также сопряжена с некоторыми рисками:
Стратегия может быть оптимизирована из следующих аспектов:
Стратегия генерирует торговые сигналы на основе золотого креста и мертвого креста скользящих средних. Используя ALMA и многоциклическое ценовое среднее, сигналы становятся более точными и надежными. Регулируемые параметры делают ее широко применимой. Кроме того, логика проста и ясна и хорошо работает на трендовых рынках. Поэтому она имеет высокую практическую ценность.
/*backtest start: 2024-01-08 00:00:00 end: 2024-01-15 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Oracle Move Strategy", overlay=true) maLen = input(30, "ma period") mode = input(defval="wma", options=["alma", "ema", "wma"]) price = close ma(src, len) => mode=="alma" ? alma(src, len, 0.85, 6) : mode=="ema"? ema(src, len) : wma(src, len) ma1 = ma(price, floor(maLen / 2)) ma2 = ma(price, maLen) ma3 = 2.0 * ma1 - ma2 ma4 = ma(ma3, floor(sqrt(maLen))) //plot(ma1, color = red) //plot(ma2, color = green) plot(ma3, color = blue) plot(ma4, color = orange) mafast = ma3 maslow = ma4 if (crossover(mafast, maslow)) strategy.entry("MA2CrossLE", strategy.long, comment="MA2CrossLE") if (crossunder(mafast, maslow)) strategy.entry("MA2CrossSE", strategy.short, comment="MA2CrossSE") //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)