Stratégie d'arbitrage à moyenne mobile double

Auteur:ChaoZhang est là., Date: 2023-11-24 14h21min 06 secondes
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie d'arbitrage qui utilise des formations doubles de moyennes mobiles pour effectuer des transactions d'arbitrage.

La logique de la stratégie

123 Modèle d'inversion

Cette sous-stratégie est tirée du livre Comment j'ai triplé mon argent sur le marché des contrats à terme d'Ulf Jensen.

  • Allez long lorsque le prix de clôture augmente pendant 2 jours consécutifs et que le stock lent de 9 jours est inférieur à 50.
  • Allez court lorsque le prix de clôture tombe pendant 2 jours consécutifs et que le stock rapide de 9 jours est supérieur à 50.

Éléments de volume fini (EVF)

Le FVE est un indicateur de volume pur. Il juge si l'argent circule ou non en fonction de la fourchette de mouvements de prix et du volume des transactions.

Il donne des signaux lorsque les deux dernières barres de l'indicateur FVE montent ou tombent ensemble.

Analyse des avantages

Cette stratégie combine deux types d'indicateurs pour déterminer la tendance du marché et le flux de trésorerie, ce qui peut efficacement éviter de faux signaux.

En outre, la double formation des moyennes mobiles représente une cohérence entre les tendances à court et à moyen terme, offrant ainsi une plus grande stabilité.

Analyse des risques

Cette stratégie repose sur des formations de moyennes mobiles, qui peuvent facilement générer de faux signaux et entraîner des pertes lorsque le marché fluctue.

Les risques peuvent être réduits en ajustant correctement les paramètres pour rendre la stratégie plus robuste, ou en définissant un stop loss pour contrôler les risques.

Directions d'optimisation

D'autres indicateurs d'assistance comme l'indice de force et l'indice de volatilité peuvent également être introduits pour éviter de faux signaux.

En outre, des recherches peuvent être menées sur la façon d'ajuster dynamiquement les paramètres en fonction des conditions du marché afin d'améliorer l'adaptabilité.

Résumé

Cette stratégie d'arbitrage à moyenne mobile double intègre deux indicateurs de type inversion pour le jugement, ce qui peut atténuer les risques dans une certaine mesure.


/*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 )

Plus de