Wie kann man EA für mehrere Paare ausführen?

 
Hallo
Ich bin neu in Forex und MetaTrader und versuche, einige Grundlagen herauszufinden.
Angenommen, dass ein EA, die zu einem Diagramm von EURUSD angehängt ist, ABER ich möchte Setups in mehrere Paare von diesem EA zu finden. Aber EA läuft nur, wenn frische Tick für EURUSD kommt. Richtig? Ich sehe dies als eine einschränkende Funktion von MT, da mein EA viele Paare verarbeiten kann, aber nur mit dem frischen Tick des angehängten Paares (in diesem Fall EURUSD) gestartet wird. Dies führt wahrscheinlich zu verpassten Ticks von unverbundenen Paaren. Daher die folgende Frage.

Kann EA für mehrere Paare laufen, ohne an ein Diagramm angehängt zu sein? Wenn nicht, wie lässt sich das obige Problem lösen? Bitte um Rat.

Vielen Dank
Pankaj
 

Es ist einfach die Art und Weise mt4 funktioniert. Ich denke, es gibt keine Arbeit um für diese. Aber diese eine Sache kam mir in den Sinn gerade jetzt. Wenn Sie EURUSD Tick mindestens 1-2 Minuten vor der neuen Kerze (sagen wir, es ist H1 Kerze) können Sie laufen, während Schleife für neue Kerzen auf andere Paare zu suchen. In diesem Fall, wenn der neue Tick für EURUSD kommt nicht einmal für eine 5 Minuten oder mehr, die while-Schleife bereits läuft und Sie erhalten alle neuen Kerzen auf einem anderen Paar. Ich hoffe, Sie verstehen das.

Aber die Frage ist, warum brauchen Sie das? Es ist besser, EA auf verschiedenen Charts laufen zu lassen, da EA, der auf EURUSD läuft, nicht in der Lage wäre, einen Handel auf einem anderen Paar auszuführen.

 

Hallo zusammen,

Ich ziehe es vor, im Auge zu behalten, wir sind immer noch in Echtzeit-Verarbeitung arbeiten, so dass ich einfach vergessen, mit while-Schleife oder wait-Funktion, um die Hand auf die Kommunikation zu halten!

Wenn Sie Ihren EA an ein Paar wie EURUSD anhängen, erhalten Sie genug Signale, um alle anderen Paare zu verwalten, Ticks sind sehr häufig. Es ist keine Frage von Minuten, sondern von Sekunden (eine Schleife für 2 Minuten laufen zu lassen, klingt für mich wirklich verrückt). Wenn es nicht um Sekunden geht, überlegen Sie sich einfach, warum oder schauen Sie bei einem anderen Broker nach.

wenn Sie wirklich brauchen mehr als das, was Sie bekommen in Anhängen Ihrer EA zu eurusd, denken Sie an die Ausführung von separaten Instanz von Ihrem EA zu jeder Währung angehängt. Sorry, aber ich neige zu denken "oder überdenken Sie Ihr System".

Sorry, wenn das Gefühl, dass dieser Beitrag ist ein bisschen abrupt. Wollte mit Ihnen meine Sichtweise zu teilen.

Viel Glück!

 
wrm:

Es ist besser, EA auf verschiedenen Charts laufen zu lassen, da ein EA, der auf EURUSD läuft, nicht in der Lage wäre, einen Handel auf einem anderen Paar auszuführen.

Das ist nicht korrekt. Die Funktion OrderSend() kann für jedes Symbol ausgeführt werden, das Sie als ersten Parameter angeben, unabhängig vom Chart.

Und Sie können die jüngsten Geld- und Briefkurse für Symbole außerhalb des aktuellen Charts abrufen, indem Sie die Funktion MarketInfo() verwenden.

Sie haben also folgende Möglichkeiten.

- Ein und derselbe EA wird an viele Charts angehängt und arbeitet für das native Symbol jedes Charts (unter Verwendung der integrierten Variablen Ask und Bid)

- Sie haben einen EA, der an einen bestimmten Chart angehängt ist und für alle ausgewählten Symbole ausgeführt wird (mit der Funktion MarketInfo() für nicht-native Symbole) - wobei nur die Ticks des nativen Symbols als Auslöser verwendet werden

- Haben Sie Master- und Slave-EAs, die an verschiedene Charts angehängt sind, wobei der eine durch den anderen ausgelöst wird (z.B. schreibt einer einen Wert in eine Datei, der andere liest die Datei ständig, bis er diese Daten findet und handelt dann)

 
cloudbreaker:

Das ist nicht korrekt. Die Funktion OrderSend() kann für jedes Symbol ausgeführt werden, das Sie als ersten Parameter angeben, unabhängig vom Chart.

Und Sie können die jüngsten Geld- und Briefkurse für Symbole außerhalb des aktuellen Charts abrufen, indem Sie die Funktion MarketInfo() verwenden.

Sie haben also folgende Möglichkeiten.

- Ein und derselbe EA wird an viele Charts angehängt und arbeitet für das native Symbol jedes Charts (unter Verwendung der integrierten Variablen Ask und Bid)

- Sie haben einen EA, der an einen bestimmten Chart angehängt ist und für alle ausgewählten Symbole ausgeführt wird (mit der Funktion MarketInfo() für nicht-native Symbole) - wobei nur die Ticks des nativen Symbols als Auslöser verwendet werden

- Master- und Slave-EAs, die an verschiedene Charts angehängt sind, wobei der eine durch den anderen ausgelöst wird (z. B. schreibt der eine einen Wert in eine Datei, der andere liest die Datei ständig, bis er diese Daten findet und handelt dann)


Sehr aufschlussreich. Vielen Dank an Sie alle. Ich werde mich für die 2. Option entscheiden, da sie mit dem übereinstimmt, was ich vorher dachte.


wrm: Ich möchte die Dinge so einfach wie möglich halten. Wenn technisch möglich, werde ich nur einen EA behalten. Der einzige Grund, einen separaten EA zu behalten, ist der, dass ich ein Diagramm erstellen möchte, was ich nicht brauche.


Natürlich werde ich testen, sobald EA da ist. Wenn es nicht funktioniert, die Art und Weise, die ich will, dann wird es ändern.

 
//+------------------------------------------------------------------+
//|                                                          jkh.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

bool wannaBuy = true;
bool wannaBuy1 = true;
extern double LotSize = 0.01;
extern string symbol1 = "EURUSD";
extern string symbol2 = "USDCHF";
extern int MaxDifference = 6;
extern int Slippage = 3;
extern int Magicnumber1 = 786;
extern int Magicnumber2 = 123;
int sendticket = 3;
string pairs[18];

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
pairs[0] = symbol1;
pairs[1] = symbol2;
wannaBuy = true;
wannaBuy1 = true;

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   // Send order for EURUSD & USDCHF
   if ( wannaBuy) {   
   int ticket1;
   RefreshRates();
   ticket1 = OrderSend( symbol1, OP_BUY, LotSize, MarketInfo( symbol1,MODE_ASK), Slippage, 0, 0, 0,0, Magicnumber1,0) & OrderSend( symbol2, OP_BUY, LotSize, MarketInfo( symbol2,MODE_ASK), Slippage, 0, 0, 0,0, Magicnumber2,0);
   if ( ticket1 <0 )
   {
   Print ("OrderSend failed with error #", GetLastError());
   return(0);
   }
   wannaBuy = false;
   }

//----
   return(0);
  }
//+------------------------------------------------------------------+
Hier ist ein einfacher Code zum Öffnen von EURUSD und USDCHF in einem Chart. Auch ea ist auf einem anderen Chart hinzugefügt, so dass es EURUSD und USDCHF öffnen wird.
 
tigersoft:
Hier ist ein einfacher Code zum Öffnen von EURUSD und USDCHF in einem Chart. Auch ea ist auf einem anderen Diagramm hinzugefügt, so dass es EURUSD und USDCHF öffnen wird.

Ziemlich ordentlich. Danke tigersoft

 
cloudbreaker

Das ist nicht korrekt. Die Funktion OrderSend() kann für jedes Symbol ausgeführt werden, das Sie als ersten Parameter angeben, unabhängig vom Chart.

Und Sie können die jüngsten Geld- und Briefkurse für Symbole außerhalb des aktuellen Charts abrufen, indem Sie die Funktion MarketInfo() verwenden.

Sie haben also folgende Möglichkeiten.

- Ein und derselbe EA wird an viele Charts angehängt und arbeitet für das native Symbol jedes Charts (unter Verwendung der integrierten Variablen Ask und Bid)

- Sie haben einen EA, der an einen bestimmten Chart angehängt ist und für alle ausgewählten Symbole ausgeführt wird (mit der Funktion MarketInfo() für nicht-native Symbole) - wobei nur die Ticks des nativen Symbols als Auslöser verwendet werden

- Master- und Slave-EAs, die an verschiedene Charts angehängt sind, wobei der eine durch den anderen ausgelöst wird (z. B. schreibt der eine einen Wert in eine Datei, der andere liest die Datei ständig, bis er diese Daten findet und handelt dann)


Hallo, könnten Sie die Option #3 näher erläutern?


Und wie würden die Preis-/Indikatorberechnungen mit nicht-einheimischen Symbolen unter Verwendung von Option #2 funktionieren? Ich verstehe zwar, wie man Aufträge an nicht-native Symbole sendet, aber nicht, wie man auf Einstiegsbedingungen bei nicht-nativen Symbolen prüft.

 
skyhr:

Hallo, könnten Sie die Option Nr. 3 näher erläutern?


Und wie würden die Preis-/Indikatorberechnungen mit nicht-nativen Symbolen unter Verwendung von Option#2 funktionieren? Ich verstehe zwar, wie man Aufträge an nicht-einheimische Symbole sendet, aber nicht, wie man auf Einstiegsbedingungen für nicht-einheimische Symbole prüft.

Verwenden Sie die Funktion MarketInfo() für nicht-einheimische Symbole. Es ist ein Freund :)

 
skyhr

Hallo, könnten Sie die Option Nr. 3 näher erläutern?


Und wie würden die Preis-/Indikatorberechnungen mit nicht-nativen Symbolen unter Verwendung von Option#2 funktionieren? Ich verstehe zwar, wie man Aufträge an nicht-native Symbole sendet, aber nicht, wie man auf Einstiegsbedingungen bei nicht-nativen Symbolen prüft.

Option 3 - Schreiben Sie einfach einen Wert in eine Datei von einem EA, der ein bestimmtes Symbol überwacht. Lassen Sie einen anderen EA diese Datei überwachen und ein bestimmtes Stück Logik ausführen, wenn dieser Wert vorhanden ist.

Option 2 - Verwenden Sie die Funktion MarketInfo(), um die Brief- und Geldkurse für nicht-native Symbole abzurufen, anstatt die Variablen Ask und Bid zu verwenden, die nur für das native Symbol gelten.

 
cloudbreaker:

Option 3 - schreiben Sie einfach einen Wert in eine Datei von einem EA, der ein bestimmtes Symbol überwacht. Lassen Sie einen anderen EA diese Datei überwachen und ein bestimmtes Stück Logik ausführen, wenn dieser Wert vorhanden ist.

Option 2 - Verwenden Sie die Funktion MarketInfo(), um die Brief- und Geldkurse für nicht einheimische Symbole abzurufen, anstatt die Variablen Ask und Bid zu verwenden, die nur für das einheimische Symbol gelten.

Ich denke, beide Ansätze sind gut.

Das Einzige, was ich hinzufügen möchte, ist, dass Option 2 aufgrund des geringeren Overheads einen Leistungsvorteil hat. Alles wird im Speicher abgelegt, was natürlich schneller ist als eine Dateioperation.

Ein Vorteil von Option #3 ist, wenn Sie die Dateidaten für etwas verwenden wollen, was MT4 nicht kann.