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
@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. Meine Zweifel rührten vor allem daher, dass ich befürchtete, solche bei jedem Tick durchgeführten Aktionen würden sich spürbar negativ auf die Leistung auswirken.
Janis Ozols: @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...
Guten Tag Bitte helfen Sie mir zu verstehen, warum der heruntergeladene Indikator aus dem Navigator nicht in das Diagramm gezogen wird. Sie ist im Katalog enthalten.
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
Moderator Artem streitet nicht. Moderator Artem debattiert :)
Warum gibt isCrossing() nicht 2 zurück? Die Funktion isCrossing() selbst hat einen zweiten if-Eintrag, aber dann gibt es keinen if-Eintrag in OnTick(), wenn isCrossing() == 2 ist. Was ist das für ein Unsinn...
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