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

 
Mickey Moose: Fertig, was ich wollte, kann ich es Ihnen zur Überprüfung schicken. Es ist großartig. Aber es ist verboten, sie hier zu veröffentlichen.

in Person... Ich liebe undichte Stellen... Ich habe es absichtlich getan. Wenn die Demo die Einlage 15 Mal an einem Tag erhöht, werde ich sie zurückziehen. Ich möchte morgen vergleichbare Ergebnisse haben.

 
STARIJ:
Requotes im Tester? Das ist das erste, was ich höre...

Hier ist der Beweis. Der Anfang:


und das Ende:

und das Ende:




"Geben Sie also in den EA ein, dass Sie, wenn dies der Fall ist, aussteigen und beim nächsten Tick weitermachen."Das steht im Kodex.

 
novichok2018:

Hier ist der Beweis. Der Anfang:


und das Ende:

und das Ende:




"Geben Sie also in den EA ein, dass Sie, wenn dies der Fall ist, aussteigen und beim nächsten Tick weitermachen." - Dies steht im Code.

Nun und schreiben If(tester) if(25. oder 26. Januar) return

 
STARIJ:

Nun und schreiben If(tester) if(25. oder 26. Januar) return

Ich verstehe nicht, warum. Wird es dazu beitragen, eine Wiederholung des Misserfolgs zu vermeiden? Die Hauptsache ist, dass die Positionen geschlossen werden, und wenn der Grund für die unscharfe Befehlsausführung ein Fehler des Testers ist, dann ist alles in Ordnung. Um sicher zu sein, dass die Ursache der anderen, wahrscheinlich haben, um für die Wiederholung der Situation warten, wenn mit einem offenen Sell(BAY) wird BAY(SEL) zu öffnen, und sehen, wie sie zu schließen.

 
novichok2018:

Das ist genau das, was ich brauche, oder besser gesagt nur fürBuy and Sell. Bei meiner einfachen Strategie kommt es vor allem darauf an, dass sich die offenen Positionen nicht gegenseitig in die Quere kommen. Vielleicht können wir ohne Arrays auskommen? Ich verstehe sie nicht: wie man sie schafft, wie man sie angeht - ich tappe im Dunkeln. Vielleicht wird Ihnen meine Situation auf dem Screenshot klarer:

Im Code scheint alles einfach und klar zu sein, aber das ist der einzige Fall von Verwirrung.

Wenn wir die Buchhaltung für Verkaufs- und Kaufaufträge aufteilen müssen, deklarieren wir zwei Arrays und zwei Zähler für jeden von ihnen:

int g_nBuyOrdersCnt, g_nSellOrdersCnt;
OrderInfo  arrstBuyOrderInfo[MAX_ORDERS_CNT], arrstSellOrderInfo[MAX_ORDERS_CNT];

Daher wird der Datenerhebungszyklus wie folgt aussehen:

g_nBuyOrderCnt = 0;
g_nSellOrdersCnt = 0;
for (int i = OrdersTotal() - 1; i >= 0; --i)
{
   if (!OrderSelect(i, SELECT_BY_POS))
      continue;

   if (OrderSymbol() != Symbol())   // Если нужны ордера только по текущему символу, к графику которого прикреплен советник
      continue;

   if (OrderMagicNumber != i_nMagicNumber)  // Если имеется входной параметр советника i_nMagicNumber, в котором указан ID ордеров советника
      continue;

   if (OrderType() == OP_BUY)
      SaveOrderInfo(g_arrstBuyOrderInfo, g_nBuyOrdersCnt);
   if (OrderType() == OP_SELL)
      SaveOrderInfo(g_arrstSellOrderInfo, g_nSellOrdersCnt);
}

void SaveOrderInfo(OrderInfo &arrstOrderInfo[], int &nOrdersCnt)
{
   if (nOrderCnt >= MAX_ORDERS_CNT)
      return;

   arrstOrderInfo[nOrdersCnt].nTicket = OrderTicket();
   arrstOrderInfo[nOrdersCnt].nType = OrderType();
   arrstOrderInfo[nOrdersCnt].fOpenPrice = OrderOpenPrice();
   arrstOrderInfo[nOrdersCnt].fSL = OrderStopLoss();
   arrstOrderInfo[nOrdersCnt].fTP = OrderTakeProfit();

   ++nOrdersCnt;
}

Dann müssen wir im Expert Advisor nur noch wie folgt vorgehen, um festzustellen, ob ein Kauf- oder Verkaufsauftrag vorliegt:

if (g_nBuyOrdersCnt > 0)
{
   // Есть ордера Buy
}
 
novichok2018:

Können wir nicht doch auf Arrays verzichten?

Auf Arrays kann nur dann verzichtet werden, wenn von jedem Typ nicht mehr als ein Auftrag zu erwarten ist. Dann degeneriert das Array zu einer Variablen vom Typ OrderInfo-Struktur (oder einem Array der Größe 1).

Aber wie ich in der obigen Abbildung sehe, ist dies nicht der Fall. Sie können mehr als einen Auftrag von jeder Art auf einmal haben.
 
novichok2018:

Hier ist der Beweis. Start:

Dies zeigt, dass es sich bei der Schließung eines Auftrags nicht um den Marktpreis handelt. Zum Beispiel wird Buy zum Ask geschlossen, während Sell zum Bid geschlossen wird. Wenn Sie sich Ihren Code ansehen, kann dies durchaus der Fall sein, da vor dem Abschluss keine Prüfung der Auftragsart erfolgt.

 

Nochmals guten Abend. Das Wesentliche der Frage.

Ich setze einen EA (funktioniert) in den Markt. MT4-Plattform. Ich kann eine einzelne Datei anzeigen. Eine Datei des Expert Advisors. Es sollte die Gültigkeit bestehen, kann es aber nicht, weil es ein EA ohne Indikatoren ist. Sie befinden sich in separaten Dateien. Der Expert Advisor arbeitet mit vier Indikatoren. Sie müssen irgendwie mit dem Expert Advisor verbunden sein. Sie müssen den Pfad angeben, d. h. sie in den Expert Advisor schreiben. Bitte teilen Sie uns mit, welches Formular und wie Sie dies tun können.

Soviel ich weiß, müssen wir die "Ressourcen" verwenden. Ich weiß nicht, wie ich sie korrekt im Expert Advisor registrieren kann. Vielleicht kennen Sie andere Lösungen.

Ich danke Ihnen.

So sieht es aus, wenn es die Gültigkeit nicht besteht

 2016.04.01 00:00:00 kann Datei 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' nicht öffnen [2] 2016.04.01 00:00:00 kann Datei 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' nicht öffnen [2]01 00:00:00 kann Datei 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' nicht öffnen [2] 2016.04.01 00:00:00 kann Datei 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' nicht öffnen [2] 2016.04.01 00:00:00 kann Datei 'MQL4\indicators\HA_Smooth.ex4' [2] 2016.04.01 00:00:00 kann Datei 'MQL4\indicators\HA_Smooth.ex4' nicht öffnen [2] 2016.04.01 00:00:00 kann Datei 'MQL4\indicators\TrendLord.ex4' nicht öffnen [2] 2016.04.01 00:00:00 kann Datei 'MQL4\indicators\TrendLord.ex4' [2] 2016.04.01 00:00:05 kann die Datei 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:05 kann die Datei 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:0504.01 00:00:05 kann Datei 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' nicht öffnen [2] 2016.04.01 00:00:05 kann Datei 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' nicht öffnen [2] 2016.04.0101 00:00:05 kann Datei 'MQL4\indicators\HA_Smooth.ex4' nicht öffnen [2] 2016.04.01 00:00:05 kann Datei 'MQL4\indicators\HA_Smooth.ex4' nicht öffnen [2] 2016.04.01 00:00:05 kann Datei 'MQL4\indicators\TrendLord.ex4' nicht öffnen [2] 2016.04.0101 00:00:05 kann Datei 'MQL4\indicators\TrendLord.ex4' nicht öffnen [2] 2016.04.01 00:00:10 kann Datei 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' nicht öffnen [2] 2016.04.01 00:00:10 kann Datei 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:10 kann Datei 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' nicht öffnen [2] 2016.04.01 00:00:10 kann Datei 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' nicht öffnen [2]

 
Ihor Herasko:


Vielen Dank für Ihre umfassenden und sehr klaren Antworten.

 
Ihor Herasko:

Wenn wir die Buchhaltung der Aufträge in Kauf und Verkauf aufteilen müssen, deklarieren wir zwei Arrays und zwei Zähler für jeden von ihnen:

Daher wird der Datenerhebungszyklus wie folgt aussehen:

Dann müssen wir im Expert Advisor nur noch wie folgt vorgehen, um festzustellen, ob ein Kauf- oder Verkaufsauftrag vorliegt:

Könnten Sie bitte diese Zeile Ihres Codes erklären:OrderInfo arrstBuyOrderInfo[MAX_ORDERS_CNT], arrstSellOrderInfo[MAX_ORDERS_CNT]; Warum hatOrderInfo keine Klammern und keinen Typ angegeben? und all dies wird auf globaler Ebene deklariert?

Und die Ermittlung der Auftragsverfügbarkeit wird in die Funktion des Bestandsabschlusses eingefügt? Wo? Und vielleicht sollte die Funktion zum Schließen von Positionen mit Arrays irgendwie anders aussehen? Es ist ein bisschen kompliziert für mich. Ich danke Ihnen.


Ich habe versucht, Ihr Beispiel zu verwenden, aber der Compiler schimpft mich aus...

Und es flucht auch über die Beispiele aus dem Lernprogramm.