[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 227

 
Neo333:
Hallo, hier ist das Problem: Der EA setzt Pending Limit Orders, dann bewegt sich der Preis und die Orders werden zu Market Orders. Alles funktioniert, aber bei einigen Aufträgen gibt es eine absolut unklare Panne, da alle Aufträge durch eine bestimmte feste Konstante "K" festgelegt sind, sollte der Abstand zwischen ihnen immer eine Konstante sein (Rn+1 = Rn + "K"). Wenn wir die Ergebnisse der arithmetischen Operationen mit den Preisen überprüfen, d.h. wenn wir einfach subtrahieren und das Ergebnis überprüfen, ist es gleich "K"; aber der logische Vergleich == zeigt immer noch falsch an und das führt dazu, dass der EA ständig Aufträge zu diesem Preis öffnet und somit "denkt", dass es keinen Auftrag gibt. Tut mir leid, wenn es zu lang ist, ich wollte es nur etwas ausführlicher erklären. Ehrlich gesagt, ich weiß nicht, was ich tun soll :(
Wenn Sie nach == vergleichen, dann verwenden Sie NormalizeDouble, im Allgemeinen die bessere MathAbs(Price1-Price2)<delta
 
VladimirR:

Herzlichen Dank! Aber es gibt diesen 2011.09.30 21:26:49 TestGenerator: nicht übereinstimmende Datenfehler (Volumengrenze 13634 am 2011.07.19 20:00 überschritten)

Soweit ich verstanden habe, betrifft diese Meldung nicht den Expert Advisor, aber ich würde trotzdem gerne wissen, wie sie zu verstehen ist?



Ungereimtheiten im Zeitrahmen der Geschichte. https://www.mql5.com/ru/forum/108760
 
sergeev:

Hilfe bei der Behebung der Funktion


73
Eugene1 30.09.2011 16:19

Ich versuche, eine Funktion zu schreiben, die den Schlusskurs der letzten Bestellung ermittelt (nach der Zeit, die der aktuellen Zeit am nächsten kommt)

Ich schreibe es so:


Aber

tun

uble PriceCloseLastPos(string smb = "", int cmd = -1, int mMin = -1, int mMax = -1) {
int ticketDateTime=0;
int orderTicket=-1;
double closePreis = 0;
int ordTotal = OrdersTotal();
if (smb == "0") smb = Symbol();
for (int i = 0; i < ordTotal; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol() == smb || smb == "") {
if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
if (cmd < OP_BUY || OrderType() == cmd) {
if (mMin < 0 || (OrderMagicNumber() >= mMin && OrderMagicNumber() <= mMax)) {
if (ticketDateTime < OrderCloseTime()) {
ticketDateTime = OrderCloseTime();
orderTicket = OrderTicket();
closePrice = OrderClosePrice();
}
}
}
}
}
}
}
if(orderTicket > -1) OrderSelect(orderTicket, SELECT_BY_TICKET, MODE_HISTORY );
return(closePrice);
}

Aber aus irgendeinem Grund gibt die Funktion die Daten der allerersten Bestellung zurück, die im Prüfgerät geöffnet wurde.

Eigentlich ist das mein Zwischenziel. Ich wollte eine Funktion schreiben, die den letzten Schlusskurs eines Teilauftrags (nicht für das gesamte Losvolumen) angibt, aber ich weiß nicht, wie ich das anstellen soll...

int ordTotal = OrdersTotal();

Stattdessen...

int ordTotal = OrdersHistoryTotal();

... Nächste ...

if(orderTicket > -1) OrderSelect(orderTicket, SELECT_BY_TICKET, MODE_HISTORY );

Hier sehe ich, dass Ihr Wissen nicht sehr gut ist. Bei der Auswahl einer Bestellung nach Ticket wird der Parameter Pool ignoriert. D.h. es ist nutzlos, MODE_HISTORY zu schreiben - dieser Parameter bezieht sich nur auf die Auswahl nach Index.

Wenn ein Auftrag per Ticket ausgewählt wurde, müssen Sie die Schließungszeit überprüfen, um sicherzustellen, dass er in der Liste der geschlossenen Aufträge ausgewählt ist. Er muss größer als Null sein - nur geschlossene Positionen haben diesen Parameter >0.

 
Auf dem 5-Minuten-Zeitrahmen im MT4-Handelsterminal wird die Historie nicht angezeigt. Kann dieses Problem gelöst werden?
 
rosman:
Auf dem 5-Minuten-Zeitrahmen im MT4-Handelsterminal wird die Historie nicht angezeigt. Kann dieses Problem gelöst werden?
Ich entschuldige mich für die dumme Frage. Ich meinte, dass der Verlauf vor November 2010 nicht angezeigt wird :)
 
rosman:
Ich entschuldige mich für die unverblümte Frage. Ich meinte, dass der Verlauf vor November 2010 nicht angezeigt wird :)

Dann gibt es sie nicht. Sie können auch klarstellen. Versuchen Sie, in den MT4-Einstellungen mehr Balken auf dem Diagramm zu erstellen.

Das Problem wird durch das Herunterladen oder den Kauf einer längeren Geschichte gelöst.

 
Zhunko:

Dann gibt es sie nicht. Sie können auch klarstellen. Versuchen Sie, in den MT4-Einstellungen mehr Balken auf dem Diagramm zu erstellen.

Dies kann durch das Herunterladen oder den Kauf einer längeren Geschichte gelöst werden.

Service>Einstellungen>Registerkarte Diagramme >maximale Anzahl der Balken im Fenster war 65 000 --> geändert auf 100 000 oder mehr, immer noch nur November 2010 ist das Neueste. Das Kursarchiv für dieses Instrument und diesen Zeitrahmen ist vollständig geladen - bis hinunter zum November 1999
 
Wie viele Takte hat die Geschichte maximal? Vielleicht ist die Geschichte ja schon zu Ende erzählt.
 
Zhunko:
Wie viele Takte hat die Geschichte maximal? Vielleicht ist die Geschichte ja schon zu Ende erzählt.
Ist 10.000.000 wert.
 
Laden Sie das Archiv hoch. Ich schaue mir meine an.