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.
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.
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:
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.
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.
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]
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.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
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.
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.
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
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.
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:
Dann müssen wir im Expert Advisor nur noch wie folgt vorgehen, um festzustellen, ob ein Kauf- oder Verkaufsauftrag vorliegt:
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.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
Vielen Dank für Ihre umfassenden und sehr klaren Antworten.
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.