MQL4 Adicionar indicador ao gráfico da EA

 

Olá pessoal,

Estou tentando resolver o problema atual. Em mql4 não há nenhum comando que adicionaria um indicador a um gráfico como em mql5 ChartIndicatorAdd(). É realmente triste.

Eu quero que minha ea inicie um indicador. Fóruns de rolagem que encontrei com tal solução, mas não está funcionando corretamente. Por favor, ajude-me!

Este código tenta lançar o indicador, mas não lê o nome do arquivo corretamente. Ele tenta abrir somente (primeira letra do nome do indicador).ex4 ou I.ex4

A solução óbvia foi chararray, mas o erro de compilação retorna "conversão paramétrica não permitida". Então, como podemos resolvê-lo?

#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:
Obrigado, funcionou agora, mas funciona apenas a partir da segunda tentativa. Se eu iniciar ea, a chamada de indicador retorna erro de abertura / .ex4[123]. Se a ea já estiver anexada a uma tabela e eu tentar anexá-la novamente, então ela funciona. Como isto pode ser resolvido?
 
Georgiy Liashchenko:

...Em mql4 não há comando que acrescentaria um indicador a um gráfico como em mql5 ChartIndicatorAdd(). É realmente triste....

Você tem certeza?
 
Vasyl Nosal:
Você tem certeza?
Bem, se você conhece alguns, por favor, compartilhe... :)
 
Georgiy Liashchenko:
Bem, se você conhece alguns, por favor compartilhe... :)

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

GráficoIndicadorAdd()

Oh, desculpe. Poucos minutos.

Hmm. Pensei que fosse em mql4.

Talvez isto o ajude

GráficoAplicarTemplate()

 
Vasyl Nosal:

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

GráficoIndicadorAdd()

Oh, desculpe. Poucos minutos.

Hmm. Pensei que fosse em mql4.

Talvez isto o ajude

GráficoAplicarTemplate()

Sim, mas isso não é um caso como, por exemplo, eu vendo ea e um cliente quer usá-lo, ele não tem um mesmo modelo. Mesmo que eu o dê com o arquivo, ele pode preferir uma perspectiva diferente. Portanto, quero inicializar o indicador da ea.
 
Georgiy Liashchenko:
Sim, mas isso não é um caso como, por exemplo, eu vendo ea e um cliente quer usá-lo, ele não tem um mesmo modelo. Mesmo que eu o dê com o arquivo, ele pode preferir uma perspectiva diferente. Portanto, quero inicializar o indicador da ea.

Hmm. Talvez do que adicionar indicador na EA usando "recurso".

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


int OnInit()
  {

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

Hmm. Talvez do que adicionar indicador na EA usando "recurso".

não funciona, a ea fica com o controle, mas nenhum indicador
 
Georgiy Liashchenko:
não funciona, ea recebe o controle mas nenhum indicador

Não é um indicador adicional ao gráfico. Ele compila ind em um arquivo ex.4.

 
Talvez escreva para a mesa da srvice e peça que acrescentem ChartIndicatorAdd() como em mql5?