Stratégie de combinaison d'inversion à double facteur et d'amélioration de la tendance prix-volume


Date de création: 2024-01-25 14:46:36 Dernière modification: 2024-01-25 14:46:36
Copier: 1 Nombre de clics: 612
1
Suivre
1617
Abonnés

Stratégie de combinaison d’inversion à double facteur et d’amélioration de la tendance prix-volume

Aperçu

Cette stratégie combine les deux sous-stratégies du double-facteur inverse et de la tendance du volume de prix amélioré pour obtenir un signal de négociation intégré. La stratégie du double-facteur inverse est basée sur l’idée de P183 dans le livre d’Ulf Jensen et génère un signal lorsque le cours de liquidation est inversé sur deux jours et que des conditions d’indicateur aléatoires sont établies.

Principe de stratégie

La stratégie du double facteur inverse utilise le principe de l’inversion des cours de clôture sur deux jours et le jugement de la pluralité d’indicateurs aléatoires. Un signal de tête vide est produit si le prix de clôture du jour précédent était élevé et que le prix de clôture de la clôture a été inversé aujourd’hui et que l’indicateur aléatoire rapide est inférieur à l’indicateur aléatoire lent et que l’indicateur aléatoire rapide est supérieur à 50.

La formule de calcul est la suivante: PxVFactor = PriceFactor + Scale * CumPVT, où PriceFactor est le facteur de prix et CumPVT est l’indicateur d’énergie cumulée. Ensuite, calculez la moyenne mobile simple de longueur de jour de PxVFactor, comparée à la valeur actuelle de PxVFactor, pour déterminer la tendance et la force du marché.

La stratégie combinée prend en compte les signaux des deux sous-stratégies et produit un signal de plus-value correspondant lorsque le double facteur inverse et la tendance du volume de prix amélioré sont en hausse ou en baisse.

Analyse des avantages

  • Les stratégies de retournement à deux facteurs, combinant des retournements de prix avec des jugements aléatoires, permettent d’identifier efficacement les extrêmes à court terme et de saisir les opportunités de retournement.
  • La stratégie d’amélioration de la tendance des prix et du volume de l’offre a ajouté un facteur de volume de l’offre, ce qui permet de déterminer le moment où la tendance du marché s’est stabilisée.
  • Les deux stratégies se vérifient mutuellement, ce qui améliore la stabilité et évite les faux signaux.
  • Utilisez des paramètres de courte durée comme 9 jours ou 14 jours, adaptés aux opérations de jour et de courte durée.

Risque et optimisation

  • Les stratégies de retournement comportent un risque de prise en compte et nécessitent la mise en place d’un stop loss pour contrôler le risque.
  • Les stratégies de mesure des prix sont susceptibles d’accroître les retraits et d’accroître les pertes si le marché est mal orienté.
  • Il est possible de tester si le poids de PriceFactor et de CumPVT est optimal et d’optimiser davantage.
  • Il est possible de tester le taux de rétractation des gains sous différents paramètres de jours, en choisissant le paramètre optimal.

Résumer

En résumé, la stratégie combinant un double facteur de retournement et une tendance à la quantité de prix améliorée, combinée à une analyse des deux dimensions du retournement et de la tendance, peut se vérifier mutuellement et améliorer la stabilité. Il est nécessaire d’ajouter un indicateur de tendance comme jugement auxiliaire dans une stratégie de retournement facile à manipuler.

Code source de la stratégie
/*backtest
start: 2024-01-17 00:00:00
end: 2024-01-24 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 23/02/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 related article is copyrighted material from
//  Stocks & Commodities.
//
// 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


MPVT(Level,Scale,Length) =>
    pos = 0.0
    xCumPVT = 0.0
    xOHLC4 = ohlc4
    xV = volume
    rV = xV / 50000
    xCumPVT := nz(xCumPVT[1]) + (rV * (xOHLC4 - xOHLC4[1]) / xOHLC4[1])
    nRes = Level + Scale * xCumPVT
    xMARes = sma(nRes, Length)
    pos:= iff(nRes > xMARes, 1,
           iff(nRes < xMARes, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Modified Price-Volume Trend", 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, "---- Price-Volume Trend ----")
LevelPVT = input(1)
Scale = input(1)
LengthPVT = input(23)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMPVT = MPVT(LevelPVT,Scale,LengthPVT)
pos = iff(posReversal123 == 1 and posMPVT == 1 , 1,
	   iff(posReversal123 == -1 and posMPVT == -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 )