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

 
Leo59:
¿Puede decirme por qué puede ocurrir esto?

doble A;
int x, y;

x=100; y=3; A=x/y=33.000
Целый тип int x=100 / Целый тип int y=3 => Целое число 33.
Так как "А" - это вещественное число, то Целое число "33" преобразовывается к вещественному и получаем 33.0
 
Karputov Vladimir:
¡Gracias Vladimir!

Esta es una característica interesante. Vas y buscas en el buscador pero no encuentras nada. Cuando haces una pregunta en el foro y esperas una respuesta, la encuentras por ti mismo ))


https://www.mql5.com/ru/articles/1561

Peculiaridades del trabajo con números dobles en MQL4

Особенности работы с числами типа double в MQL4
Особенности работы с числами типа double в MQL4
  • 2009.11.02
  • MetaQuotes Software Corp.
  • www.mql5.com
В данной заметке собраны советы по решению наиболее часто возникающих ошибок при работе с числами типа double в программах на MQL4.
 
Leo59:
Por favor, dígame, ¿qué puede causar esto?

doble A;
int x, y;

x=100; y=3; A=x/y=33,000

como norma, supongo:

Las variables que se utilizan en los cálculos matemáticos, es mejor declararlas como dobles

Si estos cálculos utilizan una variable de bucle incremental, podemos utilizar doble y=y+1 o doble y=y-1;

Распределенные вычисления в сети MQL5 Cloud Network
Распределенные вычисления в сети MQL5 Cloud Network
  • cloud.mql5.com
Заработать деньги, продавая мощности своего компьютера для сети распределенных вычислений MQL5 Cloud Network
 
new-rena:

como norma, supongo:

Las variables que se utilizan en los cálculos matemáticos se declaran mejor como double.

o doble y=y+1 o doble y=y-1;

También hay una conversión de tipo explícita:

double A;
int x, y;

x=100; y=3; 
A=(double)x/y; // в операциях умножения и деления достаточно привести к double только одно
 

Hola.

Por favor, dígame cómo encontrar un puesto con un lote determinado entre los puestos abiertos.

El símbolo y el número mágico son desconocidos. Necesito la siguiente condición: if ( position's lot== 0.1) then {some action;}

 
mila.com:

Hola.

Me pueden decir cómo encontrar entre las posiciones abiertas una posición con un lote determinado.

El símbolo y el número mágico son desconocidos. Necesito sobre la siguiente condición: if ( position's lot== 0.1) then {some action;}

Aquí hay un ejemplo de un script que recorre todas las posiciones abiertas y compara su volumen con uno determinado (variable"lote"):

//+------------------------------------------------------------------+
//|                                               PositionsTotal.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property  script_show_inputs
//--- input parameter
input double lot=0.01; // искомый лот
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int count_positions=PositionsTotal(); // количество открытых позиций
   for(int i=0;i<count_positions;i++)
     {
      ResetLastError();
      //--- возвращает символ соответствующей открытой позиции и автоматически выбирает позицию для дальнейшей работы с ней 
      string name=PositionGetSymbol(i);
      if(name==NULL)
        {
         Print("PositionGetSymbol Error# ",GetLastError());
         return;
        }

      double position_lot=PositionGetDouble(POSITION_VOLUME); // получаем объем позиции
      if(position_lot!=0)
        {
         if(position_lot==lot)
           {
            // найдена позиция с заданным объёмом 
           }
        }
     }
  }
//+------------------------------------------------------------------+
Archivos adjuntos:
 
Karputov Vladimir:

Aquí hay un ejemplo de un script que recorre todas las posiciones abiertas y compara su volumen con uno determinado (variable"lote"):

Gracias, lo siento, no he especificado, ¿hay algo similar para MQL4?

 
mila.com:

Gracias, lo siento, no he especificado, ¿hay algo similar para MQL4?

No, no. ¿Y por qué, cuando existe MetaTrader 5 con netting y hedging y se puede operar en bolsas reales?

 
Karputov Vladimir:

Aquí hay un ejemplo de un script que recorre todas las posiciones abiertas y compara su volumen con uno determinado (variable"lote"):

Vladimir, ¿puedo preguntarte cómo prevés una posición con un volumen de 0,0 en este código?

      double position_lot=PositionGetDouble(POSITION_VOLUME); // получаем объем позиции
      if(position_lot!=0)
 
Alexey Viktorov:

Vladimir, ¿puedo preguntarte cómo prevés la posición 0,0 en este código?

Esta es una comprobación para devolver la función PositionGetDouble. Si falla, devuelve 0, es decir, es un error.
Razón de la queja: