Stratégie d'arbitrage à double moyenne mobile


Date de création: 2023-11-24 14:21:06 Dernière modification: 2023-11-24 14:21:06
Copier: 0 Nombre de clics: 768
1
Suivre
1617
Abonnés

Stratégie d’arbitrage à double moyenne mobile

Aperçu

Cette stratégie est une stratégie d’arbitrage utilisant la forme de la double ligne uniforme. Elle combine les deux sous-stratégies de l’inversion de la forme 123 et de l’élément de quantité de transaction limitée (FVE) pour effectuer des opérations d’arbitrage lorsque les deux émettent simultanément des signaux d’achat ou de vente.

Principe de stratégie

123 rétrogradation

Cette sous-stratégie est inspirée du livre de Ulf Jensen Comment je peux gagner trois fois plus sur le marché à terme. Elle émet des signaux dans les conditions suivantes:

  • Faire plus lorsque le cours de clôture est en hausse pendant 2 jours consécutifs et que le stoch est en dessous de 50 pendant 9 jours;
  • Lorsque le cours de clôture est en baisse pendant 2 jours consécutifs et que l’indicateur de Stoch est supérieur à 50 le 9e jour, le cours est à court.

Éléments à échange limité (FVE)

Le FVE est un indicateur purement transactionnel. Il détermine si des fonds sont entrés ou sortis en fonction de la volatilité des prix et de la taille du volume de transactions.

Un signal est émis lorsque l’indicateur FVE des deux dernières barres monte ou descend simultanément.

Analyse des avantages

Cette stratégie combine deux indicateurs pour déterminer la tendance du marché et l’orientation des fonds, ce qui permet d’éviter efficacement les faux signaux. Les deux sous-stratégies ont également des caractéristiques inverses et peuvent donc être utilisées comme arbitrage pour réaliser un profit.

En outre, la forme de double ligne égale représente une tendance cohérente à court et à moyen terme et a donc une plus grande stabilité.

Analyse des risques

La stratégie repose sur une forme linéaire uniforme, où des signaux erronés sont susceptibles d’entraîner des pertes en cas de choc du marché. De plus, le risque d’une défaite inversée est fréquent.

Il est possible de rendre la stratégie plus robuste en ajustant les paramètres de manière appropriée, ou de mettre en place des arrêts de perte pour contrôler le risque.

Direction d’optimisation

Il est possible de tester plus de types d’indicateurs de moyenne pour trouver la meilleure correspondance. D’autres indicateurs de jugement auxiliaires peuvent également être introduits, tels que les indicateurs de force et de faiblesse, les indicateurs de volatilité, etc., pour éviter les faux signaux.

En outre, il est possible d’étudier comment ajuster les paramètres en fonction de la dynamique des conditions du marché pour rendre les stratégies plus adaptables. Il est également possible d’explorer l’apprentissage automatique et les algorithmes de réseaux neuronaux pour réaliser l’adaptation des paramètres.

Résumer

Cette stratégie d’arbitrage à double ligne fournit un cadre de base pour le trading d’arbitrage à courte ligne et mérite une étude plus approfondie.

Code source de la stratégie
/*backtest
start: 2023-10-24 00:00:00
end: 2023-11-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 25/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
// The FVE is a pure volume indicator. Unlike most of the other indicators 
// (except OBV), price change doesn?t come into the equation for the FVE (price 
// is not multiplied by volume), but is only used to determine whether money is 
// flowing in or out of the stock. This is contrary to the current trend in the 
// design of modern money flow indicators. The author decided against a price-volume 
// indicator for the following reasons:
// - A pure volume indicator has more power to contradict.
// - The number of buyers or sellers (which is assessed by volume) will be the same, 
//     regardless of the price fluctuation.
// - Price-volume indicators tend to spike excessively at breakouts or breakdowns.
//
// 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


FVE(Period,Factor) =>
    pos = 0
    nRes = 0.0
    xhl2 = hl2
    xhlc3 = hlc3
    xClose = close
    xVolume = volume
    xSMAV = sma(xVolume, Period)
    nMF = xClose - xhl2 + xhlc3 - xhlc3[1]
    nVlm = iff(nMF > Factor * xClose / 100,  xVolume, 
             iff(nMF < -Factor * xClose / 100, -xVolume, 0))
    nRes := nz(nRes[1],0) + ((nVlm / xSMAV) / Period) * 100
    pos := iff(nRes > nRes[1] and nRes > nRes[2], 1,
             iff(nRes < nRes[1] and nRes < nRes[2], -1, nz(pos[1], 0)))   
    pos

strategy(title="Combo Backtest 123 Reversal & Finite Volume Elements (FVE)", 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(18, minval=1)
Factor = input(0.6, minval=0.1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posFVE = FVE(Period,Factor)
pos = iff(posReversal123 == 1 and posFVE == 1 , 1,
	   iff(posReversal123 == -1 and posFVE == -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 )