Preguntas de un "tonto" - página 205

 
Renat:

Después de cambiar el idioma en el Metaeditor, ¿lo has reiniciado?

Vamos a comprobarlo.

Todo funciona bien, he cargado mql5_russian.chm, he puesto el ruso en MetaEditor-e, he recargado, la ayuda aparece en ruso.
 

He escrito este código para comprobar la posición:

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

Pero por alguna razón en el comentario los valores aparecen con 4 decimales. En lugar de _Digits poner 5 todavía 4 caracteres, poner 3 - 3 caracteres.

 
paladin800: Por alguna razón, los valores aparecen con 4 decimales en los comentarios. En lugar de _Dígitos poner 5 aún 4 dígitos, poner 3 - 3 dígitos.
Y si sólo emito myposition.PriceOpen(), ¿qué mostrará?
 
paladin800:

He escrito este código para comprobar la posición:

Pero por alguna razón en el comentario los valores aparecen con 4 decimales. En lugar de _Digits poner 5 todavía 4 caracteres, poner 3 - 3 caracteres.

Probablemente necesites la función DoubleToString().

 
paladin800:

He escrito este código para comprobar la posición:

Pero por alguna razón en el comentario los valores aparecen con 4 decimales. En lugar de _Digits poner 5 todavía 4 caracteres, poner 3 - 3 caracteres


El formato de salida de los números fraccionarios en los comentarios es el siguiente. Convierte los doblajes a tipos de cadena y los emite en los comentarios.
 
¿Cómo se fija el saldo inicial de la cuenta? Quiero establecer el tamaño del lote en función del beneficio total de la cuenta. ¿Cómo puedo determinar correctamente el saldo inicial?
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете - Документация по MQL5
 
tor4en: ¿Cómo puedo determinar el saldo inicial de la cuenta? Quiero especificar el tamaño del lote en función del beneficio total de mi cuenta. Entonces, ¿cómo determinar correctamente este saldo inicial?

Un depósito va acompañado de un registro

DEAL_ENTRY_STATE

Signo de entrada de estado

Esta es la dirección en la que hay que mirar.

 

Estoy confundido con myposition.Type(). Hice lo siguiente para comprobarlo:

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

El resultado de las pruebas con la visualización es el siguiente:
1) no hay posición: classtype=sin posición, functype=sin posición // como se esperaba
2) hay una posición de venta: classtype=BUY, functype=SELL // classtype ha determinado incorrectamente la dirección de la posición
3) hay una posición de compra: classtype=BUY, functype=BUY // como debe ser

He probado a poner if (myposition.Select(_Symbol)) en lugar de if (PositionSelect(_Symbol)), el resultado es el mismo. ¿Tal vez myposition.Type() deba escribirse de alguna otra manera para que determine correctamente la dirección de la venta?

 
paladin800:

Estoy confundido con myposition.Type(). Hice lo siguiente para comprobarlo:

Al realizar la prueba con la visualización, el resultado es el siguiente:
1) no hay posición: classtype=sin posición, functype=sin posición // como se requiere
2) hay una posición de venta: classtype=BUY, functype=SELL // classtype ha determinado erróneamente la dirección de la posición
3) hay una posición de compra: classtype=BUY, functype=BUY // como debe ser

He probado a poner if (myposition.Select(_Symbol)) en lugar de if (PositionSelect(_Symbol)), el resultado es el mismo. ¿Tal vez myposition.Type() debería escribirse de forma diferente para determinar correctamente la dirección de venta?

Si observas detenidamente la clase CPositionInfo "con rayos X", puedes notar que el método Type() no devuelve el tipo de posición (a diferencia del método 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:

Si observas detenidamente la clase CPositionInfo "X-rayed", notarás que el método Type() no devuelve un tipo de posición (a diferencia del método PositionType()).

Muchas gracias. ¡Funcionó con tu consejo! Me guié por el artículo Cómo utilizar las clases comerciales de la biblioteca estándar al escribir un EA, y allí en la sección "1.6 Clase CPositionInfo" aparece myposition.Type(), que probablemente deba corregirse.
Razón de la queja: