Stratégie d'arbitrage à double inversion

Auteur:ChaoZhang est là., Date: 2024-02-06 09:58:04 Je vous en prie.
Les étiquettes:

img

Résumé

La stratégie d'arbitrage à double inversion est un algorithme d'arbitrage qui intègre des indicateurs à double inversion. Il combine le système d'inversion 123 et les sous-stratégies de l'oscillateur swing Gann et génère des signaux de trading lorsque les deux sous-stratégies émettent des signaux en même temps pour effectuer des opérations d'arbitrage.

La logique de la stratégie

La stratégie est composée de deux sous-stratégies:

  1. 123 Système d'inversion: Il est tiré du livre Comment j'ai triplé mon argent sur le marché des contrats à terme par Ulf Jensen, page 183. Ses règles de trading sont: lorsque le prix de clôture est supérieur au prix de clôture précédent et inférieur au prix de clôture il y a 2 jours, allez long lorsque la ligne K lente est inférieure à 50; lorsque le prix de clôture est inférieur au prix de clôture précédent et supérieur au prix de clôture il y a 2 jours, allez court lorsque la ligne K rapide est supérieure à 50.

  2. L'oscillateur Gann Swing: Il est adapté du livre de Robert Krausz A W.D. Gann Treasure Discovered. Il juge la direction des fluctuations du marché en calculant la hausse et la baisse des prix les plus élevés et les plus bas au cours d'une certaine période.

La logique de trading de cette stratégie d'arbitrage est la suivante: lorsque les directions de signal des deux sous-stratégies sont cohérentes, des signaux de trading réels sont générés.

Analyse des avantages

Le plus grand avantage de cette stratégie est qu'en intégrant les signaux des deux sous-stratégies, elle peut filtrer efficacement les faux signaux et améliorer l'exactitude des signaux de trading. Les deux sous-stratégies ont chacune leurs propres forces. Le système d'inversion 123 peut capturer les tendances d'inversion soudaines, tandis que l'oscillateur Gann swing peut déterminer la maturité des inversions de tendance. La combinaison des deux peut rendre les signaux de trading plus fiables, améliorant ainsi la stabilité de la stratégie.

Analyse des risques

Le principal risque de cette stratégie est que la probabilité de directions de signaux de négociation incohérentes des deux sous-stratégies est relativement grande, ce qui peut conduire à des signaux de négociation insuffisants.

Pour atténuer les risques, les paramètres des sous-stratégies peuvent être ajustés pour augmenter modérément la fréquence de négociation, ou d'autres indicateurs peuvent être combinés pour aider à filtrer les faux signaux.

Directions d'optimisation

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

  1. Ajuster les paramètres des sous-stratégies afin d'optimiser la fréquence des opérations;
  2. ajouter des jugements d'autres indicateurs techniques pour améliorer la qualité du signal;
  3. Optimiser les pondérations des sous-stratégies en fonction des différents produits et des délais;
  4. Ajouter des mécanismes de stop loss pour contrôler les pertes liées à une seule transaction.

Résumé

La stratégie d'arbitrage à double inversion forme des signaux de trading relativement forts en intégrant deux types différents de stratégies d'inversion. Elle peut filtrer efficacement le bruit et améliorer la qualité du signal, ce qui convient à la capture des opportunités d'inversion sur le marché. Cependant, la probabilité de signaux incohérents des sous-stratégies est relativement grande, ce qui peut entraîner une fréquence de trading insuffisante. En outre, les paramètres des stratégies de combinaison eux-mêmes sont assez complexes, nécessitant suffisamment de tests et d'optimisation afin d'obtenir les meilleurs résultats.


/*backtest
start: 2024-01-06 00:00:00
end: 2024-02-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 04/11/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
// The Gann Swing Oscillator has been adapted from Robert Krausz's book, 
// "A W.D. Gann Treasure Discovered". The Gann Swing Oscillator helps 
// define market swings. 
//
// 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

    
GannSO(Length) =>
    pos = 0.0
    xGSO = 0.0
    xHH = highest(Length)
    xLL = lowest(Length)
    xGSO:= iff(xHH[2] > xHH[1] and xHH[0] > xHH[1], 1,
             iff(xLL[2] < xLL[1] and xLL[0] < xLL[1], -1, nz(xGSO[1],0)))
    pos := iff(xGSO > 0, 1,
    	     iff(xGSO < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Gann Swing Oscillator", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthGSO = input(5, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posGannSO = GannSO(LengthGSO)
pos = iff(posReversal123 == 1 and posGannSO == 1 , 1,
	   iff(posReversal123 == -1 and posGannSO == -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