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

Автор:Чао Чжан, Дата: 2024-01-12 11:16:52
Тэги:

img

Обзор

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

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

Стратегия состоит из двух частей:

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

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

  2. Стохастический показатель

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

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

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

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

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

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

Риски могут быть уменьшены путем оптимизации комбинаций параметров и добавления стоп-лосса для контроля потерь.

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

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

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

Резюме

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


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 24/11/2020
// 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
// As the name suggests, High low bands are two bands surrounding the underlying’s 
// price. These bands are generated from the triangular moving averages calculated 
// from the underlying’s price. The triangular moving average is, in turn, shifted 
// up and down by a fixed percentage. The bands, thus formed, are termed as High 
// low bands. The main theme and concept of High low bands is based upon the triangular 
// moving average. 
//
// 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

    
HLB(Length, PercentShift) =>
    pos = 0.0
    xTMA = sma(sma(close, Length), Length)
    xHighBand = xTMA + (xTMA * PercentShift / 100)
    xLowBand = xTMA - (xTMA * PercentShift / 100)
    pos :=iff(close > xHighBand, 1,
           iff(close <xLowBand, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & High Low Bands", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Length_HLB = input(14, minval=1)
PercentShift = input(1, minval = 0.01, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posHLB = HLB(Length_HLB, PercentShift)
pos = iff(posReversal123 == 1 and posHLB == 1 , 1,
	   iff(posReversal123 == -1 and posHLB == -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 )

Больше