Stratégie quantitative basée sur l'inversion et la force relative comparative

Auteur:ChaoZhang est là., Date: 2023-12-13 17:17:10 La date est fixée par le Conseil.
Les étiquettes:

img

Résumé

Cette stratégie combine d'abord la stratégie d'inversion proposée par Ulf Jensen à la page 183 de son livre Comment j'ai triplé mon argent sur le marché des contrats à terme avec l'indicateur de force relative comparative pour obtenir des signaux plus forts.

L'idée principale de cette stratégie est de juger par plusieurs facteurs en même temps. En combinant le facteur d'inversion et le signal de force relative comparative, il ne passera des ordres d'achat ou de vente que lorsque les deux donnent le même signal, afin d'améliorer la stabilité de la stratégie.

Principe de stratégie

La première partie est une stratégie d'inversion. La stratégie est longue lorsque: le prix de clôture a augmenté continuellement au cours des deux derniers jours, et la ligne lente stochastique de 9 jours est inférieure à 50. La condition de clôture est: le prix de clôture a chuté continuellement au cours des deux derniers jours, et la ligne rapide stochastique de 9 jours est supérieure à 50.

La deuxième partie est l'indicateur de force relative comparative. Cet indicateur calcule la moyenne mobile du taux de variation du prix de clôture de N jours entre le stock cible et l'indice de référence, et le compare avec la zone d'achat, la zone de vente et la zone de clôture prédéfinies. Il va long lorsque l'indicateur traverse au-dessus de la zone d'achat, court lorsqu'il tombe en dessous de la zone de vente et ferme les positions lorsque l'indicateur est long et tombe en dessous de la zone de clôture, et lorsqu'il est court et l'indicateur monte au-dessus de la zone de clôture.

Cette stratégie combinée évalue les signaux des deux parties en même temps. Elle ne passera des ordres d'achat ou de vente que lorsque les deux donnent le même signal (achat ou vente).

Analyse des avantages

Cette stratégie combine les avantages des facteurs d'inversion et des facteurs de force relative. La stratégie d'inversion peut capturer les extrêmes à court terme; la stratégie de force relative peut saisir la tendance principale du marché plus large. Les signaux des deux stratégies peuvent améliorer la fiabilité et filtrer certains faux signaux causés par le bruit.

En outre, l'indicateur stochastique, en tant qu'indicateur permettant de distinguer les zones de surachat et de survente, peut mieux déterminer les points d'inversion.

Analyse des risques

Le plus grand risque des stratégies d'inversion est qu'elles ne peuvent pas déterminer le moment des inversions du marché, ce qui peut entraîner des pertes continues après l'inversion du marché.

Dans ce cas, la stratégie d'inversion peut jouer un rôle dans le filtrage pour réduire les transactions inutiles.

Directions d'optimisation

Cette stratégie peut être optimisée dans les aspects suivants:

  1. Testez plus de facteurs d'inversion pour trouver de meilleures stratégies d'inversion.

  2. Tester et optimiser les paramètres de l'indicateur de résistance relative pour trouver la combinaison optimale de paramètres, car les paramètres actuels sont subjectifs et probablement non optimisés.

  3. Ajouter des stratégies de stop loss. Actuellement, il n'y a pas de stop loss, ajouter un stop loss raisonnable peut contrôler le risque à la baisse.

  4. Tester différents indices de référence pour calculer la résistance relative au stock cible et trouver le meilleur indice de correspondance.

Conclusion

Cette stratégie combine des facteurs d'inversion et des facteurs de force relative pour le trading. Elle utilise les avantages des deux pour améliorer la qualité du signal et est une stratégie combinée relativement mature. Il y a encore beaucoup de place pour l'optimisation en ajustant les paramètres, en ajoutant des stratégies de stop loss et en ajustant les méthodes de combinaison de stratégies pour obtenir de meilleurs résultats.


/*backtest
start: 2022-12-06 00:00:00
end: 2023-12-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 30/10/2019
// 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
// Comparative Relative Strength Strategy for ES
//
// 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

CRS(a, b, len, BuyBand, SellBand, CloseBand) =>
    pos = 0.0
    as = security(a, timeframe.period, close) 
    bs = security(b, timeframe.period, close) 
    nRes = sma(as/bs, len)
    pos := iff(nRes > BuyBand, 1,
	         iff(nRes < SellBand, -1,
	          iff(pos[1] == 1 and nRes < CloseBand, 0,
    	       iff(pos[1] == -1 and nRes > CloseBand, 0, nz(pos[1], 0)))))
    pos

strategy(title="Combo Backtest 123 Reversal & Comparative Relative Strength", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
a = syminfo.tickerid 
b = input("BTC_USDT:swap", type=input.symbol) 
LengthCRS = input(10) 
BuyBand = input(0.9988, step = 0.0001)
SellBand = input(0.9960, step = 0.0001)
CloseBand = input(0.9975, step = 0.0001)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posCRS = CRS(a, b, LengthCRS, BuyBand, SellBand, CloseBand)
pos = iff(posReversal123 == 1 and posCRS == 1 , 1,
	   iff(posReversal123 == -1 and posCRS == -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