Fonction ICustom - page 8

 
 

consultez la fonction iCustom dans l'aide MQL, elle fait exactement ce dont vous avez besoin.

 

C'est tout !

Merci !

 

iCustom

Bonjour,

Parfois le fonctionnement d'un de mes indicateurs doit être légèrement différent si l'indicateur a été exécuté à la suite d'un appel à iCustom par opposition à la façon dont l'indicateur serait normalement exécuté s'il était attaché à un graphique.

Existe-t-il une fonction ou une méthode simple dans MQL que l'on peut utiliser dans un indicateur pour déterminer si l'indicateur a été explicitement lancé parce qu'il était attaché à un graphique ou si l'indicateur a été lancé suite à un appel à iCustom ?

Comme astuce, j'ai inclus un paramètre booléen à mes indicateurs appelé 'Custom' avec une valeur par défaut de false. Si je fais un appel à iCustom pour lancer l'indicateur, je mets ce paramètre à true à la place. De cette façon, je peux dire à l'intérieur de mon indicateur si l'indicateur est en cours d'exécution en raison d'un appel à iCustom.

Il doit sûrement y avoir une fonction comme par exemple IsCustom() qui renvoie true si l'indicateur a été lancé via iCustom ou false sinon.

Est-ce que quelqu'un a un moyen simple et élégant de déterminer si un indicateur a été exécuté suite à un appel à iCustom ?

Merci,

Laurence.

 

merci à tous pour votre aide !

aj

 

Question sur les icônes

J'ai essayé de créer un indicateur qui appelle un autre indicateur uniquement par icustom. J'ai fait cette ligne de code ;

double COG=iCustom(NULL,0, "COGpoint1",50,3000,0,true) ;

J'ai essayé de mettre la ligne à différents endroits du code et j'ai joué avec le nom du double, j'ai lu et lu beaucoup de tutoriels. Je pense que je dois peut-être mettre quelque chose au début comme le nombre de tampons ? peut-être que ça ne devrait pas être un double ?

En l'état actuel des choses, j'obtiens des erreurs lorsque je compile ;

'init' - virgule ou point-virgule attendus

'init' - expression sur la portée globale non autorisée

quelqu'un peut-il m'aider à comprendre cela avec n'importe quel indicateur personnalisé? parce que j'ai l'impression que les tutoriels que j'ai lus (et je crois les avoir tous lus) m'ont donné la ligne de code pour l'indicateur personnalisé mais cela ne fonctionne pas simplement en ayant la ligne toute seule, je sais qu'elle doit être changée pour chaque indicateur mais il y a des choses qui manquent dans l'explication.

 

J'ai fait un essai majeur sur ce sujet, je suis assez fier de moi ! J'ai reçu du code de Codersguru, je l'ai modifié pour un indicateur. lol il a l'air bien, il n'y a pas d'erreurs lors de la compilation (première fois !!!!!) mais ... il fait que metatrader "ne répond pas" quand on l'ajoute à un graphique.

J'ai changé tous les noms des tampons des indicateurs (de val1, val2, val3, val4. à value1, value2...etc) parce que je pensais qu'ils interféraient les uns avec les autres comme j'ai eu un meilleur regard sur le code que Codersguru avait fait (il a fait un code pour appeler supertrend avec icustom) il a changé les noms des tampons donc j'ai pensé que ça devait être ça, mais non toujours pas de réponse.

//+------------------------------------------------------------------+

//| COG call.mq4 |

//| |

//| |

//+------------------------------------------------------------------+

#property indicator_separate_window

#property indicator_buffers 4

#property indicator_color1 Lime

#property indicator_color2 Red

#property indicator_color3 CLR_NONE

#property indicator_color4 CLR_NONE

//---- tampons

double value1[] ;

double value2[] ;

double valeur3[] ;

double valeur4[] ;

//+------------------------------------------------------------------+

//| Fonction d'initialisation de l'indicateur personnalisé |

//+------------------------------------------------------------------+

int init()

{

//---- indicateurs

SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1,Lime) ;

SetIndexBuffer(0,value1) ;

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1,Red) ;

SetIndexBuffer(1,valeur2) ;

SetIndexStyle(2,DRAW_NONE) ;

SetIndexBuffer(2,valeur3) ;

SetIndexStyle(3,DRAW_NONE) ;

SetIndexBuffer(3,valeur4) ;

//----

return(0) ;

}

//+------------------------------------------------------------------+

//| Fonction personnalisée de désinitialisation de l'indicateur |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0) ;

}

//+------------------------------------------------------------------+

//| Fonction d'itération de l'indicateur personnalisée |

//+------------------------------------------------------------------+

int start()

{

int counted_bars=IndicatorCounted() ;

//---- vérifier les erreurs éventuelles

if (counted_bars<0) return(-1) ;

//---- dernière barre comptée sera recomptée

if (counted_bars>0) counted_bars-- ;

int pos=Bars-counted_bars ;

while(pos>=0)

{

value1[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true) ;

value2[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true) ;

value3[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true) ;

value4[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true) ;

}

return(0) ;

}

//+------------------------------------------------------------------+

 

C'est le fil de discussion où j'ai obtenu le code fait par Codersguru ;

https://www.mql5.com/en/forum/173108

J'ai remarqué que j'ai oublié une partie de mon code : pos aux extrémités et pos-- ;

value1[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true,pos) ;

value2[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true,pos) ;

value3[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true,pos) ;

value4[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true,pos) ;

pos-- ;

essayons-le !

 

LOL LOL LOL LOLLLLLLL hahaha ! oh mon dieu

ok j'ai fait des progrès j'ai la moitié de mon indicateur sur l'écran (seulement la partie rouge de l'indicateur, lol où est la partie verte ?) c'est la première chose que j'ai jamais fait fonctionner à moitié je ne peux pas le croire hahaha ! quelqu'un sait-il ce que j'ai fait de mal ?

 

hmm j'ai ajouté des chiffres à la fin 0,1,2,3 pour l'expérience. je ne sais pas pourquoi ? mais ça a fait quelque chose, maintenant j'ai une ligne rouge plate et verte!!!!.

yay ! ce n'est pas bon cependant, peut être pire c'est étrange ! aidez moi s'il vous plait quelqu'un... tout le monde dort zzz zzz zzz sauf moi !