Stratégie combinée d'optimisation du rapport signal-bruit par inversion de double oscillation

Auteur:ChaoZhang est là., Date: 2023-11-01 16:57:13 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie combine la stratégie d'inversion de la double oscillation et la stratégie d'optimisation du rapport signal-bruit pour former une stratégie de trading plus puissante et stable.

La logique de la stratégie

La stratégie d'inversion de double oscillation calcule les valeurs K rapides et lentes des 14 derniers jours pour déterminer s'il y a un renversement sur deux jours de négociation consécutifs.

La stratégie d'optimisation du rapport signal-bruit calcule le rapport signal-bruit des 21 derniers jours et l'assouplit avec une moyenne mobile simple de 29 jours.

Enfin, cette stratégie n'engage des transactions d'achat ou de vente que lorsque les deux stratégies émettent le même signal.

Analyse des avantages

  1. La combinaison de plusieurs stratégies peut générer des signaux de trading plus précis et éviter les faux signaux d'une seule stratégie.

  2. La stratégie d'inversion de la double oscillation capte les points d'inversion de tendance. L'optimisation du rapport signal-bruit filtre les faux signaux. Travaillant ensemble, ils peuvent négocier avec précision aux inversions.

  3. Des paramètres optimisés tels que les stochastiques rapide/lente de 14 jours et la période de signal-bruit de 21 jours capturent les tendances récentes sans trop de bruit.

  4. Les signaux de confirmation doubles réduisent considérablement le risque de négociation et évitent les pertes inutiles.

Analyse des risques

  1. Les signaux d'inversion peuvent être retardés et manquer des bas ou des sommets absolus.

  2. Les conditions de confirmation pourraient être assouplies mais aussi accroître le risque.

  3. Les paramètres du rapport signal/bruit doivent être optimisés. Des périodes inappropriées peuvent entraîner des signaux manquants ou faux.

  4. La surveillance de multiples indicateurs augmente la complexité.

Directions d'optimisation

  1. Testez plus de combinaisons d'indicateurs pour trouver de meilleurs signaux de combinaison, comme le MACD, le RSI, etc.

  2. Optimiser les paramètres de la stratégie d'inversion pour des signaux plus précis et plus rapides.

  3. Optimiser les périodes de rapport signal/bruit pour trouver l'équilibre optimal.

  4. Ajouter des stratégies de stop loss pour contrôler les pertes potentielles pour les transactions uniques.

  5. Considérez les méthodes d'apprentissage automatique pour optimiser automatiquement les paramètres pour une meilleure adaptabilité.

Conclusion

Cette stratégie combine l'inversion de double oscillation et les stratégies de rapport signal-bruit pour fournir des signaux stables aux points d'inversion de tendance. Les paramètres optimisés réduisent considérablement les faux signaux et la double confirmation réduit les risques de trading.


/*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 )

Plus de