Cette stratégie est une stratégie de négociation simple et efficace qui combine l’indicateur de l’oscillateur MACD avec une moyenne mobile EMA. Elle est actuellement configurée sur une ligne K de 4 heures, qui peut être ajustée à d’autres périodes si nécessaire.
La stratégie est principalement composée des éléments suivants:
L’indicateur MACD: détermine la dynamique des prix.
L’EMA moyenne: détermine la direction de la tendance des prix
Conditions temporelles: période de validité de la stratégie.
Choix de plus ou de moins.
Les règles de transaction sont les suivantes:
Surplus/bénéfice: lorsque le cours de clôture est supérieur à l’EMA, la colonne MACD est positive et la ligne K actuelle est supérieure à la précédente journée.
Prise de position libre/parie: Prise de position libre/parie lorsque le cours de clôture est inférieur à l’EMA, la colonne MACD est négative et la ligne K actuelle est inférieure à la précédente journée.
La stratégie est claire et concise, elle fusionne les deux grandes idées de transaction, la tendance et le court terme, pour former un système de décision quantitative et efficace.
Les principaux avantages de cette stratégie par rapport à un seul indicateur sont les suivants:
Le MACD détermine la dynamique à court terme, l’EMA détermine la direction de la tendance, l’indicateur est en corrélation étroite.
Les règles sont simples, claires, faciles à comprendre et à mettre en œuvre.
Les paramètres peuvent être ajustés de manière flexible pour différentes variétés et périodes de temps.
Vous pouvez choisir de faire un trade unidirectionnel ou un trade bidirectionnel.
Vous pouvez définir une période de validité de la stratégie pour éviter des transactions inutiles.
La société a été créée en 2008 et a été créée en 2009 pour la première fois.
La gestion de l’argent est contrôlable et permet d’éviter les pertes individuelles.
Les technologies d’apprentissage automatique peuvent être utilisées pour optimiser les améliorations.
Bien que cette stratégie présente de nombreux avantages, les risques suivants sont à prendre en compte:
Les paramètres d’optimisation sont plus larges et il existe un risque d’optimisation excessive.
Le risque d’augmentation des pertes est présent si le stop loss n’est pas défini.
Il n’y a pas de chiffre d’affaires à prendre en compte, il peut y avoir une fausse percée.
Le retard dans l’identification des points de basculement de la tendance ne permet pas d’éviter complètement les pertes.
L’effet peut être atténué par l’évolution de l’environnement du marché.
Il faut se concentrer sur la robustesse du modèle, basée uniquement sur les données historiques.
Les transactions sont plus fréquentes et les coûts peuvent être plus élevés.
Attention au taux de rétractation des bénéfices pour éviter que la courbe ne soit trop large.
D’après l’analyse ci-dessus, la stratégie peut être optimisée dans les domaines suivants:
Pour éviter les faux rebonds, joignez-vous à l’indicateur de volume de transactions.
Augmentation de l’arrêt de perte et contrôle des pertes monétaires.
Évaluer l’effet des paramètres sur les différentes périodes.
L’introduction de l’apprentissage automatique pour une optimisation dynamique
La vérification multi-marchés améliore la stabilité.
La taille de la position doit être ajustée pour réduire la fréquence des transactions.
Optimiser les stratégies de gestion des fonds.
Les contrats de différence de prix sont testés et la fréquence est augmentée.
Les tests de répétition sont effectués en permanence pour éviter les surcorrespondances.
L’ensemble de la stratégie, combiné avec les indicateurs MACD et EMA, constitue une stratégie de quantification simple et efficace. Cependant, toute stratégie doit être continuellement optimisée et vérifiée pour pouvoir rester adaptée et robuste aux changements de l’environnement du marché.
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © SoftKill21
//@version=4
strategy("My Script", overlay=true)
//heiking ashi calculation
UseHAcandles = input(false, title="Use Heikin Ashi Candles in Algo Calculations")
//
// === /INPUTS ===
// === BASE FUNCTIONS ===
haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close
haOpen = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open
haHigh = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high
haLow = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low
//timecondition
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2020, title = "From Year", minval = 1970)
//monday and session
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
//ema data -- moving average
len = input(9, minval=1, title="Length")
src = input(hl2, title="Source")
out = ema(src, len)
//plot(out, title="EMA", color=color.blue)
//histogram
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA (Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA (Signal Line)", type=input.bool, defval=false)
// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
//main variables to apply conditions are going to be out(moving avg) and hist(macd)
long = haClose > out and haClose > haClose[1] and out > out[1] and hist> 0 and hist[1] < 0 and time_cond
short = haClose < out and haClose < haClose[1] and out < out[1] and hist < 0 and hist[1] > 0 and time_cond
//limit to 1 entry
var longOpeneda = false
var shortOpeneda = false
var int timeOfBuya = na
longCondition= long and not longOpeneda
if longCondition
longOpeneda := true
timeOfBuya := time
longExitSignala = short
exitLongCondition = longOpeneda[1] and longExitSignala
if exitLongCondition
longOpeneda := false
timeOfBuya := na
plotshape(longCondition, style=shape.labelup, location=location.belowbar, color=color.green, size=size.tiny, title="BUY", text="BUY", textcolor=color.white)
plotshape(exitLongCondition, style=shape.labeldown, location=location.abovebar, color=color.red, size=size.tiny, title="SELL", text="SELL", textcolor=color.white)
//automatization
longEntry= input(true)
shortEntry=input(false)
if(longEntry)
strategy.entry("long",strategy.long,when=longCondition)
strategy.close("long",when=exitLongCondition)
if(shortEntry)
strategy.entry("short",strategy.short,when=exitLongCondition)
strategy.close("short",when=longCondition)