MQL4 Aggiungere indicatore al grafico da EA

 

Salve gente,

Sto cercando di risolvere il problema attuale. In mql4 non esiste un comando che aggiunga un indicatore ad un grafico come in mql5 ChartIndicatorAdd(). E' davvero triste.

Voglio che il mio ea inizializzi un indicatore. Scorrendo i forum mi sono imbattuto in una soluzione simile, ma non funziona correttamente. Per favore aiutatemi!

Questo codice cerca di lanciare l'indicatore, ma non legge correttamente il nome del file. Cerca di aprire solo (prima lettera del nome dell'indicatore).ex4 o I.ex4

La soluzione ovvia era chararray ma il compilatore restituisce l'errore "parametr conversion not allowed". Quindi come possiamo risolverlo?

#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:
Grazie, ora ha funzionato, ma funziona solo dal secondo tentativo. Se avvio l'ea, la chiamata dell'indicatore restituisce l'errore fail to open / .ex4[123]. Se l'ea è già collegato a un grafico e provo a ricollegarlo, allora funziona. Come può essere risolto questo?
 
Georgiy Liashchenko:

...In mql4 non esiste un comando che aggiunga un indicatore ad un grafico come in mql5 ChartIndicatorAdd(). E' davvero triste....

Sei sicuro?
 
Vasyl Nosal:
Sei sicuro?
Beh, se ne conosci qualcuno, per favore condividilo... :)
 
Georgiy Liashchenko:
Beh, se ne conosci qualcuno, per favore condividilo... :)

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

ChartIndicatorAdd()

Oh, scusate. Pochi minuti.

Hmm. Pensavo che fosse in mql4.

Forse questo ti aiuterà

ChartApplyTemplate()

 
Vasyl Nosal:

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

ChartIndicatorAdd()

Oh, scusate. Pochi minuti.

Hmm. Pensavo che fosse in mql4.

Forse questo ti aiuterà

ChartApplyTemplate()

Sì, ma questo non è un caso perché per esempio io vendo un ea e un cliente vuole usarlo, lui non ha lo stesso modello. Anche se lo do con il file, potrebbe preferire un outlook diverso. Pertanto voglio inizializzare l'indicatore da ea.
 
Georgiy Liashchenko:
Sì, ma questo non è un caso perché per esempio io vendo un EA e un cliente vuole usarlo, lui non ha lo stesso modello. Anche se gli do un file, potrebbe preferire un outlook diverso. Quindi voglio inizializzare l'indicatore dall'ea.

Hmm. Forse che aggiungere l'indicatore nell'EA usando il "ricorso".

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


int OnInit()
  {

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

Hmm. Forse che aggiungere indicatore in EA usando "resourse".

non funziona, l'ea ottiene la maniglia ma nessun indicatore
 
Georgiy Liashchenko:
non funziona, ea ottiene la maniglia ma nessun indicatore

Non è aggiungere un indicatore al grafico. Si compila ind nel file ea ex.4.

 
Forse scrivere al srvice desk e chiedere di aggiungere ChartIndicatorAdd() come in mql5?