Stratégie de négociation en inversion de suivi de double oscillation

Auteur:ChaoZhang est là., Date: 2023-10-11 à 14h47h25
Les étiquettes:

Résumé

Il s'agit d'une stratégie de trading d'inversion à double suivi d'oscillation qui combine la stratégie d'inversion de l'indicateur stochastique et l'indicateur de volatilité Chaikin pour obtenir des signaux de trading plus fiables.

La logique de la stratégie

La stratégie se compose de deux parties:

  1. Stratégie d'inversion de l'indicateur stochastique

Cette partie utilise la ligne rapide et la ligne lente de l'indicateur stochastique pour générer des signaux de trading. Il va long lorsque le prix de clôture est inférieur au prix de clôture précédent pendant deux jours consécutifs et que la ligne rapide est au-dessus de la ligne lente. Il va court lorsque le prix de clôture est supérieur au prix de clôture précédent pendant deux jours consécutifs et que la ligne rapide est en dessous de la ligne lente.

  1. Indicateur de volatilité de Chaikin

Cet indicateur calcule la variation de l'écart entre les prix les plus élevés et les plus bas sur une période de temps. Lorsque l'écart s'élargit, il indique une volatilité croissante et une position courte peut être prise. Lorsque l'écart se rétrécit, il indique une volatilité décroissante et une position longue peut être prise.

Le signal de trading final est une combinaison des signaux des deux parties. Lorsque le signal de l'indicateur stochastique et le signal de l'indicateur de volatilité sont d'accord, ce signal est pris. Sinon, aucun commerce n'est effectué si les deux signaux ne sont pas d'accord.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. La combinaison de deux types d'indicateurs différents améliore la précision du signal.

  2. Le mécanisme de double confirmation réduit les faux signaux et contrôle les risques.

  3. En se concentrant sur les retours en arrière comme la direction principale du commerce permet des profits à des points tournants de tendance.

  4. Des paramètres flexibles le rendent adaptable à différents produits et délais.

  5. Le réglage des paramètres des indicateurs permet une optimisation.

Analyse des risques

Les risques de cette stratégie comprennent:

  1. Les signaux d'inversion peuvent être jugés à tort, ce qui conduit à des pertes.

  2. Le court-circuit en période de forte volatilité comporte des risques de perte. Le stop loss peut contrôler le risque.

  3. La combinaison de deux indicateurs peut échouer en cas de fluctuations extrêmes du marché.

  4. La surveillance de deux indicateurs augmente la charge de travail.

Directions d'amélioration

Les améliorations apportées à cette stratégie comprennent:

  1. Testez plus de combinaisons de paramètres pour trouver les paramètres optimaux.

  2. Ajoutez d'autres indicateurs de confirmation comme le volume, etc., pour créer une confirmation multiple.

  3. Ajoutez des mécanismes de stop-loss tels que le stop de trail, le stop de zone, etc. pour contrôler davantage le risque.

  4. Optimiser la gestion de l'argent comme la fraction fixe, Kelly, etc. pour améliorer l'efficacité du profit.

  5. Testez l'applicabilité sur un plus grand nombre de produits et de délais avec différents paramètres.

Conclusion

Cette stratégie combine deux indicateurs pour les signaux de trading, en mettant l'accent sur la capture des inversions. Elle présente des avantages tels qu'une grande précision du signal et un bon contrôle des risques, et a des possibilités d'amélioration.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 29/07/2019
// 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
// Chaikin's Volatility indicator compares the spread between a security's
// high and low prices. It quantifies volatility as a widening of the range
// between the high and the low price.
// You can use in the xPrice1 and xPrice2 any series: Open, High, Low, Close, HL2,
// HLC3, OHLC4 and ect...
//
// 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

ChaikinVolatility(Length, ROCLength, Trigger) =>
    pos = 0
    xPrice1 = high
    xPrice2 = low
    xPrice = xPrice1 - xPrice2
    xROC_EMA = roc(ema(xPrice, Length), ROCLength)
    pos := iff(xROC_EMA < Trigger, 1,
	         iff(xROC_EMA > Trigger, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Chaikin Volatility", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthCV = input(10, minval=1)
ROCLength = input(12, minval=1)
Trigger = input(0, minval=0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posChaikinVolatility = ChaikinVolatility(LengthCV, ROCLength, Trigger)
pos = iff(posReversal123 == 1 and posChaikinVolatility == 1 , 1,
	   iff(posReversal123 == -1 and posChaikinVolatility == -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