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

Автор:Чао Чжан, Дата: 2023-12-18 10:24:08
Тэги:

img

Обзор

Стратегия двойного переменного среднего перехода - это комбинационная стратегия, которая включает в себя как 123 переменную стратегию, так и стратегию дивергенции цены и переменного среднего.

Логика стратегии

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

  1. 123 Стратегия отмены

    Стратегия 123 Reversal генерирует торговые сигналы, основанные на двух последовательных днях переключения цены закрытия (т.е. более высокий закрытие, за которым следует более низкий закрытие; или более низкий закрытие, за которым следует более высокий закрытие), в сочетании с 9-дневным стохастическим осциллятором K-линии, которая находится ниже/выше определенного уровня (по умолчанию 50).

  2. Стратегия дивергенции цен и скользящих средних

    Стратегия дивергенции Price & MA рассчитывает процентную разницу между ценой и скользящей средней за определенный период (по умолчанию 14). Она генерирует сигналы покупки, когда дивергенция ниже порога (по умолчанию 3%) и сигналы продажи, когда дивергенция выше порога (по умолчанию 0,54%).

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

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

Стратегия двойного перемещающегося среднего реверсивного прорыва сочетает в себе сильные стороны реверсивных и трендовых стратегий для достижения синергии.

123 Reversal выбирает сигналы отклонений, чтобы извлечь выгоду из оборотных периодов. Price & MA Divergence отслеживает долгосрочную тенденцию. Вместе они фиксируют краткосрочные отклонения, пока ездят по большему тренду, чтобы избежать ловушки.

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

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

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

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

Для части Price & MA Divergence ненадлежащие параметры скользящих средних могут привести к отставанию сигналов. Кроме того, само расхождение не указывает на направление тренда, только генерирует механические сигналы.

В целом, основные риски этой стратегии возникают из-за плохой настройки параметров и неисправной генерации сигнала.

Возможности для расширения

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

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

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

Заключение

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


/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-17 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 13/04/2021
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// Percent difference between price and MA
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos


DBP_MA(Length,SellZone,BuyZone) =>
    pos = 0.0
    xSMA = sma(close, Length)
    nRes = abs(close - xSMA) * 100 / close
    pos:= iff(nRes < BuyZone, 1,
           iff(nRes > SellZone, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Difference between price and MA", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Difference between price and MA ----")
LengthDBP = input(14, minval=1)
SellZone = input(0.54, minval=0.01, step = 0.01)
BuyZone = input(0.03, minval=0.01, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDBP_MA = DBP_MA(LengthDBP,SellZone,BuyZone)
pos = iff(posReversal123 == 1 and posDBP_MA == 1 , 1,
	   iff(posReversal123 == -1 and posDBP_MA == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1 ) 
    strategy.entry("Long", strategy.long)
if (possig == -1 )
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Больше