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

Автор:Чао Чжан, Дата: 2023-11-01 16:57:13
Тэги:

img

Обзор

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

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

Стратегия обратного движения с двойным колебанием рассчитывает значения быстрого и медленного K за последние 14 дней, чтобы определить, есть ли обратный ход в течение двух последовательных торговых дней. Если обратный ход происходит, когда быстрый K ниже 50, это сигнал покупки. Если быстрый K выше 50, это сигнал продажи.

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

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

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

  1. Объединение нескольких стратегий может генерировать более точные торговые сигналы и избежать ложных сигналов от одной стратегии.

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

  3. Оптимизированные параметры, такие как 14-дневная быстро/медленная стохастика и 21-дневный период от сигнала до шума, отражают последние тенденции без слишком большого шума.

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

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

  1. Сигналы обратного движения могут отставать и пропускать абсолютные дно или вершины.

  2. Условия подтверждения могут быть ослаблены, но также увеличивать риск.

  3. Параметры соотношения сигнал-шум требуют оптимизации. Неправильные периоды могут вызвать отсутствие или ложные сигналы.

  4. Мониторинг нескольких показателей увеличивает сложность.

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

  1. Проверьте больше комбинаций индикаторов, чтобы найти лучшие комбинационные сигналы, такие как MACD, RSI и т. Д.

  2. Оптимизировать параметры стратегии обратного движения для более точных и своевременных сигналов.

  3. Оптимизируйте периоды соотношения сигнала к шуму, чтобы найти оптимальный баланс.

  4. Добавьте стратегии стоп-лосса для контроля потенциальных потерь для одиночных сделок.

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

Заключение

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


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 196/01/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
// The signal-to-noise (S/N) ratio. 
// And Simple 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

SignalToNoise(length) =>
    StN = 0.0
    for i = 1 to length-1
        StN := StN + (1/close[i])/length
    StN := -10*log(StN)

StN(length,Smooth) =>
    pos = 0.0
    StN = SignalToNoise(length)
    SMAStN = sma(StN, Smooth)
    pos := iff(SMAStN[0] > StN[0] , -1,
    	     iff(SMAStN[0] < StN[0], 1, 0)) 
    pos

strategy(title="Combo Backtest 123 Reversal & Signal To Noise", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
lengthStN = input(title="Days", type=input.integer, defval=21, minval=2)
SmoothStN =  input(title="Smooth", type=input.integer, defval=29, minval=2)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posStN = StN(lengthStN,SmoothStN)
pos = iff(posReversal123 == 1 and posStN == 1 , 1,
	   iff(posReversal123 == -1 and posStN == -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 )

Больше