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

 
Alexey Viktorov:
Haben Sie versucht, auf 2 Ziffern zu normalisieren?

Und was normalisieren? Der aktuelle Preis, und dann vergleichen..... mit was?

Ich weiß nicht, wovon Sie sprechen
.

 
Vyacheslav Kornev:

Ich habe ein MacBook. Ich kann nicht einmal aus dem Meta-Editor kopieren

Entschlüsseln Sie die Werte und den Typ der Variablen im zweiten Fall.
 
Victor Nikolaev:

Entschlüsseln Sie die Werte und den Typ der Variablen im zweiten Fall.





 
mila.com:

Hallo.

Bitte helfen Sie mit, die Tatsache zu korrigieren, dass der aktuelle Preis einen beliebigen runden Preis kreuzt, nicht einen bestimmten wie im Beispiel.

Zum Beispiel:

oder

static double prevBid=EMPTY_VALUE;

if (prevBid!=EMPTY_VALUE && prevBid<=levelPrice && Bid > levelPrice ) {

   /// цена пересекла уровень снизу вверх

}

prevBid=Bid;

 
mila.com:

Hallo.

Bitte helfen Sie mit, die Tatsache zu korrigieren, dass der aktuelle Preis einen beliebigen runden Preis kreuzt, nicht einen bestimmten wie im Beispiel.

Zum Beispiel:

oder

//===============================================================================================
//---------------------------- Возвращает ближайший круглый уровень ----------------------------+
//===============================================================================================
double GetUniversalLevel(int ne=100, string symb="0") {
 if(symb=="0") symb=Symbol();
 static double LastBid;
 double _Level=0, PriceStep=0, bid=0, point=0;
 bid=SymbolInfoDouble(symb,SYMBOL_BID);
 point=SymbolInfoDouble(symb,SYMBOL_POINT);
  if(LastBid<point) LastBid=bid;
   PriceStep=ne*point;
   _Level=MathRound(bid/PriceStep)*PriceStep;
  LastBid=bid;
  return(_Level);
 }

Aufruf von

//double R_Level = GetUniversalLevel(100, Symbol()); // круглые 100
double R_Level = GetUniversalLevel(50, Symbol()); // круглые 50
// дальше надеюсь разберётесь
Comment(R_Level );
 
Vyacheslav Kornev:






Versuchen wir nun, die Werte in der Formel zu ersetzen

if (St==7)
  {
     double Pris_Lin=0;
     Lots0=(L(OP_SELL)+(Bid-0)/10*Lotsc;  
     // Для Евро 
     // Lots0=(L(OP_SELL)+(1.10890-0)/10*0.1;
     // Lots0=(L(OP_SELL)+0.0110890;
     
     .....................
     if (Op_Pr>=Bid)
        Lots0=L(OP_SELL);
     if (Lotsc>Lots0) Loys0=Lotsc;
  }

Wird die Losgröße entsprechend den Anforderungen des DC gerundet, so erhöht sich die Losgröße entweder um 0,01 oder bleibt unverändert.

Aber es wird nicht gerundet, also gibt es nur einen Fehler - Ungültiges Losvolumen.

 
Victor Nikolaev:


Versuchen wir nun, die Werte in der Formel zu ersetzen

Wird die Losgröße entsprechend den Anforderungen des DC gerundet, so erhöht sich die Losgröße entweder um 0,01 oder bleibt unverändert.

Aber es wird nicht gerundet, also gibt es nur einen Fehler - Ungültiges Losvolumen.


Eigentlich ist Pris_lin ein Preis, und er ist nie gleich Null
 
Vyacheslav Kornev:

Eigentlich ist Pris_lin ein Preis und er ist niemals Null.

Sehen Sie sich den Code, den Sie auf der vorherigen Seite gepostet haben, genau an.
 
Victor Nikolaev:

Sehen Sie sich den Code, den Sie auf der vorherigen Seite veröffentlicht haben, genau an.

Ja, das kann ich sehen. Deshalb bitte ich um Hilfe.
 
Victor Nikolaev:

Sehen Sie sich den Code, den Sie auf der vorherigen Seite veröffentlicht haben, genau an.

Ich muss den Preis nehmen und dann modulo die Differenz berechnen und das war's (Bid - Pris_lin)
Grund der Beschwerde: