MQL4 Indikator zum Diagramm von EA hinzufügen

 

Hallo Leute,

Ich versuche, das aktuelle Problem zu lösen. In mql4 gibt es keinen Befehl, der einen Indikator zu einem Diagramm wie in mql5 ChartIndicatorAdd() hinzufügen würde. Das ist wirklich traurig.

Ich möchte, dass mein ea einen Indikator initiiert. Scrolling Foren kam ich über mit solchen Lösung, aber es ist nicht richtig funktioniert. Bitte helfen Sie!

Dieser Code versucht, den Indikator zu starten, aber er liest den Dateinamen nicht richtig. Er versucht, nur (erster Buchstabe des Indikatornamens).ex4 oder I.ex4 zu öffnen.

Die offensichtliche Lösung war chararray, aber der Compiler gibt den Fehler "parametr conversion not allowed" zurück. Wie können wir das Problem also lösen?

#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:
Danke, es hat jetzt funktioniert, aber es funktioniert nur von zweiten Versuch. Wenn ich ea starte, gibt der Indikatoraufruf den Fehler fail to open / .ex4[123] zurück. Wenn die Ea bereits an einen Chart angehängt ist und ich versuche, sie erneut anzuhängen, dann funktioniert es. Wie kann dies gelöst werden?
 
Georgiy Liashchenko:

...In mql4 gibt es keinen Befehl, der einen Indikator zu einem Chart hinzufügt wie in mql5 ChartIndicatorAdd(). Es ist wirklich traurig....

Sind Sie sicher?
 
Vasyl Nosal:
Sind Sie sicher?
Nun, wenn Sie welche kennen, teilen Sie sie bitte mit uns... :)
 
Georgiy Liashchenko:
Nun, wenn Sie etwas wissen, teilen Sie es bitte mit... :)

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

ChartIndicatorAdd()

Oh, Entschuldigung. Ein paar Minuten.

Hmm. Ich dachte, dass es in mql4 ist.

Vielleicht hilft Ihnen dies

ChartApplyTemplate()

 
Vasyl Nosal:

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

ChartIndicatorAdd()

Oh, Entschuldigung. Ein paar Minuten.

Hmm. Ich dachte, dass es in mql4 ist.

Vielleicht hilft Ihnen dies

ChartApplyTemplate()

Ja, aber das ist nicht der Fall, wenn ich z.B. ein ea verkaufe und ein Kunde es benutzen will, hat er nicht die gleiche Vorlage. Selbst wenn ich es mit Datei geben, kann er andere Aussicht bevorzugen. Daher möchte ich den Indikator von ea initialisieren.
 
Georgiy Liashchenko:
Ja, aber das ist nicht ein Fall, wie zum Beispiel ich verkaufen ea und ein Kunde wollen es verwenden, er hat nicht eine gleiche Vorlage. Selbst wenn ich es mit Datei geben, kann er andere Aussicht bevorzugen. Daher möchte ich den Indikator von ea initialisieren.

Hmm. Vielleicht als Indikator in EA mit "Ressource" hinzufügen.

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


int OnInit()
  {

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

Hmm. Vielleicht als Indikator in EA mit "Rückgriff" hinzufügen.

funktioniert nicht, ea bekommt Griff aber kein Indikator
 
Georgiy Liashchenko:
funktioniert nicht, ea bekommt Griff, aber kein Indikator

Es ist nicht Indikator hinzufügen, um Chart. Es kompilieren ind in ea ex.4 Datei.

 
Vielleicht schreiben Sie an srvice desk und bitten sie, ChartIndicatorAdd() wie in mql5 hinzuzufügen?