Эта стратегия рассчитывает различные типы скользящих средних, чтобы определить направление ценового тренда и реализовать односторонний вход.
Стратегия позволяет выбирать из 7 различных типов скользящих средних, включая простую скользящую среднюю (SMA), экспоненциальную скользящую среднюю (EMA), взвешенную по объему скользящую среднюю (VWMA), двойную экспоненциальную скользящую среднюю (DEMA), тройную экспоненциальную скользящую среднюю (TEMA), адаптивную скользящую среднюю (KAMA) Кауфмана и среднюю линию ценового канала. Она оценивает направление ценового тренда на основе связи между выбранной скользящей средней и ценой закрытия.
Когда цена закрытия пересекает линию скользящего среднего вверх, она рассматривается как восходящий тренд и открывается длинная позиция. Когда цена закрытия пересекает линию скользящего среднего вниз, она рассматривается как нисходящий тренд и открывается короткая позиция. Это может захватить поворотные моменты в ценовой тенденции и достичь одностороннего входа.
Преимущества этой стратегии:
Различные типы скользящих средних могут быть выбраны для гибкости, чтобы соответствовать различным продуктам и циклам.
Односторонний вход может эффективно контролировать риски.
Вход в трендовое направление легко выгоден.
Его легко понять и применить.
Эта стратегия также сопряжена с некоторыми рисками:
Когда цена колеблется вокруг линии скользящей средней, будет несколько ложных сигналов и обратных позиций входа.
Нельзя полностью избежать рисков, вызванных быстрыми движениями цен вверх или вниз.
Аналитику необходимо выбрать подходящие скользящие средние параметры. Неподходящие параметры могут легко привести к отставанию торговых сигналов.
Стратегия может быть оптимизирована из следующих аспектов:
Объедините с другими техническими индикаторами, такими как MACD, RSI, чтобы оценить сигнал тренда и сформировать торговую комбинацию.
Добавьте логику стоп-лосса, например, стоп-лосс задержки или стоп-лосс ожидания ордера.
Тестируйте и оптимизируйте такие параметры, как скользящая средняя продолжительность, скользящая средняя продолжительность, чтобы найти оптимальную комбинацию параметров.
Подумайте о использовании типа ордера MarketIfTouched для входа, чтобы следить за тенденцией.
Стратегия определяет направление ценового тренда на основе скользящих средних и реализует односторонний вход. Она проста в использовании и внедрении, и может эффективно контролировать риски. Но есть также риски ложных сигналов и обратных входов. Ее можно постоянно улучшать путем объединения других индикаторов сигнала, оптимизации параметров, добавления стоп-лосса, чтобы сделать стратегию более стабильной и надежной.
/*backtest start: 2023-11-24 00:00:00 end: 2023-12-24 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Noro's MAs Tests v1.1", shorttitle = "MAs tests 1.1", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) needlong = input(true, "long") needshort = input(true, "short") len = input(30, defval = 30, minval = 2, maxval = 1000, title = "MA length") type = input(1, defval = 1, minval = 1, maxval = 7, title = "Type") src = input(close, defval = close, title = "Source") anti = input(true, defval = true, title = "Antipila") //DEMA dema = 2 * ema(src, len) - ema(ema(close, len), len) //TEMA xPrice = close xEMA1 = ema(src, len) xEMA2 = ema(xEMA1, len) xEMA3 = ema(xEMA2, len) tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3 //KAMA xvnoise = abs(src - src[1]) nfastend = 0.20 nslowend = 0.05 nsignal = abs(src - src[len]) nnoise = sum(xvnoise, len) nefratio = iff(nnoise != 0, nsignal / nnoise, 0) nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) kama = nz(kama[1]) + nsmooth * (src - nz(kama[1])) //PriceChannel lasthigh = highest(src, len) lastlow = lowest(src, len) center = (lasthigh + lastlow) / 2 ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0 plot(ma, color = blue, linewidth = 3, transp = 0) trend = anti == false and close > ma ? 1 : anti == false and close < ma ? -1 : low > ma ? 1 : high < ma ? -1 : trend[1] longCondition = trend == 1 and trend[1] == -1 if (longCondition) strategy.entry("Long", strategy.long, needlong == false ? 0 : na) shortCondition = trend == -1 and trend[1] == 1 if (shortCondition) strategy.entry("Short", strategy.short, needshort == false ? 0 : na)