Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1598
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ich möchte noch hinzufügen, dass es NICHT GARANTIERT ist, dass das Terminal eine ausreichende Historie hat und diese auch liefern wird.
im obigen Beispiel gibt es keinen Hinweis auf die Geschichte
damit gewährleistet ist, dass das Ergebnis von OrderSelect() wahr ist
UPD: OrderSelect in 4 funktioniert sehr gut, habe es einmal getestet - für Market Orders ist der Zeitpunkt des Zugriffs auf die Ordereigenschaften.... es sind wirklich Millionen von Malen pro Sekunde, ich will es nicht nachschlagen, ich glaube, ich habe mich mit Moderator Artem gestritten, aber wie man so schön sagt, "alle Zehenspitzen sind unterschiedlich", ich mag es - behalte es
Hallo, es besteht Bedarf an Daten über die Inanspruchnahme der einzelnen Transaktionen.
Kann jemand ein Skript kennen, das solche Statistiken sammelt und in Form eines Berichts ausgibt?
Dankeschön
Hallo, es besteht Bedarf an Daten über die Inanspruchnahme der einzelnen Transaktionen.
Kann jemand ein Skript kennen, das solche Statistiken sammelt und in Form eines Berichts ausgibt?
danke
for(int i=OrdersTotal()-1;i>=0;i--) {
if (!OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue;
double prosad=DBL_MIN;
if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue;
for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) {
double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() );
delta /= MarketInfo(OrderSymbol(),MODE_POINT);
if (delta>prosad) prosad=delta;
}
PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE);
}
es ist "handgeschrieben", ungetestet und voller Bugs :-) passen Sie es einfach an Ihre Bedürfnisse an und benutzen Sie es
for(int i=OrdersTotal()-1;i>=0;i--) {
if (!OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue;
double prosad=DBL_MIN;
if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue;
for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) {
double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() );
delta /= MarketInfo(OrderSymbol(),MODE_POINT);
if (delta>prosad) prosad=delta;
}
PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE);
}
von Hand" geschrieben, nicht geprüft, voller Fehler :-) an Ihre Bedürfnisse anpassen und verwenden
Danke, ich werde versuchen, es herauszufinden!
@Igor Makanu, vielen Dank für Ihre Antworten zur Sortierung der Aufträge im Terminal. Ich werde sie wahrscheinlich als eine Reihe von Strukturen speichern und sie selbst sortieren. Ich hatte vor allem deshalb Bedenken, weil ich befürchtete, dass solche bei jedem Tick durchgeführten Aktionen die Leistung spürbar beeinträchtigen würden.
Warum also nach jedem Häkchen sortieren? Das reicht nur, wenn sich die Anzahl der Einträge ändert oder die Liste sich komplett ändert...
im obigen Beispiel gibt es keinen Hinweis auf die Geschichte
damit gewährleistet ist, dass das Ergebnis von OrderSelect() wahr ist
UPD: OrderSelect in 4 funktioniert sehr gut, ich habe es einmal getestet - für Market Orders ist der Zeitpunkt des Zugriffs auf die Ordereigenschaften.... es sind wirklich Millionen von Malen pro Sekunde, ich will es nicht nachschlagen, ich glaube, ich habe mich mit Moderator Artem gestritten, aber wie man so schön sagt, "alle Zehenspitzen sind unterschiedlich", ich mag es - behalte es