Errores, fallos, preguntas - página 73

 
Swan:

o la anulación no es necesaria, o la demanda, la oferta por símbolo de posición para solicitar

La función PositionGetSymbol selecciona automáticamente una posición para seguir trabajando.

De hecho, PositionGetSymbol proporciona una selección secuencial y PositionSelect proporciona una selección directa

Документация по MQL5: Торговые функции / PositionGetSymbol
Документация по MQL5: Торговые функции / PositionGetSymbol
  • www.mql5.com
Торговые функции / PositionGetSymbol - Документация по MQL5
 
Swan:

o no necesita buscar una posición, o pedir, ofertar por un símbolo de posición

Resulta que PositionGetInteger(POSITION_TYPE) se utiliza sin selección por PositionSelect. Lo cual, de hecho, no es bueno (como me recordó Slava)... :)

estrangulamiento:

La función PositionGetSymbol selecciona automáticamente una posición para seguir trabajando.

De hecho, PositionGetSymbol proporciona una selección secuencial y PositionSelect proporciona una selección directa

En base a esto era necesario aplicar exactamente PositionGetSymbol en el bucle, y luego interesarse por todo lo demás...
 

Bueno, si se utiliza la telepatía, entonces if(PositionSelect(Symbol())) debe ponerlo en lugar de bucle :)

Es mejor comprobar si LevelProfit-LevelWLoss no es menor que SymbolInfoInteger(Symbol,SYMBOL_TRADE_STOPS_LEVEL).

Y esos dobles se comparan incorrectamente...

Si no, debería funcionar)


ps: no estoy seguro, pero para la modificación de sl/tp, la desviación>0 no servirá de nada.

 

ObjectGetInteger() con el identificador OBJPROP_TIME no funciona correctamente

Para reproducir el error, cree un objeto "Rectángulo" llamado "1"

Ejecuta el siguiente script para mostrar las cuatro coordenadas de anclaje de nuestro recién creado rectángulo llamado "1"

void OnStart()
{ 
  Comment(ObjectGetDouble(0,"1",OBJPROP_PRICE,0),"   ",
          StringToTime   (IntegerToString(ObjectGetInteger(0,"1",OBJPROP_TIME, 0))),"\n",
          
          ObjectGetDouble(0,"1",OBJPROP_PRICE,1),"   ",
          StringToTime   (IntegerToString(ObjectGetInteger(0,"1",OBJPROP_TIME, 1))));

}

Vemos que las coordenadas de precio están definidas correctamente, pero las coordenadas de tiempo no:


Документация по MQL5: Графические объекты / ObjectGetInteger
Документация по MQL5: Графические объекты / ObjectGetInteger
  • www.mql5.com
Графические объекты / ObjectGetInteger - Документация по MQL5
 
joo:

ObjectGetInteger() con el identificador OBJPROP_TIME no funciona correctamente

Para reproducir el error, cree un objeto "Rectángulo" llamado "1"

Ejecuta el siguiente script para mostrar las cuatro coordenadas de anclaje de nuestro recién creado rectángulo llamado "1"

Vemos que las coordenadas de precio están definidas correctamente, pero las coordenadas de tiempo no:



Siente la diferencia

  Comment(ObjectGetDouble(0,"1",OBJPROP_PRICE,0),"   ",
          datetime(ObjectGetInteger(0,"1",OBJPROP_TIME, 0)),"\n",
          
          ObjectGetDouble(0,"1",OBJPROP_PRICE,1),"   ",
          datetime(ObjectGetInteger(0,"1",OBJPROP_TIME, 1)));
 
joo:

ObjectGetInteger() con el identificador OBJPROP_TIME no funciona correctamente

Para reproducir el error, cree un objeto "Rectángulo" llamado "1"

Ejecuta el siguiente script para mostrar las cuatro coordenadas de anclaje de nuestro recién creado rectángulo llamado "1"

Vemos que las coordenadas de precio están definidas correctamente, pero las coordenadas de tiempo no:



Este es el guión.

//+------------------------------------------------------------------+
//|                                                       123123.mq5 |
//|                                  2009, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string msg="";
//---
   msg+=DoubleToString(ObjectGetDouble(ChartID(),"123456",OBJPROP_PRICE,0),_Digits)+" "+
        TimeToString(ObjectGetInteger(ChartID(),"123456",OBJPROP_TIME,0),TIME_DATE|TIME_MINUTES)+"\n";
   msg+=DoubleToString(ObjectGetDouble(ChartID(),"123456",OBJPROP_PRICE,1),_Digits)+" "+
        TimeToString(ObjectGetInteger(ChartID(),"123456",OBJPROP_TIME,1),TIME_DATE|TIME_MINUTES)+"\n";
   Comment(msg);
  }
//+------------------------------------------------------------------+

Y aquí está el resultado.

 
stringo:

Siente la diferencia

Gracias, siento la diferencia.

Se establece explícitamente el tipo de valor como datetime

y he utilizado la conversión de datos.

¿Pero no significa eso que el constructo

StringToTime   (IntegerToString(

no funciona correctamente?

 
joo:

Gracias, siento la diferencia.

Se establece explícitamente el tipo de valor como datetime

y he utilizado la conversión de datos.

¿Pero no significa eso que el constructo

¿No funciona correctamente?

No es que esté mal. Estas acciones son simplemente innecesarias.

Consulta la ayuda de la función StringToTime() y entenderás por qué el resultado es incorrecto.

Документация по MQL5: Преобразование данных / StringToTime
Документация по MQL5: Преобразование данных / StringToTime
  • www.mql5.com
Преобразование данных / StringToTime - Документация по MQL5
 
joo:

Gracias, siento la diferencia.

Se establece explícitamente el tipo de valor como datetime

y he utilizado la conversión de datos.

¿Pero no significa eso que el constructo

no funciona correctamente?

No exactamente. Al convertir IntegerToString recibiste una cadena del tipo "12345612345", mientras que StringToTime debería introducir una cadena formateada como "2010.07.29 08:10".

Sin embargo, usted nos ha mostrado nuestro error. En su caso, deberíamos haber devuelto la fecha 1970.01.01 00:00 y establecer last_error

 
stringo:

No exactamente. Al convertir IntegerToString has recibido una cadena del tipo "12345612345", mientras que StringToTime debería recibir una cadena con el formato "2010.07.29 08:10".

Sin embargo, usted nos ha mostrado nuestro error. En su caso, deberíamos haber devuelto la fecha 1970.01.01 00:00 y establecer last_error

Entonces, ¿mi mensaje no es en vano, como ya pensaba?
Razón de la queja: