MQL4 Indikator zum Diagramm von EA hinzufügen - Seite 5

 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

MQL4 Indikator zum Chart von EA hinzufügen

Alain Verleyen, 2016.02.13 11:39

#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);
  }

Hallo alle zusammen

obiger Code funktioniert in einem Expert, wie verwende ich von obigen Codes in einem Indikator?

bitte helfen.

 
Ist es in MT4 möglich, den Indikator aus dem Chart mit EA zu entfernen? Einige Code kann in OnDenit() Funktion geschrieben werden.
 
Abdul Manan:
Ist es in MT4 möglich, den Indikator mit EA aus dem Chart zu entfernen? Einige Codes können in der Funktion OnDenit() geschrieben werden.

Entfernt einen Indikator mit einem bestimmten Namen aus dem angegebenen Diagrammfenster. Der Befehl wird der Warteschlange für Diagrammnachrichten hinzugefügt und erst ausgeführt, nachdem alle vorherigen Befehle abgearbeitet wurden.

boolChartIndicatorDelete(
longchart_id,// Diagramm-ID
intsub_window,// Nummer des Unterfensters
const stringindicator_shortname// Kurzname des Indikators
);

Parameter

chart_id

[in] Chart-ID. 0 bezeichnet den aktuellen Chart.

sub_window

[in] Nummer des Teilfensters des Diagramms. 0 bezeichnet das Subfenster des Hauptdiagramms.

const indicator_kurzname

[in] Der Kurzname des Indikators, der in derEigenschaft INDICATOR_SHORTNAME mit der FunktionIndicatorSetString() gesetzt wird. Um den Kurznamen eines Indikators zu erhalten, verwenden Sie die FunktionChartIndicatorName().

Rückgabewert

Gibt true zurück, wenn der Befehl zur Chart-Warteschlange hinzugefügt wurde, andernfalls false. UmFehlerdetails zu erhalten, verwenden Sie denGetLastError()-Befehl.

ChartIndicatorDelete - 图表操作 - MQL4参考
ChartIndicatorDelete - 图表操作 - MQL4参考
  • docs.mql4.com
Removes an indicator with a specified name from the specified chart window. The command is added to chart message queue and executed only after all previous commands have been processed. If the short name of an indicator is not set explicitly, then the name of the file containing the source code of the indicator will be specified during...
 
Alain Verleyen:
Gibt es eine Möglichkeit, den Indikator automatisch auf dem Diagramm von EA beim Backtest anzuhängen?
 
int OnInit()
  {
//---
// In my code where I launch the indicator
   int hWnd=WindowHandle(Symbol(),0);
   StartCustomIndicator(hWnd,INDICATOR_NAME);

   return(INIT_SUCCEEDED);
  }


This code work, but only in OnInit section. If i try transfer it to section CHARTEVENT_OBJECT_CLICK for launch with key, nothing happend. Can you help me ?
 
Hallo, ich bin nicht in der Lage, 2 Indikatoren von 1 EA mit dem gleichen Code zu laden.
 
Dieser Thread war sehr hilfreich für mich, hat mich aber nicht ganz ans Ziel gebracht - siehe diesen Thread (https://www.forexfactory.com/showthread.php?p=12764287#), der dort anknüpft, wo der Dialog hier aufgehört hat.
 
Kray:

Hallo zusammen,

Ich möchte Georgiy Liashchenko danken, und ich möchte meine aktualisierte Version seines Codes teilen, die den Indikator direkt in das Diagramm mitAutomaticallyAcceptDefaults (wenn es auf "true" ist) hinzufügen.

Ich hoffe, es wird einigen Leuten helfen, die Indikatoren aus dem Experten einfügen müssen.

Hinweis : Es funktioniert für benutzerdefinierte Indikatoren, ansonsten ändern Sie den Fensternamen

Hinweis2: Verwenden Sie keine Indikatoren mit mehr als 15 Zeichen (vor dem ".ex4")

Hallo, ich habe folgendes Problem

Kann 'user32.dll::RegisterWindowMessageW' nicht aufrufen, 'user32.dll' ist nicht geladen

Kann mir jemand helfen?


 
Alain Verleyen:

Ich habe dieses Problem nicht (mit dem von mir geposteten Code).

Prüfen Sie, ob hWnd von 0 verschieden ist.

Sie können auch versuchen, den Sleep-Wert auf 50 oder 100 zu erhöhen.

Lieber Alain ,

Ich habe deinen Code verwendet, um einen Indikator zu allen geöffneten Charts hinzuzufügen, aber er wird nur zu dem Chart hinzugefügt, auf dem ich den EA ausführe.

Hier ist der Code, können Sie bitte Ihren Code ändern, um den gleichen Indikator zu allen geöffneten Charts hinzuzufügen?

Bitte um Hilfe

BTW ( Ich habe es als EA und auch als Skript versucht, beide fügten den Indikator nur zu einem Chart hinzu ) :)

Grüße,



#import "user32.dll"

int RegisterWindowMessageW(string MessageName);

int PostMessageW(int hwnd,int msg,int wparam,uchar &Name[]);

#import


#define INDICATOR_NAME "CCI_FILTER6C"


int NOS ;

string suffix="";

string symbol[30];

long chartid[30];


//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+


int OnStart()

{

NOS=10;

Suffix="c";

symbol[0] = "AUDCAD" + suffix ;

symbol[1] = "AUDCHF" + suffix ;

symbol[2] = "AUDJPY" + suffix;

symbol[3] = "AUDNZD" + Suffix;

symbol[4] = "AUDUSD" + Suffix ;

symbol[5] = "CADJPY" + Nachsilbe; symbol[5] = "CADJPY" + Nachsilbe ;

symbol[6] = "CHFJPY" + Nachsilbe;

symbol[7] = "EURAUD" + Suffix ;

symbol[8] = "EURCAD" + Suffix ; symbol[8] = "EURCAD" + Suffix ;

symbol[9] = "EURCHF" + Suffix; symbol[9] = "EURCHF" + Suffix;

for(int is=0;is<NOS;is++)

{

int hWnd=WindowHandle(symbol[is],PERIOD_M30);

StartCustomIndicator(hWnd,INDICATOR_NAME);

}

return(0);

}

void StartCustomIndicator(int hWnd,string IndicatorName,bool AutomaticallyAcceptDefaults=true)

{

uchar name2[];

StringToCharArray(Anzeigername,name2,0,StringLen(Anzeigername));


int MessageNumber=RegisterWindowMessageW("MetaTrader4_Internal_Message");

int r=PostMessageW(hWnd,MessageNumber,15,name2);

Sleep(100);

}

 
Abdul Manan:
Hallo, ich bin nicht in der Lage, 2 Indikatoren von 1 EA mit demselben Code zu laden.

auf der Suche nach diesem als auch - hat jemand herausgefunden, wie man mehrere Indikatoren aus dem gleichen EA hinzufügen?


Ich möchte 2https://docs.mql4.com/indicators/ima von demselben EA hinzufügen.


Danke