Stratégie de trading backtest du centre de gravité


Date de création: 2023-12-12 16:56:51 Dernière modification: 2023-12-12 16:56:51
Copier: 0 Nombre de clics: 677
1
Suivre
1621
Abonnés

Stratégie de trading backtest du centre de gravité

Aperçu

Une stratégie de trading basée sur les moyennes mobiles. Elle calcule la courbe centrale du prix, la position du centre de gravité, et construit un canal de prix, qui sert de corridor pour la cotation de l’actif. La stratégie peut être modifiée dans les paramètres d’entrée pour faire plus ou faire moins.

Principe de stratégie

La stratégie calcule la position du centre de gravité à l’aide d’une fonction de régression linéaire. Plus précisément, elle calcule la valeur de la régression linéaire du prix de clôture de la période de Longitude, c’est-à-dire le centre de la courbe de prix. Puis, sur cette base, construisez un canal de prix en déplaçant le pourcentage vers le haut et vers le bas.

Analyse des avantages

Il s’agit d’une stratégie de percée très simple, dont les principaux avantages sont:

  1. Les idées sont claires et les réalisations faciles à comprendre.
  2. Les résultats des tests de détection ont été positifs, et la capacité de mise en œuvre a été démontrée.
  3. Les paramètres sont flexibles et peuvent être adaptés à différents environnements de marché.
  4. La fonction inverse peut être configurée pour une utilisation bidirectionnelle.

Analyse des risques

Cette stratégie comporte aussi des risques:

  1. Il peut y avoir un risque de suradaptation dans le processus de retesting. Les paramètres dans le disque dur doivent être ré-optimisés.
  2. L’échec de la percée pourrait entraîner des pertes importantes.
  3. La fréquence des transactions peut être élevée, ce qui nécessite un contrôle de l’utilisation des fonds.

Il est possible de contrôler le risque en ajustant les paramètres Bands, Length, etc. Il est également possible de définir un stop-loss pour limiter la perte maximale.

Direction d’optimisation

Cette stratégie peut être optimisée:

  1. Les signaux de filtrage des indicateurs de tendance sont combinés afin d’éviter le trading à contre-courant.
  2. L’augmentation du mécanisme de prévention des pertes.
  3. Optimisation des paramètres pour améliorer le ratio profit/perte.
  4. Augmenter le contrôle des positions et réduire les risques.

Résumer

La stratégie de trading de rétrospective de concentration est une stratégie de percée simple. Elle a une pensée claire, une forte faisabilité et un paramétrage flexible. Il existe également un certain risque qui nécessite un contrôle d’optimisation approprié.

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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 15/03/2018
// The indicator is based on moving averages. On the basis of these, the 
// "center" of the price is calculated, and price channels are also constructed, 
// which act as corridors for the asset quotations.
//
// You can change long to short in the Input Settings
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Center Of Gravity Backtest", shorttitle="CFO", overlay = true)
Length = input(20, minval=1)
m = input(5, minval=0)
Percent = input(1, minval=0)
SignalLine = input(1, minval=1, maxval = 2, title = "Trade from line (1 or 2)")
reverse = input(false, title="Trade reverse")
xLG = linreg(close, Length, m)
xLG1r = xLG + ((close * Percent) / 100)
xLG1s = xLG - ((close * Percent) / 100)
xLG2r = xLG + ((close * Percent) / 100) * 2
xLG2s = xLG - ((close * Percent) / 100) * 2
xSignalR = iff(SignalLine == 1, xLG1r, xLG2r)
xSignalS = iff(SignalLine == 1, xLG1s, xLG2s)
pos = iff(close > xSignalR, 1,
       iff(close < xSignalS, -1, nz(pos[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)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(xLG, color=blue, title="CFO")
plot(xLG1r, color=green, title="LG1r")
plot(xLG2r, color=green, title="LG2r")
plot(xLG1s, color=red, title="LG1s")
plot(xLG2s, color=red, title="LG2s")