Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1601

 
PapaYozh:

Dieser beginnt bei Index Null, also von Anfang an.

Ich bin verwirrt... Sie haben völlig recht!
 
PapaYozh:

Dieser sucht ab dem Null-Index, d.h. von Anfang an.

PapaYozh:

Dieser geht vom Null-Index aus, d.h. von Anfang an.

Ahh... Jetzt macht das alles Sinn, danke.

 
Maxim Kuznetsov:

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, ungetestet, voller Fehler :-) passen Sie es an Ihre Bedürfnisse an und verwenden Sie es

Bitte sagen Sie mir, was -"!" in Ihrem Code bedeutet?

Ich verstehe es noch nicht so gut

oder kann mir das vielleicht jemand anderes als der Autor erklären?

 
законопослушный гражданин:

Bitte sagen Sie mir, was bedeutet -"!" in Ihrem Code?

Ich verstehe das noch nicht ganz.

oder kann mir das jemand anderes als der Autor erklären?

! - dies ist eine boolesche Negation, NOT

if { !OrderSelect() } entspricht "if OrderSelect is NOT successful".

!= bzw. "NICHT gleich"

 
Maxim Kuznetsov:

! - ist eine boolesche Negation, NOT

if { !OrderSelect() } wird übersetzt als "if NOT successful OrderSelect".

!

danke

 
Maxim Kuznetsov:

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, mit vielen Fehlern :-) passen Sie es an Ihre Bedürfnisse an und verwenden Sie es

Ich habe zwar den Code "bereinigt", aber diese Zeile zeigt eine Warnung for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--)

möglicher Datenverlust aufgrund von Typumwandlung

Sie können nicht herausfinden, was los ist?

 
законопослушный гражданин:

Ich scheine den Code "bereinigt" zu haben, aber in dieser Zeile for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) erscheint die Warnung:

möglicher Datenverlust aufgrund von Typumwandlung

Ich kann nicht herausfinden, was los ist?

Ich habe die Parameter verwechselt... das ist ein übliches Durcheinander, wenn es "on the fly" direkt ins Forum geschrieben wird, ohne das Terminal zu benutzen

iBarShift(OrderSymbol(),PERIOD_M1,OrderOpenTime()) sollte sein

 
Maxim Kuznetsov:

Parameter verwechselt... häufige Verwirrung, wenn man "on the fly" direkt ins Forum schreibt und dabei das Terminal umgeht

iBarShift(OrderSymbol(),PERIOD_M1,OrderOpenTime()) sollte sein

danke

 
законопослушный гражданин:

Ich scheine den Code "bereinigt" zu haben, aber in dieser Zeile for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) erscheint die Warnung:

möglicher Datenverlust aufgrund von Typumwandlung

Ich kann nicht herausfinden, was los ist?

Kann ich dieses ganze "Ding" an meinen Expert Advisor anhängen und es durch den Strategietester laufen lassen, mit Ausgabe der Informationen im Testbericht?

Wird es funktionieren?

 

Gibt es Tipps, wie man damit umgehen kann?

Im Tester in der Historie führt eine einfache Auftragsöffnung manchmal zu einem Fehler...

OrderSend(_Symbol,OP_SELL,0.5,Bid,0,0,0,NULL,0)
2021.08.26 14:56:33.375 2017.08.07 08:00:00  Trader EURUSD,H1: OrderSend error 3

ERR_INVALID_TRADE_PARAMETERS - was zum Teufel ist das und was bedeutet es?