Domande da un "manichino" - pagina 205

 
Renat:

Dopo aver cambiato la lingua in Metaeditor, l'hai riavviato?

Controlliamo.

Tutto funziona bene, ho caricato mql5_russian.chm, impostato il russo in MetaEditor-e, ricaricato, l'aiuto appare in russo.
 

Ho scritto questo codice per controllare la posizione:

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);
}

Ma per qualche motivo nel commento i valori appaiono con 4 cifre decimali. Invece di _Digits mettere 5 ancora 4 caratteri, mettere 3 - 3 caratteri.

 
paladin800: Per qualche motivo, i valori appaiono con 4 cifre decimali nei commenti. Invece di _Digits mettere 5 ancora 4 cifre, mettere 3 - 3 cifre.
E se emetto solo myposition.PriceOpen(), cosa mostrerà?
 
paladin800:

Ho scritto questo codice per controllare la posizione:

Ma per qualche motivo nel commento i valori appaiono con 4 cifre decimali. Invece di _Digits mettere 5 ancora 4 caratteri, mettere 3 - 3 caratteri.

Probabilmente avete bisogno della funzione DoubleToString().

 
paladin800:

Ho scritto questo codice per controllare la posizione:

Ma per qualche motivo nel commento i valori appaiono con 4 cifre decimali. Invece di _Digits mettere 5 ancora 4 caratteri, mettere 3 - 3 caratteri


Il formato per l'output di numeri frazionari nei commenti è il seguente. Convertire i doppioni in tipi di stringa e mostrarli nei commenti.
 
Come si imposta il saldo iniziale del conto? Voglio impostare la dimensione del lotto in base al profitto totale del conto. Allora, come faccio a determinare correttamente il bilancio iniziale?
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете - Документация по MQL5
 
tor4en: Come posso determinare il saldo iniziale del conto? Voglio specificare la dimensione del lotto in base al profitto totale del mio conto. Allora, come determinare correttamente questo equilibrio iniziale?

Un deposito è accompagnato da una registrazione

STATO_DI_ENTRATA

Segno di ingresso di stato

Questa è la direzione in cui guardare.

 

Sono confuso su myposition.Type(). Ho fatto la seguente cosa per controllare:

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);

Il risultato del test con la visualizzazione è il seguente:
1) non c'è posizione: classtype=no position, functype=no position // come previsto
2) c'è una posizione di vendita: classtype=BUY, functype=SELL // classtype ha determinato erroneamente la direzione della posizione
3) c'è una posizione di acquisto: classtype=BUY, functype=BUY // come dovrebbe essere

Ho provato a mettere if (myposition.Select(_Symbol)) invece di if (PositionSelect(_Symbol)), il risultato è lo stesso. Forse myposition.Type() dovrebbe essere scritto diversamente per determinare correttamente la direzione di vendita?

 
paladin800:

Sono confuso su myposition.Type(). Ho fatto la seguente cosa per controllare:

Quando si prova con la visualizzazione, il risultato è il seguente:
1) non c'è posizione: classtype=no position, functype=no position // come richiesto
2) c'è una posizione di vendita: classtype=BUY, functype=SELL // classtype ha determinato erroneamente la direzione della posizione
3) c'è una posizione di acquisto: classtype=BUY, functype=BUY // come dovrebbe essere

Ho provato a mettere if (myposition.Select(_Symbol)) invece di if (PositionSelect(_Symbol)), il risultato è lo stesso. Forse myposition.Type() dovrebbe essere scritto diversamente per una corretta determinazione della direzione di vendita?

Se guardate attentamente la classe CPositionInfo "con X-ray", potete notare che il metodo Type() non restituisce il tipo di posizione (a differenza del metodo 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:

Se guardate attentamente la classe CPositionInfo "X-rayed", noterete che il metodo Type() non restituisce un tipo di posizione (a differenza del metodo PositionType()).

Grazie mille. Ha funzionato con il tuo suggerimento! Sono stato guidato dall'articolo How to Use the Standard Library Trade Classes When Writing an EA, e lì nella sezione "1.6 CPositionInfo Class" c'è myposition.Type(), che probabilmente deve essere corretto.