Errores, fallos, preguntas - página 1886

 
Vladimir Karputov:


¿Cuál es la cuestión?

¿Dónde puede ver que bajo el número "i" hay una posición con tal o cual billete, para tal o cual símbolo? En general, además de la simple salida del número de secuencia, también se emiten el ticket y el símbolo.


¿Es normal que para diferentes situaciones, una función dé el mismo valor?

ZS: por cierto había una pregunta en el post.

La cuestión es que si selecciono comprar, la función (PositionGetInteger(POSITION_TYPE)) devuelve 0

Y si selecciona una posición inexistente, la función también devolverá 0

 
Alexandr Bryzgalov:
¿Es normal que para diferentes situaciones una función dé el mismo valor?


¿Qué es una "situación diferente"? Y haz lo que te he recomendado más arriba:

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Bichos, errores, preguntas

Vladimir Karputov, 2017.05.12 11:15

...

En general, además de la simple salida del número de secuencia, también se emiten el ticket y el símbolo.


 
Alexandr Bryzgalov:

Sé que tengo que comprobarlo, pero pueden pasar cosas...

PositionGetInteger

La función devuelve la propiedad solicitada de una posición abierta, previamente seleccionada mediante la funciónPositionGetSymbol oPositionSelect. La propiedad position debe ser de tipo datetime, int. Hay 2 variantes de la función.

1. Devuelve directamente el valor de la propiedad.

longGetInteger(
ENUM_POSITION_PROPERTY_INTEGERproperty_id// identificador de la propiedad
);

2. Devuelve true o false dependiendo del éxito de la función. Si tiene éxito, el valor de la propiedad se coloca en la variable de destino, que se pasa por referencia al último parámetro.

boolPositionGetInteger(
ENUM_POSITION_PROPERTY_INTEGERproperty_id,// identificador de la propiedad
largo...long_var//toma el valor de la propiedad
);

Parámetros

property_id

El identificador [in] de la propiedad de posición. El valor puede ser uno de los valores del enumENUM_POSITION_PROPERTY_INTEGER.

long_var

[out] Variable de tipo long, que toma el valor de la propiedad solicitada.

Valor devuelto

Valor de la tipología. En caso de ejecución fallida devuelve 0.

La situación con el majic es más delgada. Por lo tanto, es lógico hacer una comprobación (PositionGetInteger(POSITION_TICKET) > 0).
Документация по MQL5: Торговые функции / PositionGetInteger
Документация по MQL5: Торговые функции / PositionGetInteger
  • www.mql5.com
Торговые функции / PositionGetInteger - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
fxsaber:
La situación es más sutil con la magia. Así que es lógico hacer una comprobación (PositionGetInteger(POSITION_TICKET) > 0).

Sí, es bueno que lo compruebes.

Pero cuando escribes una función, siempre intentas que devuelva un valor diferente en distintas situaciones.

Creo que es incorrecto que salga el mismo valor de la función en diferentes situaciones.
 
Alexandr Bryzgalov:

pero cuando escribes una función, siempre intentas obtener un valor diferente para diferentes situaciones.

Esta es la razón por la que se menciona la magia. ¿Qué devolver en caso de error PositionGetInteger(POSITION_MAGIC)?
 
fxsaber:
Esta es la razón por la que Magic lo mencionó. ¿Qué devolver en caso de error PositionGetInteger(POSITION_MAGIC)?
0 - posición abierta manualmente. ¿Correcto?
 
Alexandr Bryzgalov:

¿Está bien si una función da el mismo valor para diferentes situaciones?

ZS: por cierto, había una pregunta en el post.

la cuestión es que si selecciono comprar, la función(PositionGetInteger(POSITION_TYPE)) devuelve 0

y si selecciona una posición inexistente, la función también devolverá 0


Así que la primera llamada se utiliza cuando se garantiza una posición (como la que tiene en el bucle). Y aquí está la segunda forma de llamada

bool  PositionGetInteger( 
   ENUM_POSITION_PROPERTY_INTEGER  property_id,     // идентификатор свойства 
   long&                           long_var         // сюда примем значение свойства 
   );

para los casos en los que la posición se selecciona de improviso.


Hazlo y cree lo que obtienes en la variable "resultado": todo encaja:

//+------------------------------------------------------------------+
//|                                                         posi.mq5 |
//|                                                      sanyooooook |
//|                                                 http://sn-bot.ru |
//+------------------------------------------------------------------+
#property copyright "sanyooooook"
#property link      "http://sn-bot.ru"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int tot=PositionsTotal();
   for(int i=0;i<tot;i++)
     {
      ulong OrderTicket_=PositionGetTicket(i);
      long cmd=PositionGetInteger(POSITION_TYPE);
      if(OrderTicket_>0 && cmd<=POSITION_TYPE_SELL)
         Print("N",i,"cmd=",cmd);

     }
   ulong OrderTicket_=PositionGetTicket(100);
   long cmd=-3;
   bool result=PositionGetInteger(POSITION_TYPE,cmd);
   if(result)
      Print("N100 cmd=",cmd);
  }
//+------------------------------------------------------------------+
 
Alexandr Bryzgalov:
0 - la posición se abre manualmente. ¿Correcto?
Sí, pero cualquier otro valor también será engañoso.
 
Vladimir Karputov:


Así que la primera llamada se utiliza cuando se garantiza una posición (como la que tiene en el bucle). Y aquí está la segunda forma de llamada

para los casos en los que la posición se selecciona de improviso.


Hazlo y cree lo que obtienes en la variable "resultado": todo encaja:

esa no es la cuestión, sino que la función devuelve el mismo valor para diferentes situaciones.

Sé cómo comprobarlo.

la pregunta original era si es normal en absoluto.

SZY: se puede cometer un error sin querer y luego en 100000 códigos te cansarás de buscarlo.

¿Qué? ¿No tienes que cometer errores? )

 
Alexandr Bryzgalov:

esta no es la cuestión, sino que la función devuelve el mismo valor para diferentes situaciones.

Sé cómo comprobarlo

La pregunta era originalmente sobre si esto es normal en absoluto.


Usted, por lo que veo, no ha comprobado el código que le mostré. Qué tal esto: primero lo compruebas y luego vuelves a hacer la pregunta.
Razón de la queja: