Stratégie de négociation à double facteur

Auteur:ChaoZhang est là., Date: 2023-12-05 17:56:27 Je suis désolé
Les étiquettes:

img

Résumé

La stratégie de négociation à double cycle de facteurs est une stratégie de négociation quantitative qui combine deux types d'indicateurs techniques différents pour générer des signaux de négociation et suivre les tendances du marché pour des rendements excédentaires.

L'avantage de cette stratégie est qu'elle peut trouver des opportunités de trading en combinant différents facteurs et la double confirmation peut améliorer la fiabilité du signal et réduire la probabilité de transactions erronées.

Principes de stratégie

La stratégie se compose de deux parties:

  1. 123 Stratégie d'inversion Cette stratégie provient du livre How I Triple My Money in the Futures Market d'Ulf Jensen. Sa logique de trading est la suivante: lorsque le prix de clôture est supérieur au prix de clôture précédent pendant deux jours consécutifs, et que la lente K-line de 9 jours est inférieure à 50, passez long; lorsque le prix de clôture est inférieur au prix de clôture précédent pendant deux jours consécutifs, et que la rapide K-line de 9 jours est supérieure à 50, passez court.

  2. Stratégie de soutien/résistance
    Cette stratégie génère des signaux en jugeant si les prix franchissent les niveaux de support ou de résistance clés. Lorsque le prix franchit le prix le plus élevé de la journée de négociation précédente, il indique un signal haussier; lorsque le prix franchit le prix le plus bas de la journée de négociation précédente, il indique un signal baissier.

En combinant les signaux des deux stratégies ci-dessus, les positions ouvertes lorsque les deux signaux sont cohérents, autrement les positions claires.

Analyse des avantages

Cette stratégie de négociation à double cycle de facteurs présente les avantages suivants:

  1. La conception multifactorielle assure une fiabilité élevée du signal. La stratégie d'inversion 123 et la stratégie de support/résistance se vérifient mutuellement et peuvent réduire les signaux erronés.

  2. Le mécanisme cyclique permet à la stratégie de s'adapter aux changements du marché et de contrôler efficacement les pertes unilatérales.

  3. L'utilisation de l'indicateur Stochastique à 9 jours peut filtrer le bruit du marché et donner des signaux plus clairs.

  4. Il est moins risqué que les stratégies à facteur unique et présente des retombées plus faibles.

Analyse des risques

Cette stratégie comporte également des risques:

  1. Il est difficile de bien saisir les tendances sur les marchés latéraux, et les arrêts fréquents et les ouvertures inversées augmenteront les coûts de transaction.

  2. Les paramètres de Stochastics affecteront la qualité du signal. Des paramètres incorrects peuvent entraîner un déplacement erroné du signal et une dégradation de la qualité. Les paramètres doivent être testés et optimisés à plusieurs reprises.

  3. Bien que la conception à deux facteurs améliore la qualité du signal, elle augmente également l'impact du "bruit" du marché sur la stratégie.

Directions d'optimisation

Nous pouvons optimiser encore cette stratégie à partir des aspects suivants:

  1. Test de stochastique de différentes longueurs de cycle pour trouver la combinaison optimale de paramètres permettant d'éliminer le bruit du marché

  2. Ajouter un filtre de tendance pour filtrer les marchés latéraux et n'ouvrir que des positions dans des tendances claires

  3. Optimiser l'algorithme de réglage de la ligne de stop loss pour réduire les coûts de transaction tout en assurant un stop loss efficace

  4. Testez différentes combinaisons de facteurs pour trouver des combinaisons de facteurs avec des signaux de trading plus clairs et des stratégies plus stables

Résumé

Grâce à la conception à double facteur, cette stratégie a obtenu une meilleure qualité de signal et des rendements ajustés au risque. Dans le même temps, l'utilisation du cycle de négociation contrôle efficacement les pertes sur le marché unilatéral. La stratégie a trouvé un bon équilibre entre risque et rendement. Des recherches plus approfondies sont encore nécessaires sur l'optimisation des paramètres, les paramètres de contrôle des risques, etc. pour obtenir de meilleures performances de la stratégie.


/*backtest
start: 2023-11-04 00:00:00
end: 2023-12-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 13/11/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
// Cueing Off Support And Resistance Levels, by Thom Hartle 
// modified by HPotter for trade signals.
// 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

COSRL(SigVal) =>
    pos = 0.0
    xLow = low
    xHigh = high
    xHighD = security(syminfo.tickerid,"W", high[1])
    xLowD  = security(syminfo.tickerid,"W", low[1])
    sigpre1 = iff(xHigh <= xLowD, -1,
                 iff(xLow >= xHighD, 1, nz(pos[1], 0))) 
    sigpre2 = iff( xHigh <= xHighD, -1,
                 iff(xLow >= xLowD, 1, nz(pos[1], 0))) 
    pos := SigVal ? sigpre1 : sigpre2
    pos

strategy(title="Combo Backtest 123 Reversal & Cueing Off Support And Resistance Levels", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
SigVal = input(true, title="To Line \ From Line")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posCOSRL = COSRL(SigVal)
pos = iff(posReversal123 == 1 and posCOSRL == 1 , 1,
	   iff(posReversal123 == -1 and posCOSRL == -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