Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 817

 
pivomoe:
¿Entiendo correctamente que el método Volume de la clase CPositionInfo devuelve el volumen correspondiente al momento en que se llamó por última vez al método Select()? Es decir, ¿se puede saber el volumen que había hace un mes para este símbolo?
Lo has entendido todo mal. El método Volume de la clase CPositionInfo devuelve el volumen de una posición. La posición que fue seleccionada previamente a través de PositionSelect.
 

Ha explicado cómo preparar CPositionInfo. Sin embargo, sigo sin entender dos cosas:

1) ¿Cómo sigue esta receta la ayuda de la clase CPositionInfo?

2) Para qué necesitamos la clase en sí, si no se puede usar más de un objeto normalmente, porque antes de cada acceso a la propiedad position, necesitamos configurar la posición usando el método Select, de lo contrario, de repente usaremos el método Select para otro objeto CPositionInfo en otro lugar.

 
pivomoe:

Ha explicado cómo preparar CPositionInfo. Sin embargo, sigo sin entender dos cosas:

1) ¿Cómo sigue esta receta la ayuda de la clase CPositionInfo?

2) Para qué necesitamos la clase en sí, si no se puede usar más de un objeto normalmente, porque antes de cada acceso a la propiedad position, necesitamos configurar su posición usando el método Select, de lo contrario de repente usaremos el método Select para otro objeto CPositionInfo en algún otro lugar.

1). Todo esto está en la ayuda. Con diligencia y atención, además de un poco de auto-escritura, esto le dará una comprensión.
2). Una vez más: la clase CPositionInfo no es un cofre que almacena todos los datos de todas las posiciones; es sólo una herramienta práctica para acceder a las propiedades de una posición.

Y siempre ha sido así: primero se selecciona la posición y luego se obtienen sus propiedades. Después, el ciclo se repite: se resalta la posición y sólo entonces se recuperan las propiedades de la posición.
 

No entiendo cuál es mi error al usar la ayuda.

1) Necesitaba el volumen de la posición en el programa.

2) Buscando encontré el método Volume de la clase CPositionInfo.

3) Se refiere a utilizar el método Select antes de llamar a Volume.

4) No hay ninguna referencia en la descripción del método Select. Para estar seguro, estudio la descripción de la clase CPositionInfo.

5) Escribo el código. Obtengo un resultado que no se deduce de la referencia.


¿Dónde está el error?

Una vez más sé sobre la elección de una posición y un orden antes de acceder a las propiedades. Pero este conocimiento y el de CPositionInfo en la ayuda no se cruzan.

 
pivomoe:

¿Dónde está el error?

Si aprendes a escribir con más detalle, podrás ver en qué te equivocas.

Intenta escribir así:

CPositionInfo PositionInfoKotiryemii,PositionInfoVedygii;
double Volume1=0; Volume2=0;
string Symbol1=""; Symbol2="";

if ( PositionInfoVedygii.Select("SBRF-12.17") ) // Select 1
{ Volume1=PositionInfoVedygii.Volume(); Symbol1=PositionInfoVedygii.Symbol(); } // Use 1
else Print("Не удалось выбрать позицию по символ SBRF-12.17 ");

if ( PositionInfoKotiryemii.Select("SBRF-3.18") ) // Select 2
{ Volume2=PositionInfoKotiryemii.Volume(); Symbol2=PositionInfoKotiryemii.Symbol(); } // Use 2
els Print("Не удалось выбрать позицию по символ SBRF-3.18 ");
 
Print(Symbol2," Объем ",Volume2," ",Symbol1," Объем ",Volime1);
 
pivomoe:

No entiendo cuál es mi error al usar la ayuda.

1) Necesitaba el volumen de la posición en el programa.

2) Buscando encontré el método Volume de la clase CPositionInfo.

3) Se refiere a utilizar el método Select antes de llamar a Volume.

4) No hay ninguna referencia en la descripción del método Select. Para estar seguro, estudio la descripción de la clase CPositionInfo.

5) Escribo el código. Obtengo un resultado que no se deduce de la referencia.


¿Dónde está el error?

Una vez más sobre la selección de la posición, el orden, antes de acceder a las propiedades que conozco. Pero este conocimiento y el de CPositionInfo en la ayuda no se superponen.


Se trata de un bloque de código que omite todas las posiciones e imprime información similar a la del terminal en la pestaña "Comercio":

   for(int i=PositionsTotal()-1;i>=0;i--)
      if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
        {
         string str_position_type=(m_position.PositionType()==POSITION_TYPE_BUY)?"buy":"sell";
         Print(m_position.Symbol()+" | "+
               IntegerToString(m_position.Ticket())+" | "+
               TimeToString(m_position.Time(),TIME_DATE|TIME_MINUTES|TIME_SECONDS)+" | "+
               str_position_type+" | "+
               DoubleToString(m_position.Volume(),2)+" | "+
               DoubleToString(m_position.PriceOpen(),2));

}

Algoritmo de trabajo: primero seleccionamos la posición (cogemos un bote de mermelada de la estantería del supermercado), luego accedemos a las propiedades de la posición seleccionada e imprimimos estas propiedades (leemos la etiqueta del bote de mermelada).

 
pivomoe:

Resulta que la clase CPositionInfo no tiene ningún sentido, porque normalmente sólo se puede trabajar con un objeto de esta clase.

Sí, es una envoltura.
 

Ivan Ivanov ,Vladimir Karputov, fxsaber gracias por su ayuda.

 

Recupero los datos de los indicadores en el Asesor Experto. Primero calculo la manija, luego copio los últimos valores reales de los buffers de los indicadores.

Preguntas:

1. ¿Cuál es la profundidad de la historia en estos indicadores?

2. ¿Existe algún método para limitar la profundidad de los cálculos?
En este caso sólo necesitamos unos últimos valores para determinar la inflexión o dirección arriba/abajo.
Mi Asesor Experto es multidivisa, hay docenas de indicadores, así que no necesito hacer cálculos innecesarios.

 
User_mt5:

Recupero los datos de los indicadores en el Asesor Experto. Primero calculo la manija, luego copio los últimos valores reales de los buffers de los indicadores.

Preguntas:

1. ¿Qué profundidad tiene la historia en estos indicadores?

2. ¿Hay alguna forma de limitar la profundidad de los cálculos?
En este caso sólo necesitamos unos últimos valores para determinar la inflexión o dirección arriba/abajo.
El Asesor Experto es multidivisa, hay docenas de indicadores, por lo que es necesario no hacer cálculos innecesarios.


Espero que cree las manijas del indicador UNA vez en OnInit()?

La profundidad del cálculo depende del indicador. Los indicadores raros limitan la profundidad a la fuerza - por regla general, todos ellos calculan la historia completa. Por lo tanto, quizás sea útil la siguiente variante: introducir la variable responsable de la profundidad en el indicador, y luego pasar este parámetro a través de iCustom en el Asesor Experto.