Fragen von Anfängern MQL4 MT4 MetaTrader 4 - Seite 236

 
s4sha45:

Hallo an alle! Ich habe gerade angefangen zu lernen, wie man einen einfachen Handelsroboter aus den Beispielen von YouTube-Videos schreibt. Ich möchte ein Skript schreiben, um den erstenKaufauftragzu öffnen, und es muss sich öffnen, wenn ich keine anderen offenen Aufträge habe, das Skript schrieb dies, aber der Auftrag öffnet sich nicht, bitte beraten Sie, wo der Fehler ist!

<

void OnTick()

{

wenn(OP_SELL==0 && OP_BUY==0)

int ticket=OrderSend(Symbol(),OP_BUY,Lot1,Ask,Slippage,StopLoss,TakeProfit, "Meine Order",MagicNumber,0,clrGreen);

>

Sie haben geschrieben (wortwörtlich auf Russisch):

Wenn 1 gleich 0 und 0 gleich 0 ist, dann eröffnen Sie eine Position.

 
Artyom Trishkin:

Sie haben geschrieben (wortwörtlich auf Russisch):

Wenn 1 gleich 0 und 0 gleich 0 ist, dann eröffnen Sie eine Position.

Im Video hat der Autor diese Zeile als if (b==0&& s==0) geschrieben und es hat funktioniert. und davor hat er keine Variablen b und s eingegeben. vielleicht ist die Version alt. wenn das falsch ist, wie soll dann die Zeile, die feststellt, dass ich keine Aufträge habe, jetzt aussehen?
 
bool FindOrder(int eType, int eMagic, string eSymbol)
   {
   for(int i=OrdersTotal()-1; i>=0; i--)
      {
      if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if(OrderCloseTime()>0) continue;
      if(OrderSymbol()!=eSymbol) continue;
      if(OrderMagicNumber()!=eMagic) continue;
      if(OrderType()!=eType) continue;
      return(true);
      }
   return(false);
   }
bool b=FindOrder(OP_BUY,Magic,Symbol());
if(b)
   {
   
   }
 
s4sha45:

Hallo an alle! Ich habe gerade angefangen zu lernen, wie man einen einfachen Handelsroboter aus den Beispielen von YouTube-Videos schreibt. Ich möchte ein Skript schreiben, um den erstenKaufauftragzu öffnen, und es muss sich öffnen, wenn ich keine anderen offenen Aufträge habe, das Skript schrieb dies, aber der Auftrag öffnet sich nicht, bitte sagen Sie mir, wo der Fehler ist!

<

void OnTick()

  {

  if (OrdersTotal()==0)   int ticket=OrderSend(Symbol(),OP_BUY,Lot1,Ask,Slippage,StopLoss,TakeProfit,"My order",MagicNumber,0,clrGreen);

  }

Wenn Sie einen Auftrag eröffnen müssen, obwohl keine Kauf-, Verkaufs-, Stop- oder Limit-Aufträge vorhanden sind.

OrdersTotal()
Abgeschlossene Aufträge werden nicht berücksichtigt.
 
Александр:

Wenn Sie einen Auftrag eröffnen müssen, obwohl keine Kauf-, Verkaufs-, Stop- oder Limit-Aufträge vorhanden sind.

Abgeschlossene Aufträge werden nicht berücksichtigt.
Ich danke Ihnen!
 

Guten Abend, ich habe eine Frage: Ich muss die Marktpreise bei jedem Tick mit den Preisen aus einer bestimmten CSV-Datei (7 Spalten) vergleichen, wobei die Aufträge in Serien gruppiert sind und die Anzahl der Aufträge in jeder Serie beliebig sein kann. Ich möchte verstehen, was schneller wäre: Zeit für die Initialisierung aufwenden, um ein Array mit allen Daten auf jeder Bestellung zu erstellen, und dann iterieren über das Array auf einem Tick, oder öffnen Sie die Datei und kopieren Sie alles in den Cursor jedes Mal. Ich frage mich, wie lange der Zugriff auf die Datei und das Array ungefähr dauern wird und wie viel Zeit ich dadurch gewinnen werde. Danke!

 
Karomos:

Guten Abend, ich habe eine Frage: Ich muss die Marktpreise bei jedem Tick mit den Preisen aus einer bestimmten CSV-Datei (7 Spalten) vergleichen, wobei die Aufträge in Serien gruppiert sind und die Anzahl der Aufträge in jeder Serie beliebig sein kann. Ich möchte verstehen, was schneller wäre: Zeit für die Initialisierung aufwenden, um ein Array mit allen Daten auf jeder Bestellung zu erstellen, und dann iterieren über das Array auf einem Tick, oder öffnen Sie die Datei und kopieren Sie alles in den Cursor jedes Mal. Ich frage mich, wie lange der Zugriff auf die Datei und das Array ungefähr dauern wird und wie viel Zeit ich dadurch gewinnen werde. Ich danke Ihnen!

Was Sie geschrieben haben, ist nicht ganz klar, aber der Zugriff auf den Speicher ist definitiv schneller als das Lesen aus einer Datei.

 

Hallo. Können Sie mir sagen, ob es möglich ist, das EA-Parameterfenster PROGRAMMATISCH aufzurufen?

Das Problem ist, dass die Parameter nur mit Konstanten initialisiert werden können und ich sie zunächst mit einem bestimmten Algorithmus berechnen möchte.

Ich habe BUY_STOP- und SELL_STOP-Ebenen in meinen EA-Parametern. Eigentlich kann der Expert Advisor diese Niveaus in den meisten Fällen selbst berechnen, ich muss sie nur auf ihre Richtigkeit hin überprüfen.

Daher möchte ich, dass mein EA diese Ebenen beim Start berechnet und sie in die Parameter einfügt und das Parameterfenster anzeigt. Wenn sie korrekt sind, drücke ich auf OK und der EA setzt seinen normalen Betrieb fort. Wenn mein Expert Advisor die Levels falsch identifiziert hat, korrigiere ich sie auf die richtigen Werte. Wenn es unmöglich ist, das Parameterfenster programmatisch anzuzeigen, dann raten Sie, ob wir irgendwie die Parameter initialisieren können (ich habe eine Funktion für ihre Berechnung geschrieben), BEVOR das Parameterfenster des EA angezeigt wird.

 

Liebe Experten!

Können Sie mir sagen, wie ich einen Haftbefehl finden kann?

Die Situation stellt sich wie folgt dar:

- mein EA öffnet 2 Aufträge gleichzeitig. SL ist gleich, TP ist nicht eingestellt.

- Und dann wird mein EA unter bestimmten Umständen die erste Order schließen und ich muss SL in der zweiten Order korrigieren.

Die Frage ist, wie man die zweite Ordnung findet?

Das Problem ist, dass es mehrere offene Paare geben kann. Der Zeitpunkt der Öffnung ist jedoch bei jedem Paar unterschiedlich.


Meiner Meinung nach kann es viele Varianten geben. Wie kann man es einfacher und korrekter machen?

Ich möchte das Ticket nicht in die Kommentare schreiben, weil der Makler es vielleicht löscht.

Die zweite Ordnung kann mit einer anderen Magie versehen werden. Doch damit ist das Problem nicht gelöst.

Wir können nach Zeit oder nach Eröffnungspreis suchen. Aber wo ist die Garantie, dass die zweite Bestellung zum gleichen Preis eröffnet wird?

Was raten Sie?

 

Der Indikator von MT5 zeichnet eine Linie in zwei Farben.

Die Werte der Zeile befinden sich in demselben Puffer.

Gibt es eine Möglichkeit, die Farbe der Linie bei der Abfrage von Werten aus dem Indikator zu identifizieren?