Стратегия одностороннего входа, основанная на скользящей средней

Автор:Чао Чжан, Дата: 2023-12-25 14:09:49
Тэги:

img

Обзор

Эта стратегия рассчитывает различные типы скользящих средних, чтобы определить направление ценового тренда и реализовать односторонний вход.

Принцип стратегии

Стратегия позволяет выбирать из 7 различных типов скользящих средних, включая простую скользящую среднюю (SMA), экспоненциальную скользящую среднюю (EMA), взвешенную по объему скользящую среднюю (VWMA), двойную экспоненциальную скользящую среднюю (DEMA), тройную экспоненциальную скользящую среднюю (TEMA), адаптивную скользящую среднюю (KAMA) Кауфмана и среднюю линию ценового канала. Она оценивает направление ценового тренда на основе связи между выбранной скользящей средней и ценой закрытия.

Когда цена закрытия пересекает линию скользящего среднего вверх, она рассматривается как восходящий тренд и открывается длинная позиция. Когда цена закрытия пересекает линию скользящего среднего вниз, она рассматривается как нисходящий тренд и открывается короткая позиция. Это может захватить поворотные моменты в ценовой тенденции и достичь одностороннего входа.

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

Преимущества этой стратегии:

  1. Различные типы скользящих средних могут быть выбраны для гибкости, чтобы соответствовать различным продуктам и циклам.

  2. Односторонний вход может эффективно контролировать риски.

  3. Вход в трендовое направление легко выгоден.

  4. Его легко понять и применить.

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

Эта стратегия также сопряжена с некоторыми рисками:

  1. Когда цена колеблется вокруг линии скользящей средней, будет несколько ложных сигналов и обратных позиций входа.

  2. Нельзя полностью избежать рисков, вызванных быстрыми движениями цен вверх или вниз.

  3. Аналитику необходимо выбрать подходящие скользящие средние параметры. Неподходящие параметры могут легко привести к отставанию торговых сигналов.

Руководство по оптимизации

Стратегия может быть оптимизирована из следующих аспектов:

  1. Объедините с другими техническими индикаторами, такими как MACD, RSI, чтобы оценить сигнал тренда и сформировать торговую комбинацию.

  2. Добавьте логику стоп-лосса, например, стоп-лосс задержки или стоп-лосс ожидания ордера.

  3. Тестируйте и оптимизируйте такие параметры, как скользящая средняя продолжительность, скользящая средняя продолжительность, чтобы найти оптимальную комбинацию параметров.

  4. Подумайте о использовании типа ордера 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)
    
    
    
    

Больше