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 stratégie est composée de deux sous-stratégies:
123 Système d'inversion: Il est tiré du livre
L'oscillateur Gann Swing: Il est adapté du livre de Robert Krausz
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.
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.
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.
La stratégie peut être optimisée dans les aspects suivants:
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 )