MQL4 Ajouter un indicateur au graphique depuis l'EA

 

Bonjour à tous,

J'essaie de résoudre le problème actuel. Dans mql4 il n'y a pas de commande qui ajouterait un indicateur à un graphique comme dans mql5 ChartIndicatorAdd(). C'est vraiment triste.

Je veux que mon ea lance un indicateur. En parcourant les forums, j'ai trouvé une solution mais elle ne fonctionne pas correctement. Merci de m'aider !

Ce code essaie de lancer l'indicateur, mais il ne lit pas le nom du fichier correctement. Il essaie d'ouvrir seulement (première lettre du nom de l'indicateur).ex4 ou I.ex4.

La solution évidente était chararray mais le compilateur retourne l'erreur "parametr conversion not allowed". Alors, comment pouvons-nous résoudre ce problème ?

#import "user32.dll"
   int RegisterWindowMessageW(string MessageName);
   int PostMessageW(int hwnd, int msg, int wparam, string Name);
#import

void StartCustomIndicator(int hWnd, string IndicatorName, bool AutomaticallyAcceptDefaults = false)
{
 string name = "Indicator_name";
 char name2[];
 StringToCharArray(name,name2,0,StringLen(name));
 
 int MessageNumber = RegisterWindowMessageW("MetaTrader4_Internal_Message");
 int r = PostMessageW(hWnd, MessageNumber, 15, name);
}
int OnInit()
  {
//---

// In my code where I launch the indicator
int hWnd = WindowHandle(Symbol(), 0);
StartCustomIndicator(hWnd, "Indicator_name");

return(INIT_SUCCEEDED);
}
 
#import "user32.dll"
int RegisterWindowMessageW(string MessageName);
int PostMessageW(int hwnd,int msg,int wparam,uchar &Name[]);
#import

#define  INDICATOR_NAME "Indicator_name"
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void StartCustomIndicator(int hWnd,string IndicatorName,bool AutomaticallyAcceptDefaults=false)
  {
   uchar name2[];
   StringToCharArray(IndicatorName,name2,0,StringLen(IndicatorName));

   int MessageNumber=RegisterWindowMessageW("MetaTrader4_Internal_Message");
   int r=PostMessageW(hWnd,MessageNumber,15,name2);
   Sleep(10);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
// In my code where I launch the indicator
   int hWnd=WindowHandle(Symbol(),0);
   StartCustomIndicator(hWnd,INDICATOR_NAME);

   return(INIT_SUCCEEDED);
  }
 
Alain Verleyen:
Merci, ça a marché maintenant, mais ça ne marche qu'à partir de la deuxième tentative. Si je démarre l'ea, l'appel de l'indicateur renvoie l'erreur fail to open / .ex4[123]. Si l'ea est déjà attachée à un graphique et que j'essaie de la rattacher, alors elle fonctionne. Comment cela peut-il être résolu ?
 
Georgiy Liashchenko:

...Dans mql4 il n'y a pas de commande qui ajouterait un indicateur à un graphique comme dans mql5 ChartIndicatorAdd(). C'est vraiment triste....

Vous êtes sûr ?
 
Vasyl Nosal:
Vous êtes sûr ?
Si vous en connaissez, partagez-les... :)
 
Georgiy Liashchenko:
Si vous en connaissez, merci de partager... :)

:))))))))))))))))))))))))))))))))))))))))))))))))))

ChartIndicatorAdd()

Oh désolé. Quelques minutes.

Hmm. Je pensais que c'était dans mql4.

Peut-être que ceci vous aidera

ChartApplyTemplate()

 
Vasyl Nosal:

:))))))))))))))))))))))))))))))))))))))))))))))))))

ChartIndicatorAdd()

Oh désolé. Quelques minutes.

Hmm. Je pensais que c'était dans mql4.

Peut-être que ceci vous aidera

ChartApplyTemplate()

Oui, mais ce n'est pas le cas car par exemple je vends une ea et un client veut l'utiliser, il n'a pas le même modèle. Même si je lui donne un fichier, il peut préférer une autre perspective. C'est pourquoi je veux initialiser l'indicateur à partir de l'ea.
 
Georgiy Liashchenko:
Oui, mais ce n'est pas le cas car par exemple je vends une EA et un client veut l'utiliser, il n'a pas le même modèle. Même si je lui donne un fichier, il peut préférer une autre perspective. C'est pourquoi je veux initialiser l'indicateur à partir de l'ea.

Hmm. Peut-être qu'il faut ajouter un indicateur dans l'EA en utilisant le "recours".

#resource "\\Indicators\\SampleIndicator.ex4"


int OnInit()
  {

   double value=iCustom(_Symbol,_Period,"::Indicators\\SampleIndicator.ex4",0,0);
 
Vasyl Nosal:

Hmm. Peut-être qu'il faut ajouter un indicateur dans l'EA en utilisant le "recours".

Cela ne fonctionne pas, l'EA reçoit la poignée mais pas d'indicateur.
 
Georgiy Liashchenko:
ne fonctionne pas, ea obtient la poignée mais pas d'indicateur.

Il ne s'agit pas d'ajouter un indicateur au graphique. Il compile l'indicateur dans le fichier ex.4 de l'ea.

 
Peut-être écrire au bureau de service et leur demander d'ajouter ChartIndicatorAdd() comme dans mql5 ?