Stratégie intertemporelle à moyenne mobile pondérée basée sur la volatilité réelle


Date de création: 2024-01-17 15:09:28 Dernière modification: 2024-01-17 15:09:28
Copier: 1 Nombre de clics: 572
1
Suivre
1617
Abonnés

Stratégie intertemporelle à moyenne mobile pondérée basée sur la volatilité réelle

Aperçu

Cette stratégie utilise la True Range et la WMA pour construire un indicateur de tendance à travers les périodes. Elle dispose également d’un mécanisme d’augmentation de la pyramide de plusieurs positions cumulées, ainsi que de plusieurs mécanismes de stop-loss pour rechercher des gains stables.

Principe de stratégie

La stratégie commence par calculer les amplitudes ascendantes (sube) et descendantes (baja), puis les WMA des cycles rapide (corto) et lente (largo) respectivement. Le différentiel de la ligne rapide et lente est à nouveau calculé par WMA pour l’indicateur (ind). Lorsque l’indicateur est passé à 0, un signal d’achat est généré et un signal de vente est généré lorsque l’indicateur est passé à 0.

Après l’entrée en bourse, la stratégie prévoit 5 positions pour réaliser la mise en position de la pyramide de manière équivalente à ((double) l’accumulation. En même temps, un mécanisme de stop-loss est mis en place, puis lors de l’ouverture de la position, il faut déterminer si la fluctuation actuelle est inférieure à la ligne de stop-loss, afin de contrôler le risque.

Analyse des avantages

Cette stratégie intègre des mécanismes tels que le jugement intermédiaire, la pyramide de mise en position et les arrêts multiples pour contrôler efficacement les risques et rechercher des bénéfices stables.

Le jugement interphasé permet de déterminer la tendance en combinant des lignes rapides et lentes, ce qui permet de filtrer efficacement le bruit du marché et d’identifier les points de basculement de la tendance. La position en pyramide permet d’obtenir plus de bénéfices au début de la tendance et le système de stop loss multiple permet de contrôler efficacement les pertes individuelles.

Analyse des risques

Le risque principal de cette stratégie est qu’un événement inattendu peut entraîner un renversement rapide de la tendance, déclenchant un cutoff de stop loss et entraînant des pertes. En outre, une mauvaise configuration des paramètres peut affecter la stabilité de la stratégie.

Il est possible de gérer le risque d’un renversement de la tendance en assouplissant de manière appropriée les limites de stop-loss. Le réglage des paramètres d’optimisation, l’ajustement des paramètres de cycle, le nombre de positions, etc. peuvent améliorer la stabilité de la stratégie.

Direction d’optimisation

Cette stratégie peut être optimisée dans les domaines suivants:

  1. L’ajout d’indicateurs statistiques, combinés à des paramètres de correction d’indicateurs tels que le taux de volatilité et le volume des transactions, rend la stratégie plus adaptative.

  2. Augmentation de la capacité de jugement des modèles d’apprentissage automatique, utilisation de modèles d’apprentissage en profondeur tels que LSTM pour l’aide au jugement et amélioration de l’exactitude des stratégies.

  3. Optimiser les mécanismes de gestion des positions et envisager d’ajuster la marge d’augmentation des positions en fonction de la volatilité afin de rendre la croissance des positions plus raisonnable.

  4. Le modèle de couverture à terme, combiné avec le modèle de couverture à terme, utilise le arbitrage à terme pour contrôler davantage le risque.

Résumer

Cette stratégie est globalement une stratégie de tendance à travers le cycle basée sur des indicateurs d’amplitude réelle, avec un mécanisme d’hypothèque pyramidale et de stop-loss multiple, permettant de contrôler efficacement le risque et de rechercher des bénéfices stables. C’est une stratégie de négociation quantitative très pratique. Cependant, il faut toujours faire attention à l’inversion de tendance et à l’optimisation des paramètres, qui peut être optimisée davantage en termes de statistiques et d’apprentissage automatique.

Code source de la stratégie
/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © MaclenMtz

//@version=5
strategy("[MACLEN] Rangos", shorttitle="Rangos [https://t.me/Bitcoin_Maclen]", overlay=false )

//------WINDOW----------

i_startTime = input(defval = timestamp("01 Jan 2022 00:00 -0700"), title = "Start Time", group = "Backtest Window")
i_endTime = input(defval = timestamp("31 Dec 2025 00:00 -0700"), title = "End Time")
window = true

//-----------------------------

sube = close>close[1] ? ta.tr : 0
baja = close<close[1] ? ta.tr : 0

corto = input(10)
largo = input(30)
suavizado = input(10)

fastDiff = ta.wma(sube, corto) - ta.wma(baja,corto)
slowDiff = ta.wma(sube, largo) - ta.wma(baja, largo)
ind = ta.wma(fastDiff - slowDiff, suavizado)

iColor = ind>0 ? color.green : ind<0 ? color.red : color.black
plot(ind, color=iColor)
plot(0, color=color.white)

long = ind[1]<ind and ind[2]<ind[1] and ind<0
short = ind[1]>ind and ind[2]>ind[1] and ind>0

plotshape(long and not long[1], style = shape.xcross, color=color.green, location=location.bottom, size=size.tiny)
plotshape(short and not short[1], style = shape.xcross, color=color.red, location=location.top, size=size.tiny)

//Contratos
contrato1 = input(50000)/(16*close)
c1 = contrato1
c2 = contrato1
c3 = contrato1*2
c4 = contrato1*4
c5 = contrato1*8

//cap_enopentrade = strategy.opentrades == 1 ? c1: strategy.opentrades == 2 ? c1+c2: strategy.opentrades == 3 ? c1+c2+c3: strategy.opentrades == 4 ? c1+c2+c3+c4: strategy.opentrades == 5 ? c1+c2+c3+c4+c5 : 0
openprofit_porc = math.round((close-strategy.position_avg_price)/strategy.position_avg_price * 100,2)

porc_tp = input.float(6.5)
safe = input(-6)

//----------------Strategy---------------------------

if strategy.opentrades == 0
    strategy.entry('BUY1', strategy.long, qty=c1, when = long and not long[1] and window)

if strategy.opentrades == 1
    strategy.entry('BUY2', strategy.long, qty=c2, when = long and not long[1] and window and openprofit_porc<safe)

if strategy.opentrades == 2
    strategy.entry('BUY3', strategy.long, qty=c3, when = long and not long[1] and window and openprofit_porc<safe)

if strategy.opentrades == 3
    strategy.entry('BUY4', strategy.long, qty=c4, when = long and not long[1] and window and openprofit_porc<safe)

if strategy.opentrades == 4
    strategy.entry('BUY5', strategy.long, qty=c5, when = long and not long[1] and window and openprofit_porc<safe)

min_prof = strategy.openprofit>0

strategy.close_all(when=short and min_prof)

plot(openprofit_porc)