Stratégie de négociation quantitative à double confirmation

Auteur:ChaoZhang est là., Date: 15 janvier 2024
Les étiquettes:

img

Résumé

La stratégie de négociation de quantité à double confirmation réalise une double confirmation des signaux de négociation en combinant la stratégie 123 d'inversion et les sous-stratégies de l'oscillateur de volume en pourcentage (PVO) pour réduire le risque de négociation.

Principes de négociation

123 Stratégie d'inversion

La stratégie d'inversion 123 est basée sur des modèles de ligne K mis en œuvre par l'indicateur stochastique. Plus précisément, elle va long lorsque le prix de clôture est inférieur au prix de clôture du jour précédent pendant deux jours consécutifs et que le Stochastique lent de 9 jours est inférieur à 50; elle va court lorsque le prix de clôture est supérieur au prix de clôture du jour précédent pendant deux jours consécutifs et que le Stochastique rapide de 9 jours est supérieur à 50.

Pourcentage d'oscillateur de volume (PVO)

Le PVO est un oscillateur de moment basé sur le volume. Il mesure la différence entre deux moyennes mobiles exponentielles du volume sur différentes périodes en pourcentage de la moyenne de la période plus longue. Il est positif lorsque l'EMA de la période plus courte est au-dessus de l'EMA de la période plus longue et négatif lorsque l'EMA de la période plus courte est en dessous.

Analyse des avantages

Cette stratégie combine des indicateurs de prix et de volume pour filtrer efficacement les fausses ruptures.

Analyse des risques

Cette stratégie repose sur des périodes de détention plus longues, avec le risque de retrait. De plus, des paramètres mal réglés peuvent également entraîner une survente ou des signaux manquants.

Directions d'optimisation

La performance des sous-stratégies peut être optimisée en ajustant les paramètres du stochastique et du PVO. Des mécanismes de stop loss peuvent également être introduits pour contrôler les risques. En outre, le filtrage des signaux avec d'autres indicateurs peut encore améliorer la stabilité de la stratégie.

Conclusion

La stratégie de négociation de quantité à double confirmation prend en compte à la fois les facteurs de prix et de volume avec de bons résultats de backtest.


/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 14/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
// The Percentage Volume Oscillator (PVO) is a momentum oscillator for volume. 
// PVO measures the difference between two volume-based moving averages as a 
// percentage of the larger moving average. As with MACD and the Percentage Price 
// Oscillator (PPO), it is shown with a signal line, a histogram and a centerline. 
// PVO is positive when the shorter volume EMA is above the longer volume EMA and 
// negative when the shorter volume EMA is below. This indicator can be used to define 
// the ups and downs for volume, which can then be use to confirm or refute other signals. 
// Typically, a breakout or support break is validated when PVO is rising or positive. 
//
// 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


PVO(LengthShortEMA,LengthLongEMA,LengthSignalEMA) =>
    pos = 0.0
    xShortEMA = ema(volume , LengthShortEMA)
    xLongEMA = ema(volume , LengthLongEMA)
    xPVO = ((xShortEMA - xLongEMA) / xLongEMA) * 100
    xSignalEMA = ema(xPVO , LengthSignalEMA)
    xPVOHisto = xPVO - xSignalEMA
    pos := iff(xSignalEMA < xPVO, -1,
    	      iff(xSignalEMA > xPVO, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Percentage Volume Oscillator (PVO)", 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, "---- Percentage Volume OscillatorA ----")
LengthShortEMA = input(12, minval=1)
LengthLongEMA = input(26, minval=1)
LengthSignalEMA = input(9, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posPVO = PVO(LengthShortEMA,LengthLongEMA,LengthSignalEMA)
pos = iff(posReversal123 == 1 and posPVO == 1 , 1,
	   iff(posReversal123 == -1 and posPVO == -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