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


Дата создания: 2023-12-01 18:18:16 Последнее изменение: 2023-12-01 18:18:16
Копировать: 2 Количество просмотров: 668
1
Подписаться
1619
Подписчики

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

Обзор

Эта стратегия основана на двойном среднелинейном скрещивании. Она сочетает в себе быстрые простые движущиеся средние (SMA) и медленно взвешенные движущиеся средние (VWMA), используя скрещивание двух средних линий для формирования сигналов покупки и продажи.

Когда быстрый SMA вверх пересекает медленный VWMA, создается сигнал купить; когда быстрый SMA вниз пересекает медленный VWMA, создается сигнал продать.

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

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

  1. Простая скользящая средняя (SMA): среднее за последние n дней, отражающее средние цены за последний период.
  2. ВВМА: среднее значение за последние n дней, придающее больший вес недавним ценам и способствующее более быстрому реагированию на изменения цен.

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

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

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

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

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

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

Методы управления рисками:

  1. Использование индикатора фильтрации тенденций для подтверждения
  2. Оптимизация параметров
  3. Применение стратегии по борьбе с убытками и разумный контроль за убытками

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

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

  1. Подтверждение в сочетании с другими техническими показателями, такими как RSI, линия буринга и т. Д., для повышения точности сигнала
  2. Оптимизация длины среднелинейных параметров, корректировка параметров в зависимости от различных циклов
  3. Торговля в точках с большим количеством энергии входящей и исходящей в сочетании с индикатором объема торговли
  4. Параметры должны быть скорректированы в соответствии с результатами обратного измерения, чтобы выбрать оптимальный параметр.
  5. Использование динамических стоп-пойнтов для корректировки стоп-пойнтов в зависимости от степени волатильности рынка

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

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

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

//@version=4
//strategy(title="Bitlinc Entry v0.1 VWMA / SMA / MRSI SQQQ 94M", overlay=true, initial_capital=10000, currency='USD')

strategy(title="Bitlinc Entry v0.1 VWMA / SMA / MRSI SQQQ 94M", overlay=true)

// Credit goes to this developer for the "Date Range Code"
// https://www.tradingview.com/script/62hUcP6O-How-To-Set-Backtest-Date-Range/

// === GENERAL INPUTS ===
// short ma
maFastSource   = input(defval = close, title = "Simple MA Source")
maFastLength   = input(defval = 6, title = "Simple MA Length", minval = 1)
// long ma
maSlowSource   = input(defval = high, title = "VW MA Source")
maSlowLength   = input(defval = 7, title = "VW MA Period", minval = 1)


// === SERIES SETUP ===
// a couple of ma's...
maFast = sma(maFastSource, maFastLength)
maSlow = vwma(maSlowSource, maSlowLength)


// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = color.green, linewidth = 2, style = plot.style_line, transp = 30)
slow = plot(maSlow, title = "Slow MA", color = color.red, linewidth = 2, style = plot.style_line, transp = 30)

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

// === LOGIC ===
enterLong = crossover(maFast, maSlow)
exitLong = crossover(maSlow, maFast)
//enterLong = crossover(maSlow, maFast)
//exitLong = crossover(maFast, maSlow)

// Entry //
strategy.entry(id="Long Entry", long=true, when=window() and enterLong)
strategy.entry(id="Short Entry", long=false, when=window() and exitLong)

// === FILL ====
fill(fast, slow, color = maFast > maSlow ? color.green : color.red)

// === MRSI ===
//
//

basis = rsi(close, input(50))

ma1 = ema(basis, input(2))
ma2 = ema(basis, input(27))

oversold = input(32.6)
overbought = input(63)

//plot(ma1, title="RSI EMA1", color=blue)
//plot(ma2, title="RSI EMA2", color=yellow)

obhist = ma1 >= overbought ? ma1 : overbought
oshist = ma1 <= oversold ? ma1 : oversold

//plot(obhist, title="Overbought Highligth", style=columns, color=color.maroon, histbase=overbought)
//plot(oshist, title="Oversold Highligth", style=columns, color=color.yellow, histbase=oversold)

//i1 = hline(oversold, title="Oversold Level", color=white)
//i2 = hline(overbought, title="Overbought Level", color=white)

//fill(i1, i2, color=olive, transp=100)

// === LOGIC ===
enterLongMrsi = crossover(ma1, oversold)
exitLongMrsi = crossover(ma1, overbought)

// Entry //
strategy.entry(id="MRSI Long Entry", long=true, when=window() and enterLongMrsi)
strategy.entry(id="MRSI Short Entry", long=false, when=window() and exitLongMrsi)

//hline(50, title="50 Level", color=white)