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

 
secret:

Gracias por la respuesta, he mirado tanto la documentación como tu ejemplo, pero aún no he encontrado cómo obtener un parámetro similar a OrderClosePrice() en MT4.

Si ENUM_DEAL_ENTRY ==DEAL_ENTRY_OUT && ENUM_DEAL_TYPE == DEAL_TYPE_SELL --- significa que la posición de COMPRA se cerró y por lo tanto DEAL_PRICE es el precio de cierre.

 
secret:

Gracias por la respuesta, he mirado tanto la documentación como tu ejemplo, pero aún no he encontrado cómo obtener un parámetro similar a OrderClosePrice() en MT4.

No hay una analogía directa. El puesto consiste en oficios. Si desea obtener datos exactos de una posición, primero debe reunir la posición a partir del historial de operaciones.

Por lo tanto, es mejor trabajar con el concepto de "trato".


En general, la aplicación depende en gran medida de la respuesta a la pregunta: "¿Por qué?". Es decir, primero describa exactamente lo que quiere y por qué.

 
secret:

¿Cómo puedo obtener el precio de cierre de una orden (operación, posición - cualquier cosa)?

Busqué en el foro y no pude encontrarlo.

https://www.mql5.com/ru/forum/162461

Как определить последнюю цену закрытия ордера (MQL5)?
Как определить последнюю цену закрытия ордера (MQL5)?
  • 2016.12.05
  • www.mql5.com
Подскажите как определить последнюю цену закрытия ордера (MQL5)? В MQL4 было просто OrderClosePrice...
 
Igor Makanu:

alternativamente abrirhttps://www.mql5.com/ru/code/16006

y mira la implementación de @fxsaber

No es realista arrancar la implementación de ahí, ya que tiene una fuerte dependencia de todas las demás partes de la biblioteca.

 

Amigos, por favor, aconsejen cómo resolver un problema aparentemente sencillo. Un trozo de código:

double stavkariska;

//ставка риска по инструментам

if(StringCompare(_Symbol,"VTBR")==0||StringCompare(_Symbol,"LKOH")==0)

   {double stavkariska=0.3;}

else double stavkariska=1;

  int lot=int (depozit/(d*stoimkontr)*stavkariska); 

Advertencia del compilador:

la declaración de 'stavkariska' oculta la declaración local en la línea 25 script.mq5 32 12

posible uso de la variable no inicializada 'stavkariska' script.mq5 33 39

¿Cuál es la forma correcta de resolver este problema, para que compile sin advertencias?


Компиляция - Разработка программ - MetaTrader 5
Компиляция - Разработка программ - MetaTrader 5
  • www.metatrader5.com
Компиляция — это процесс перевода исходного кода MQL4/MQL5-программы на машинный язык. Ее результатом является создание исполняемого файла программы (*EX4 или *.EX5), который может быть запущен в торговой платформе. Скомпилировать можно любой файл (*.MQ4, *.MQ5 или *.MQH), однако исполняемый файл (*.EX4 или *.EX5) может быть получен только в...
 
TrueSam:

Amigos, por favor, aconsejen cómo resolver un problema aparentemente sencillo. Un trozo de código:

Advertencia del compilador:

la declaración de 'stavkariska' oculta la declaración local en la línea 25 script.mq5 32 12

posible uso de la variable no inicializada 'stavkariska' script.mq5 33 39

¿Cómo resolver el problema correctamente, para que compile sin advertencias?


Utilice un traductor:

декларация 'stavkariska' скрывает локальную декларацию в строке 25 скрипт.mq5 32 12

возможно использование неинициализированной переменной 'stavkariska' скрипт.mq5 33 39


Es decir, declarar las variables con más cuidado - evitar declarar las mismas variables en el mismo ámbito.

Al declarar una variable , acostúmbrese a inicializarla inmediatamente.

   double StavkaRiska=0.0;// ставка риска по инструментам

   if(StringCompare(_Symbol,"VTBR")==0 || StringCompare(_Symbol,"LKOH")==0)
     double StavkaRiska=0.3;
   else StavkaRiska=1;

   int lot=int(depozit/(d*stoimkontr)*StavkaRiska);
 
Vladimir Karputov:

Utiliza el traductor:


Es decir, declarar las variables con más cuidado - evitar declarar las mismas variables en el mismo ámbito.

Cuando declare una variable , acostúmbrese a inicializarla inmediatamente.

El caso es que si declaro otra variable en la sentencia If else, me sale la necesidad de declararla de nuevo, de lo contrario el error "'stavkariska1' - identificador no declarado". Un círculo vicioso para un principiante. ¿Quizás haya otras formas de aplicar la selección?
 
TrueSam:
El caso es que al declarar otra variable en el operador If else, me sale la necesidad de declararla de nuevo, de lo contrario el error "'stavkariska1' - identificador no declarado". Un círculo vicioso para un principiante. ¿Quizás haya otras formas de aplicar la selección?

El pequeño robot también cometió un error a toda prisa.

   double StavkaRiska=0.0;// ставка риска по инструментам

   if(StringCompare(_Symbol,"VTBR")==0 || StringCompare(_Symbol,"LKOH")==0)
     double  StavkaRiska=0.3;
   else StavkaRiska=1;

   int lot=int(depozit/(d*stoimkontr)*StavkaRiska);

El resaltado es innecesario. Sin volver a declararlo debería funcionar como es debido.

 
Alexey Viktorov:

El pequeño robot también se equivocó con las prisas.

El resaltado es redundante. Sin el reenvío, debería funcionar como es debido.

Gracias por su atención. Lo siento, escribí directamente en mi navegador usando copypaste.

 
Alexey Viktorov:

El pequeño cangrejero también se equivocó con las prisas.

El resaltado es redundante. Sin un nuevo anuncio debería funcionar como es debido.

¡Muchas gracias! El grial está funcionando :)