Une stratégie de trading quantitative qui combine les moyennes mobiles inversées et futures


Date de création: 2023-12-08 12:00:35 Dernière modification: 2023-12-08 12:00:35
Copier: 0 Nombre de clics: 624
1
Suivre
1621
Abonnés

Une stratégie de trading quantitative qui combine les moyennes mobiles inversées et futures

Aperçu

Cette stratégie est une combinaison de la stratégie 123 inverse et de la stratégie forward moving average, permettant une stratégie de négociation quantifiée d’entrée ou de sortie lorsque les deux stratégies émettent simultanément des signaux. La stratégie est principalement utilisée dans le marché à terme des indices boursiers, permettant de négocier des positions à moyen terme en capturant une combinaison de signaux de revers à court terme et de signaux de tendance à moyen terme.

Principe de stratégie

123 stratégies de retour

La stratégie de 123 inversions provient du livre Comment j’ai triplé mon capital sur le marché à terme. Cette stratégie est utilisée pour faire des gains lorsque le prix de clôture est inversé pendant deux jours consécutifs et lorsque la ligne K lente est inférieure à 50 pendant neuf jours consécutifs; faire des pertes lorsque le prix de clôture est inversé pendant deux jours consécutifs et lorsque la ligne K rapide est supérieure à 50 pendant neuf jours consécutifs.

Stratégie pour le futur

Les lignes de démarcation futures (FLD) sont des stratégies de suivi de tendances basées sur les lois cycliques de la fluctuation des prix. Les lignes de démarcation futures (FLD) sont basées sur le déplacement de la moyenne, de la hauteur ou de la basse valeur des prix vers le futur pendant environ un demi-cycle.

Analyse des avantages

Cette stratégie, combinée à une stratégie de renversement et à une stratégie de suivi de tendance, permet de capturer simultanément des opportunités de renversement de marché à court terme et des tendances à moyen et à long terme, permettant des transactions quantifiées à plusieurs échelles de temps. La stratégie de renversement offre des opportunités de profit à court terme, la partie de suivi de tendance garantissant que l’orientation globale des transactions est conforme à la tendance et que les risques de transaction sont efficacement contrôlés.

Analyse des risques

Cette stratégie est principalement exposée au risque de fausses ruptures de signaux de retournement et d’erreurs de jugement de la ligne FLD. Pour les premiers, il est possible de confirmer le signal de retournement en ajustant les paramètres ou en ajoutant d’autres indicateurs de jugement auxiliaires pour améliorer la précision de jugement. Pour les seconds, il est nécessaire d’optimiser les paramètres pour s’assurer qu’ils décrivent plus précisément la loi de la bande de fréquence du marché.

Direction d’optimisation

  1. Amélioration de la stratégie de retour en arrière, ajout d’autres indicateurs pour filtrer les signaux de confirmation et réduire la probabilité de fausse percée
  2. Comparer les différents paramètres de la ligne FLD pour voir si la loi des cycles est plus précise
  3. Ajout d’une logique de stop-loss pour contrôler le risque de perte individuelle
  4. Tester l’effet des paramètres sur les différentes variétés

Résumer

La stratégie combine une philosophie de négociation de retournement et de tendance pour réaliser des bénéfices stables dans un délai moyen à court terme. Elle peut être optimisée à l’avenir en termes de confirmation de l’exactitude des signaux, de description de la précision des tendances et de contrôle des risques, ce qui rend la gamme de paramètres de la stratégie plus large et plus stable.

Code source de la stratégie
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 28/08/2020
// 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
//  An FLD is a line that is plotted on the same scale as the price and is in fact the 
//  price itself displaced to the right (into the future) by (approximately) half the 
//  wavelength of the cycle for which the FLD is plotted. There are three FLD's that can be 
//  plotted for each cycle:
//    An FLD based on the median price.
//    An FLD based on the high price.
//    An FLD based on the low price.
//
// 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


FLD(Period,src) =>
    pos = 0
    pos := iff(src[Period] < close , 1,
             iff(src[Period] > close, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & FLD's - Future Lines of Demarcation", shorttitle="Combo", overlay = true)
Length = input(15, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Period = input(title="Period", defval=40)
src = input(title="Source", type=input.source, defval=close)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posFLD = FLD(Period,src)
pos = iff(posReversal123 == 1 and posFLD == 1 , 1,
	   iff(posReversal123 == -1 and posFLD == -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 )