Stratégie de croisement de moyennes mobiles ALMA


Date de création: 2023-09-23 15:11:02 Dernière modification: 2023-09-23 15:11:02
Copier: 0 Nombre de clics: 1078
1
Suivre
1617
Abonnés

Aperçu

Cette stratégie utilise deux moyennes mobiles Arnaud Legoux ((ALMA) pour juger des signaux de négociation. ALMA est une amélioration de la moyenne mobile traditionnelle, qui réduit le retard et lissue la courbe. La stratégie génère un signal d’achat en traversant une ALMA lente sur une ALMA rapide, une ALMA lente sous une ALMA rapide, et un signal de vente en traversant une ALMA lente, tout en combinant un filtre de convergence synthétique, formant un signal de croisement plus stable.

Principe de stratégie

Les indicateurs centraux et les règles de négociation de la stratégie sont les suivants:

  1. ALMA rapide: période plus courte pour capturer les percées.

  2. ALMA lent: le nombre de périodes est plus long et sert à déterminer les grandes tendances.

  3. Filtre de transaction: Il est valable si vous portez la moyenne à court terme sur la moyenne à long terme.

  4. Faire plus de signaux: ALMA rapide sur ALMA lente et le filtrage de la quantité de conversion est efficace.

  5. Signal de Pindo: ALMA rapide à travers ALMA lente

  6. Signal de dégagement: ALMA rapide à travers ALMA lente et le filtre de conversion est actif.

  7. Signal en plein air: ALMA rapide à travers ALMA lente.

La stratégie est simple et intuitive, mais elle intègre plusieurs indicateurs techniques, tels que le jugement de la tendance, la capture de la rupture et la vérification du volume de transaction, pour former un système de négociation relativement stable. La combinaison d’une courbe rapide et moyenne permet de déterminer efficacement la direction de la tendance; l’utilisation de l’algorithme ALMA réduit l’impact du retard sur les transactions; l’ajout de volumes de transaction évite de nombreuses fausses ruptures incertaines.

Analyse des avantages

Les principaux avantages de cette stratégie par rapport aux stratégies traditionnelles d’intersection de ligne moyenne sont les suivants:

  1. L’algorithme ALMA réduit le retard et améliore la qualité du signal.

  2. Le filtrage de la quantité de livraison évite les pertes de fausses percées.

  3. Les courants de change sont des courants de changement de tendance qui se produisent au cours d’une période donnée.

  4. Les règles sont simples, intuitives et faciles à comprendre.

  5. Les paramètres de la ligne moyenne peuvent être ajustés de manière flexible pour différents marchés.

  6. La gestion des fonds est rationnelle et permet de contrôler les pertes individuelles.

  7. L’efficacité de la stratégie peut être encore améliorée en optimisant les paramètres de la moyenne.

  8. Dans l’ensemble, la stabilité et la qualité du signal ont été améliorées par rapport aux stratégies traditionnelles de parité.

Analyse des risques

Bien que cette stratégie présente de nombreux avantages, les risques suivants doivent être pris en compte:

  1. La stratégie de la ligne moyenne est par nature vulnérable aux chocs boursiers et entraîne de multiples pertes.

  2. Les paramètres de l’algorithme ALMA affectent l’efficacité de la stratégie.

  3. L’effet d’amplification du volume de transaction peut induire en erreur le jugement des signaux de transaction.

  4. Il y a un certain retard, mais il n’est pas possible d’éviter complètement les pertes.

  5. L’optimisation des paramètres présente un risque de sur-adaptation.

  6. Les signaux sont désactivés en cas d’anomalies de la quantité de livraison.

  7. Des algorithmes tels que l’apprentissage automatique pourraient avoir de meilleurs résultats.

  8. Attention au ratio de rétractation des gains et des pertes pour éviter que la courbe ne soit trop large.

Direction d’optimisation

Compte tenu de ces facteurs de risque, la stratégie peut être optimisée dans les domaines suivants:

  1. Optimisation des paramètres de la moyenne d’ALMA pour améliorer la sensibilité des réactions.

  2. Essayez différentes méthodes de calcul.

  3. La mise en place d’une stratégie d’arrêt des pertes et le contrôle strict des pertes individuelles.

  4. Création d’un système de signaux de transaction intégré en combinaison avec d’autres composants de l’indicateur.

  5. L’ajout d’un module d’apprentissage automatique permettra une régulation plus intelligente du signal.

  6. Le déploiement de multiples variétés pour une dispersion stratégique.

  7. Optimiser les stratégies de gestion des fonds et adapter les positions aux différents marchés.

  8. Les stratégies de recherche sur la robustesse et la prévention de la suradaptation.

Résumer

Dans l’ensemble, cette stratégie améliore la qualité et la stabilité du signal par l’algorithme ALMA et la validation de la quantité de transaction par rapport à la stratégie de croisement de la même ligne. Cependant, l’optimisation de la stratégie de négociation est un processus continu, qui nécessite toujours une attention au risque et un renforcement de la stratégie à partir de plusieurs dimensions, afin de pouvoir s’adapter à un environnement de marché plus complexe.

Code source de la stratégie
/*backtest
start: 2022-09-16 00:00:00
end: 2023-09-22 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/
// © Sarahann999
// Calculations for TP/SL based off: https://kodify.net/tradingview/orders/percentage-profit/
//@version=5
strategy("ALMA Cross", overlay=true)

//User Inputs
src= (close)
long_entry = input(true, title='Long Entry')
short_entry = input(true, title='Short Entry')

//Fast Settings
ALMA1 = input(100, "ALMA Lenghth 1", group= "ALMA Fast Length Settings")
alma_offset = input.float(defval=0.85, title='Arnaud Legoux (ALMA) - Offset Value', minval=0, step=0.01)
alma_sigma = input.int(defval=6, title='Arnaud Legoux (ALMA) - Sigma Value', minval=0)
Alma1 = ta.alma(src, ALMA1, alma_offset, alma_sigma)

//Slow Settings
ALMA2 = input(120, "ALMA Length 2", group = "ALMA Slow Length Settings")
alma_offset2 = input.float(defval=0.85, title='Arnaud Legoux (ALMA) - Offset Value', minval=0, step=0.01)
alma_sigma2 = input.int(defval=6, title='Arnaud Legoux (ALMA) - Sigma Value', minval=0)
Alma2 = ta.alma(src, ALMA2, alma_offset2, alma_sigma2)

//Volume
var cumVol = 0.
cumVol += nz(volume)
if barstate.islast and cumVol == 0
    runtime.error("No volume is provided by the data vendor.")
shortlen = input.int(5, minval=1, title = "Short Length", group= "Volume Settings")
longlen = input.int(10, minval=1, title = "Long Length")
short = ta.ema(volume, shortlen)
long = ta.ema(volume, longlen)
osc = 100 * (short - long) / long

//Define Cross Conditions
buy = ta.crossover(Alma1, Alma2)
sell = ta.crossunder(Alma1, Alma2)

//Calculate Take Profit Percentage
longProfitPerc = input.float(title="Long Take Profit", group='Take Profit Percentage',
     minval=0.0, step=0.1, defval=2) / 100
shortProfitPerc = input.float(title="Short Take Profit",
     minval=0.0, step=0.1, defval=2) / 100
     
// Figure out take profit price 1
longExitPrice  = strategy.position_avg_price * (1 + longProfitPerc)
shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc)

// Make inputs that set the stop %  1
longStopPerc = input.float(title="Long Stop Loss", group='Stop Percentage',
     minval=0.0, step=0.1, defval=2.5) / 100
shortStopPerc = input.float(title="Short Stop Loss",
     minval=0.0, step=0.1, defval=2.5) / 100

// Figure Out Stop Price
longStopPrice  = strategy.position_avg_price * (1 - longStopPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortStopPerc)

//Define Conditions
buySignal = buy and osc > 0
     and strategy.position_size == 0

//sellSignal 
sellSignal = sell and osc > 0
     and strategy.position_size == 0

// Submit entry orders
if buySignal and long_entry
    strategy.entry(id="Long", direction=strategy.long, alert_message="Enter Long")
    alert(message="BUY Trade Entry Alert", freq=alert.freq_once_per_bar)
    
if sellSignal and short_entry
    strategy.entry(id="Short", direction=strategy.short, alert_message="Enter Short")
    alert(message="SELL Trade Entry Alert", freq=alert.freq_once_per_bar)
    
// Submit exit orders based on take profit price
if (strategy.position_size > 0)
    strategy.exit(id="Long TP/SL", limit=longExitPrice, stop=longStopPrice, alert_message="Long Exit 1 at {{close}}")
if (strategy.position_size < 0)
    strategy.exit(id="Short TP/SL", limit=shortExitPrice, stop=shortStopPrice, alert_message="Short Exit 1 at {{close}}")

//Draw
plot(Alma1,"Alma Fast", color=color.purple, style=plot.style_circles)
plot(Alma2,"Alma Slow", color=#acb5c2, style=plot.style_circles)