MQL4 Añadir indicador al gráfico desde el EA

 

Hola gente,

Estoy tratando de resolver el problema actual. En mql4 no hay ningún comando que añada un indicador a un gráfico como en mql5 ChartIndicatorAdd(). Es realmente triste.

Quiero que mi ea inicie un indicador. Buscando en los foros me encontré con esa solución, pero no está funcionando correctamente. ¡Por favor, ayuda!

Este código intenta iniciar el indicador, pero no lee el nombre del archivo correctamente. Intenta abrir sólo (la primera letra del nombre del indicador).ex4 o I.ex4

La solución obvia era chararray pero el compilador devuelve el error "parametr conversion not allowed". Entonces, ¿cómo podemos resolverlo?

#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:
Gracias, ahora ha funcionado, pero sólo funciona desde el segundo intento. Si inicio el ea, la llamada al indicador devuelve el error de no poder abrir / .ex4[123]. Si el ea ya está unido a un gráfico y trato de volver a adjuntarlo, entonces funciona. ¿Cómo se puede resolver esto?
 
Georgiy Liashchenko:

...En mql4 no hay ningún comando que añada un indicador a un gráfico como en mql5 ChartIndicatorAdd(). Es realmente sad....

¿Estás seguro?
 
Vasyl Nosal:
¿Estás seguro?
Bueno, si conoces alguno, por favor, compártelo... :)
 
Georgiy Liashchenko:
Bueno si conoces alguno, por favor comparte... :)

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

ChartIndicatorAdd()

Oh, lo siento. Unos minutos.

Hmm. Pensé que estaba en mql4.

Quizás esto te ayude

ChartApplyTemplate()

 
Vasyl Nosal:

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

ChartIndicatorAdd()

Oh, lo siento. Unos minutos.

Hmm. Pensé que estaba en mql4.

Quizás esto te ayude

ChartApplyTemplate()

Si, pero eso no es un caso como por ejemplo yo vendo ea y un cliente quiere usarlo, el no tiene una misma plantilla. Incluso si se lo doy con un archivo, él puede preferir una perspectiva diferente. Por eso quiero inicializar el indicador desde el ea.
 
Georgiy Liashchenko:
Si, pero eso no es un caso como por ejemplo yo vendo ea y un cliente quiere usarlo, él no tiene una misma plantilla. Incluso si se lo doy con un archivo, él puede preferir una perspectiva diferente. Por eso quiero inicializar el indicador desde el ea.

Hmm. Tal vez que añadir el indicador en EA utilizando "recurso".

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


int OnInit()
  {

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

Hmm. Tal vez que añadir indicador en EA utilizando "recurso".

no funciona, ea consigue manejar pero no indicador
 
Georgiy Liashchenko:
no funciona, ea obtiene la manija pero no el indicador

No se trata de añadir un indicador al gráfico. Compila ind en el archivo ea ex.4.

 
¿Tal vez escribir al servicio de atención al cliente y pedirles que añadan ChartIndicatorAdd() como en mql5?