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


Дата создания: 2023-12-25 14:09:49 Последнее изменение: 2023-12-25 14:09:49
Копировать: 10 Количество просмотров: 559
1
Подписаться
1623
Подписчики

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

Обзор

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

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

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

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

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

Эта стратегия имеет следующие преимущества:

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

  2. Одностороннее открытие позиции позволяет эффективно контролировать риски.

  3. “Я не хочу, чтобы мои дети были в тюрьме.

  4. Легко понять и реализовать.

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

Однако эта стратегия также несет в себе некоторые риски:

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

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

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

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

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

  1. В сочетании с другими техническими показателями, такими как MACD, RSI и т. д., формируется портфель сделок.

  2. Добавить логику остановки. Переместить остановку или прикрепить одну остановку.

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

  4. Можно рассматривать стратегии входа типа “немедленно торгуй” и отслеживать движение тренда.

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

Стратегия основана на движущейся средней, которая определяет направление ценовой тенденции и позволяет односторонне открывать позиции. Ее использование простое, легко реализуемое и позволяет эффективно контролировать риски. Но также может возникать ошибочный сигнал и риск обратного открытия позиции.

Исходный код стратегии
/*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)