Stratégie de trading quantitative à double confirmation


Date de création: 2024-01-15 15:21:39 Dernière modification: 2024-01-15 15:21:39
Copier: 0 Nombre de clics: 628
1
Suivre
1617
Abonnés

Stratégie de trading quantitative à double confirmation

Aperçu

La stratégie de double confirmation de trading quantifié permet de réduire le risque de trading en combinant les deux sous-stratégies 123 inversion et PVO, permettant une double confirmation des signaux de trading. Cette stratégie s’applique principalement aux transactions de portefeuille moyen et long.

Principe de stratégie

123 stratégies de retour

La stratégie de revers est basée sur la forme de la ligne K de l’indicateur aléatoire. Plus précisément, lorsque le prix de clôture est inférieur au prix de clôture du jour précédent pendant 2 jours consécutifs et que l’indicateur aléatoire lent est inférieur à 50 pendant 9 jours, faites plus; lorsque le prix de clôture est supérieur au prix de clôture du jour précédent pendant 2 jours consécutifs et que l’indicateur aléatoire rapide est supérieur à 50 pendant 9 jours, faites moins.

Indicateur du pourcentage de fluctuation du volume de transactions (PVO)

Le PVO est un indicateur de volatilité dynamique basé sur le volume des transactions. Il mesure la différence entre les moyennes mobiles de l’indice de volume des transactions de deux périodes différentes et le rapport entre les moyennes des périodes plus longues, exprimées en pourcentage.

Analyse des avantages

Cette stratégie, combinée à des indicateurs de prix et à des indicateurs de volume de transactions, permet de filtrer efficacement les fausses percées. En outre, grâce à un mécanisme de double confirmation, la fréquence des transactions peut être réduite et le risque de transaction réduit.

Analyse des risques

Cette stratégie repose sur des périodes de détention plus longues et présente un risque de retrait. De plus, une mauvaise configuration des paramètres peut entraîner une fréquence de négociation trop élevée ou des signaux erronés.

Direction d’optimisation

Il est possible d’optimiser la performance des sous-stratégies en ajustant les paramètres des indicateurs aléatoires et des PVO. Il est également possible d’introduire des mécanismes de stop-loss pour contrôler le risque. De plus, le filtrage des signaux combiné avec d’autres indicateurs peut encore améliorer la stabilité de la stratégie.

Résumer

La stratégie de double confirmation de trading quantifié prend en compte les facteurs de prix et de volume de transaction, et le retour d’expérience est idéal. La stratégie est susceptible d’améliorer encore la stabilité et de devenir un outil puissant pour le trading quantifié en ajustant les paramètres et en optimisant le filtrage du signal.

Code source de la stratégie
/*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 )