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


Дата создания: 2023-11-22 10:07:19 Последнее изменение: 2023-11-22 10:07:19
Копировать: 1 Количество просмотров: 605
1
Подписаться
1617
Подписчики

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

Обзор

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

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

  1. Настройка быстрого движения среднего цикла shortma ((по умолчанию 7 дней) и медленного движения среднего цикла longma ((по умолчанию 77 дней)
  2. Когда короткая линия проходит по средней линии длинной линии, она рассматривается как сигнал покупки, записывается как barssince ((mabuy), длинная линия означает вход в тренд; когда короткая линия проходит по средней линии длинной линии, она рассматривается как сигнал продажи, записывается как barssince ((masell), длинная линия означает конец тренда
  3. По сравнению с размером barssince, большее количество баров, которые пересекаются сверху вниз в короткой средней линии, указывает на то, что тенденция длится дольше; наоборот, большее количество косых, которые пересекаются снизу вверх в короткой средней линии, указывает на то, что обратный сигнал сильнее
  4. Сигнал купли-продажи подается, когда количество баров для продажи больше, чем количество баров для покупки; сигнал продажи подается, когда количество баров для покупки больше, чем количество баров для продажи
  5. Такие стратегии, по сути, являются двусторонними реверсивными стратегиями, чтобы определить точку поворота тренда с помощью реверсий быстрых и медленных средних.

Стратегические преимущества

  1. С помощью двойного равномерного суждения отфильтрован частичный шум торговых сигналов.
  2. Увеличение сравнения barssince, избежание ошибочных сигналов, вызванных ложными выводами и реверсией цены Close
  3. Легко понять и реализовать
  4. Настраиваемые параметры скользящей средней для различных периодов и рынков

Стратегический риск

  1. Двухлинейная стратегия имеет большую вероятность получения сигналов и более частых торгов.
  2. Неправильная настройка параметров движущейся средней линии может пропустить более длинные трендовые возможности
  3. При прорыве долгосрочной средней точки остановки может быть далеко, и существует большой отступ.
  4. Неэффективная фильтрация спиралей и колебаний рынка

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

  1. Добавление фильтров для других показателей, чтобы избежать попадания в ситуацию, когда происходит землетрясение
  2. Увеличение убыточности
  3. Оптимизация комбинации перемещаемых средних параметров
  4. Параметры скорректированной скользящей средней в зависимости от динамики рыночного цикла

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

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

Исходный код стратегии
/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Up Down", "Up Down", precision = 6, pyramiding = 1, default_qty_type = strategy.percent_of_equity, default_qty_value = 99, commission_type = strategy.commission.percent, commission_value = 0.0, initial_capital = 1000, overlay = true)

buy = close > open and open > close[1]
sell = close < open and open < close[1]

longma = input(77,"Long MA Input")
shortma = input(7,"Short MA Input")
long = sma(close,longma)
short = sma(close, shortma)
mabuy = crossover(short,long) or buy and short > long
masell = crossunder(short,long) or sell and short > long

num_bars_buy = barssince(mabuy)
num_bars_sell = barssince(masell)
//plot(num_bars_buy, color = teal)
//plot(num_bars_sell, color = orange)

xbuy = crossover(num_bars_sell, num_bars_buy)
xsell = crossunder(num_bars_sell, num_bars_buy)
plotshape(xbuy,"Buy Up Arrow", shape.triangleup, location.belowbar, white, size = size.tiny)
plotshape(xsell,"Sell Down Arrow", shape.triangledown, location.abovebar, white, size = size.tiny)
plot(long,"Long MA", fuchsia, 2)

// Component Code Start
// Example usage:
// if testPeriod()
//   strategy.entry("LE", strategy.long)
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(7, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop

if testPeriod()
    strategy.entry("buy", true, when = xbuy, limit = close)
    strategy.close("buy", when = xsell)