Stratégie de négociation quantitative intégrant l'inversion et les lignes de démarcation futures

Auteur:ChaoZhang est là., Date: 2023-12-08 12h35
Les étiquettes:

img

Résumé

Cette stratégie intègre la stratégie d'inversion 123 et la stratégie de lignes de démarcation futures (FLD) pour mettre en œuvre une stratégie de trading quantitative qui entre ou sort des positions lorsque les deux stratégies génèrent des signaux simultanément.

Principaux

123 Stratégie d'inversion

La stratégie d'inversion 123 provient du livre Comment j'ai triplé mon argent sur le marché des contrats à terme. Elle est longue lorsque le prix de clôture montre des modèles d'inversion pendant deux jours consécutifs et que le stochastique lent de 9 jours est inférieur à 50; elle est courte lorsque le prix de clôture montre des modèles d'inversion pendant deux jours consécutifs et que le stochastique rapide de 9 jours est supérieur à 50.

Les lignes futures de la stratégie de démarcation

La stratégie des lignes de démarcation futures (FLD) est une stratégie de suivi des tendances basée sur la périodicité des fluctuations de prix.

Analyse des avantages

Cette stratégie combine des stratégies d'inversion et de suivi de tendance, capturant à la fois les opportunités d'inversion à court terme et les directions de tendance à moyen et long terme sur plusieurs délais pour le trading quantitatif.

Analyse des risques

Les principaux risques de cette stratégie proviennent de fausses ruptures de signaux d'inversion et d'erreurs dans les jugements de la ligne FLD. Pour les premiers, les paramètres peuvent être ajustés pour confirmer les signaux d'inversion ou ajouter d'autres indicateurs auxiliaires pour améliorer la précision. Pour les derniers, les paramètres doivent être optimisés pour s'assurer que FLD décrit les cycles du marché plus précisément.

Directions d'optimisation

  1. Améliorer la stratégie d'inversion en ajoutant d'autres indicateurs aux signaux filtrés et en réduisant les possibilités de fausse rupture
  2. Comparer les différents paramètres de FLD pour mieux décrire les schémas cycliques
  3. Ajouter une logique de stop loss pour contrôler les risques de perte unique
  4. Efficacité des paramètres d'essai pour différents produits

Conclusion

Cette stratégie combine des concepts d'inversion et de suivi de tendance pour des bénéfices stables sur des délais à moyen et court terme.


/*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 )

Plus de