Fragen von einem "Dummy" - Seite 205

 
Renat:

Haben Sie nach der Änderung der Sprache in Metaeditor einen Neustart durchgeführt?

Schauen wir nach.

Alles funktioniert gut, ich habe mql5_russian.chm geladen, Russisch in MetaEditor-e eingegeben, neu geladen, die Hilfe erscheint auf Russisch.
 

Ich habe diesen Code geschrieben, um die Position zu überprüfen:

CPositionInfo myposition;

if (myposition.Select(_Symbol))
{
   double Open_position=NormalizeDouble(myposition.PriceOpen(),_Digits);
   double SL_position  =NormalizeDouble(myposition.StopLoss(),_Digits);
   double TP_position  =NormalizeDouble(myposition.TakeProfit(),_Digits);
   Comment(" Open_position=",Open_position,"\n",
           " SL_position=",SL_position,"\n",
           " TP_position=",TP_position);
}

Aber aus irgendeinem Grund erscheinen die Werte im Kommentar mit 4 Dezimalstellen. Anstelle von _Digits setzen Sie 5 noch 4 Zeichen, setzen Sie 3 - 3 Zeichen.

 
paladin800: Aus irgendeinem Grund erscheinen die Werte mit 4 Dezimalstellen in den Kommentaren. Anstelle von _Digits setzen Sie 5 noch 4 Ziffern, setzen Sie 3 - 3 Ziffern.
Und wenn ich nur myposition.PriceOpen() ausgebe, was wird dann angezeigt?
 
paladin800:

Ich habe diesen Code geschrieben, um die Position zu überprüfen:

Aber aus irgendeinem Grund erscheinen die Werte im Kommentar mit 4 Dezimalstellen. Anstelle von _Digits setzen Sie 5 noch 4 Zeichen, setzen Sie 3 - 3 Zeichen.

Sie benötigen wahrscheinlich die Funktion DoubleToString().

 
paladin800:

Ich habe diesen Code geschrieben, um die Position zu überprüfen:

Aber aus irgendeinem Grund erscheinen die Werte im Kommentar mit 4 Dezimalstellen. Anstelle von _Digits setzen Sie 5 noch 4 Zeichen, setzen Sie 3 - 3 Zeichen


Das Format für die Ausgabe von Nachkommastellen in Kommentaren ist wie folgt. Konvertieren Sie die Dubs in Stringtypen und geben Sie sie in den Kommentaren aus.
 
Wie lege ich den anfänglichen Kontostand fest? Ich möchte die Losgröße in Abhängigkeit vom Gesamtgewinn des Kontos festlegen. Wie ermittle ich also den Anfangsbestand richtig?
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете - Документация по MQL5
 
tor4en: Wie kann ich den anfänglichen Kontostand ermitteln? Ich möchte die Losgröße in Abhängigkeit vom Gesamtgewinn meines Kontos festlegen. Wie kann man nun diese Anfangsbilanz richtig ermitteln?

Eine Kaution wird von einem Nachweis begleitet

DEAL_ENTRY_STATE

Zeichen des Statuseintrags

Das ist die Richtung, in die wir schauen müssen.

 

Ich bin verwirrt über myposition.Type(). Ich habe Folgendes zur Überprüfung getan:

CPositionInfo myposition;
// ---
string classtype="no position";
string functype="no position";

if (PositionSelect(_Symbol))
{  // --- section SELL
   if (myposition.Type()==POSITION_TYPE_SELL)
       classtype="SELL";
   if (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
       functype="SELL";
   // --- section BUY
   if (myposition.Type()==POSITION_TYPE_BUY)
       classtype="BUY";
   if (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
       functype="BUY";
}
Comment ("classtype=",classtype,", functype=",functype);

Das Ergebnis der Tests mit der Visualisierung ist wie folgt:
1) Es gibt keine Position: classtype=no position, functype=no position // wie erwartet
2) es liegt eine Verkaufsposition vor: classtype=BUY, functype=SELL // classtype hat die Positionsrichtung falsch bestimmt
3) es gibt eine Kaufposition: classtype=BUY, functype=BUY // wie es sein sollte

Ich habe versucht, if (myposition.Select(_Symbol)) anstelle von if (PositionSelect(_Symbol)) einzusetzen, das Ergebnis ist das gleiche. Vielleicht sollte myposition.Type() anders geschrieben werden, um die Verkaufsrichtung korrekt zu bestimmen?

 
paladin800:

Ich bin verwirrt über myposition.Type(). Ich habe Folgendes zur Überprüfung getan:

Bei der Prüfung mit Visualisierung ergibt sich folgendes Bild:
1) Es gibt keine Position: classtype=no position, functype=no position // wie erforderlich
2) es liegt eine Verkaufsposition vor: classtype=BUY, functype=SELL // classtype hat fälschlicherweise die Positionsrichtung bestimmt
3) es gibt eine Kaufposition: classtype=BUY, functype=BUY // wie es sein sollte

Ich habe versucht, if (myposition.Select(_Symbol)) anstelle von if (PositionSelect(_Symbol)) einzusetzen, das Ergebnis ist das gleiche. Vielleicht sollte myposition.Type() anders geschrieben werden, um die Verkaufsrichtung korrekt zu bestimmen?

Wenn Sie sich die Klasse CPositionInfo "mit Röntgenstrahlen" genau ansehen, werden Sie feststellen, dass die Methode Type() nicht den Positionstyp zurückgibt (im Gegensatz zur Methode PositionType()).

   CPositionInfo myposition;
// ---
   string classtype="no position";
   string functype="no position";

   if(PositionSelect(_Symbol))
     {  // --- section SELL
      if(myposition.PositionType()==POSITION_TYPE_SELL)
         classtype="SELL";
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
         functype="SELL";
      // --- section BUY
      if(myposition.PositionType()==POSITION_TYPE_BUY)
         classtype="BUY";
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
         functype="BUY";
     }
   Print("classtype=",classtype,", functype=",functype);
  }
 
uncleVic:

Wenn Sie sich die CPositionInfo-Klasse "X-rayed" genau ansehen, werden Sie feststellen, dass die Methode Type() keinen Positionstyp zurückgibt (im Gegensatz zur Methode PositionType()).

Ich danke Ihnen vielmals. Mit Ihrem Tipp hat es geklappt! Ich habe mich an dem Artikel How to Use the Standard Library Trade Classes When Writing an EA orientiert, und dort steht im Abschnitt "1.6 CPositionInfo Class" myposition.Type(), was wahrscheinlich korrigiert werden muss.