Bonjour,
Je cherche à reproduire dans un trading automatique le MACD, son SIGNAL et le MACD moins signal(représenté sur le fichier en ligne+point car beaucoup plus lisible.)Bien évidemment comme cela ne marche jamais du premier coup et après avoir cherché dans tous les sens,je viens demander de l’aide au FORUM.
La base du robot est défini comme suit
DEFPARAM CUMULATEORDERS = FALSE
DEFPARAM FLATBEFORE = 080000
DEFPARAM FLATAFTER = 220000
Positionsize = 2
// Calcul de la MACD,MACDLINE et leur différence
MovACD = MACD[8,20,8](customclose)
MovACDL = MACDLine[8,20,8](customclose)
SignalMov = (MovACD - MovACDL)
c1 = MovACD[1] < MovACDL[1]
c2 = MovACD < MovACDL
c3 = SignalMov[1] < MovACD[1]
c4 = SignalMov > MovACD
c5 = MovACD[1] > MovACDL[1]
c6 = MovACD > MovACDL
c7 = SignalMov[1] > MovACDL[1]
c8 = Signalmov < MovACDL
// Conditions pour ouvrir une position acheteuse
IF c1 and c2 AND c3 AND c4 THEN
Buy Positionsize CONTRACTS AT MARKET
ENDIF
//Conditions pour fermer une position acheteuse
IF c5 AND c6 AND c7 AND c8 THEN
Sell Positionsize CONTRACTS AT MARKET
ENDIF
//STOPS
SET STOP LOSS 31
Je pense que les signes négatifs du MACD ou SIGNAL ou MACD moins SIGNAL doivent y être pour quelque chose
Si quelqu’un a une idée………..
Avec plaisir
Je ne vois rien qui cloche dans la définition de tes indicateurs. Si aucun trade ne se lance, c’est sans aucun doute un problème lié aux conditions c1 à c8.
Pour débugger ces conditions il faut les vérifier avec GRAPH une à une, exemple avec c1 et c2 en même temps:
GRAPH c1 coloured(200,18,16) as "condition c1"
GRAPH c2 coloured(163,56,56) as "condition c2"
OK c’est ce que je vais faire
J’ai testé avec les graph ,mais cela n’apporte rien de plus.
J’ai fais un petit programme d’achat juste pour voir si ce que je souhaitais pouvais fonctionner, avec le résultat en pièce jointe.
Négatif.Pourtant il s’agit uniquement de 2 paramètres simples
MACD-SIGNAL[1] < MACD-SIGNAL[2]
MACD-SIGNAL > MACD-SIGNAL[1]
DEFPARAM CUMULATEORDERS = FALSE
DEFPARAM FLATBEFORE = 080000
DEFPARAM FLATAFTER = 220000
Positionsize = 2
// Calcul de la MACD, SIGNAL et du MACD-SIGNAL
MovACD = MACD[8,20,8](customclose) //MACD
MovACDL = MACDLINE[8,20,8](customclose) //SIGNAL
SignalMov = (MovACD – MovACDL) // MACD-SIGNAL
c2 = SignalMov[1] < signalMov[2]
c3 = SignalMov > SignalMov[1]
// Conditions pour ouvrir une position vendeuse
IF c2 AND c3 THEN
Sellshort Positionsize CONTRACTS AT MARKET
ENDIF
//STOP
SET STOP LOSS 150
Sur le graphique, j’ai mis des fléches de vente qui correspond au résultat de proorder et ce que je souhaite.On dirait qu’il vend au changement de couleur (du vert au rouge)
alors que je souhaite une vente au changement de hauteur de barrette.Je pense que les formules sont correctes
Si tu peux m’aider c’est avec plaisir
Bonsoir, j’aurais tendance à penser au contraire qu’il y a “enmêlage de pinceaux” dans les formules justement, via probable confusion sur quel mot-clé de PRT correspond à quoi pour la macd. Donc ça vaut le coup de re-décrire les termes PRT:
MACDLINE[8,20,8](customclose) est la différence entre les 2 ema, qui donne la macd de base, d’habitude représentée par une ligne (alors qu’en commentaire // tu sembles le considérer comme ligne de signal)
MACD[8,20,8](customclose) est “déjà” la différence entre la macdline et sa ligne de signal, différence représentée d’habitude en histogramme, ou si je fais référence à ton premier graphe et ton choix de représentation, en ligne+points.
Donc dans ton code, tu as fais en termes PRT “MACD[…](…) moins macdline[…](…)”, ça équivaut à faire “macdline – signal – macdline”, et tu ne te retrouves plus qu’avec juste “moins signal”, et non pas la macd moins sa ligne de signal…
Or si j’ai bien compris ce que tu cherches à faire ( = vendre ou acheter les pics ou creux de macd en version histogramme), alors en gardant ton appellation MovACD = MACD[8,20,8](customclose), il te suffit de regarder (pour un creux de l’histo, donc un achat):
c2 = MovACD[1] < MovACD[2]
c3 = MovACD > MovACD[1]
et intervertir les < et > pour un pic de l’histo (donc une vente).
Bonjour Noobywan
Effectivement pour moi
Macd[8,20,8] était la macd
Macdline[8,20,8] était le signal donc il suffisait de faire la différence pour avoir MACD-SIGNAL
Merci pour ton aide
ps : pour info je ne cherche pas les creux ou les pics,je cherche uniquement les divergences, couplé avec un autre indicateur de J.ehler