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

 
Vitaly Muzichenko:

Lamentablemente, no he encontrado el artículo, tal vez alguien más pueda sugerirlo.

No podrá establecer órdenes porque no podrá introducir el precio de ajuste correcto. Lo mismo ocurre con los lotes.

Me puse con el ratón.

  • Haga clic por encima del precio+Ctrl - Límite de venta
  • Haga clic por debajo del precio+Ctrl -Límite de compra
  • Haga clic sobre el precio+Ctrl+Mayúsculas - Buy Stop
  • Haga clic por debajo del precio+Ctrl+Mayúsculas - Sell Stop
También puede desplazar BuyStopLimit y SellStopLimit
 
Artyom Trishkin:

Apuesto por el ratón.

  • Haga clic por encima del precio+Ctrl - Límite de venta
  • Haga clic por debajo del precio+Ctrl -Límite de compra
  • Haga clic sobre el precio+Ctrl+Mayúsculas - Comprar Stop
  • Haga clic por debajo del precio+Ctrl+Mayúsculas - Sell Stop
También puede poner BuyStopLimit y SellStopLimit con el shifft

¿El panel de control de este artículo https://www.mql5.com/ru/articles/62 funcionará en el probador (sólo botones)?

Создание активных панелей управления на MQL5 для торговли
Создание активных панелей управления на MQL5 для торговли
  • 2010.04.15
  • Евгений
  • www.mql5.com
Удобство имеет большое значение в работе, а тем более в работе трейдера, где скорость и точность решают многое. При подготовке терминала к работе каждый настраивает своё рабочее место максимально комфортно для себя, чтобы в максимально короткий срок можно было совершить анализ и войти в рынок. Но реальность такова, что разработчики не могут...
 
Sergey Savinkin:

¿El panel de control de este artículo https://www.mql5.com/ru/articles/62 funcionará en el probador (sólo botones)?

Entonces, inténtelo: ¿qué lo impide?

Acabo de escribir cómo pongo las órdenes pendientes en el visualizador yo mismo.

 
Artyom Trishkin:

Inténtelo, ¿qué le impide hacerlo?

Simplemente he escrito cómo configuro las órdenes pendientes en el visualizador.

Lo estoy probando ahora. No quería perder el tiempo, no necesito el panel en el funcionamiento del robot, sólo lo necesito para una prueba. Por lo tanto, no pensaba estudiar el tema en detalle.

 
Buen artículo, pero el eventoOnChartEvent() no se llama en el probador, los botones no funcionan. Encontré la solución en el foro https://www.mql5.com/ru/forum/42817/page2
Использование переменных в событии OnChartEvent индикатора в тестере
Использование переменных в событии OnChartEvent индикатора в тестере
  • 2016.02.25
  • www.mql5.com
При тестировании в эксперте можно обрабатывать пользовательские события с помощью функции OnChartEvent(), но в индикаторах эта функция в тестере не вызывается.
 

¿Pueden decirme por qué cuando cambio el código de abajo de close[i-1] a close[i-2] se produce el Array of Range? El código fue escrito siguiendo estrictamente el libro MQL5, pero no explica por qué el búfer se desborda cuando el precio se desplaza más de 2 celdas.

  {
   int values_to_copy;
   int start;
   int calculated=BarsCalculated (iBands1_handle);

   
   if (calculated <=0)
   {
    return (0);
   }
   if (prev_calculated==0 || calculated!=bars_calculated)
   {
    start=1;
    if (calculated> rates_total) values_to_copy=rates_total;
    else values_to_copy=calculated;
    }
    else
    {
   start=rates_total-1;
   values_to_copy=1;
   }
   
   if(!FillArrayFrom_iBands1_handleBuffer(Base,Upper,Lower,iBands1_handle,values_to_copy)) return(0);

   for (int i=start; i <rates_total &&!IsStopped ();i++)
   {
    Print("C ", close[i-2]);
   }
 
clickaider:

¿Pueden decirme por qué cuando cambio el código de abajo de close[i-1] a close[i-2] se produce el Array of Range? El código fue escrito siguiendo estrictamente el libro MQL5, pero no describe por qué la retirada del buffer ocurre cuando el precio se desplaza más de 2 celdas.

Por lo que tengo entendido, estamos hablando de un indicador. Por lo tanto, consideremos dos casos de acceso a un array-serie de tiempo"cerrado": (1) lo que ocurre cuando"inicio" es igual a "1" y (2) lo que ocurre cuando"inicio" es igual a "tasas_total-1".

Simplemente calcula en tu mente el índice resultante del array "close" si intentas hacer "close[i-2]" para el caso (1) y para el caso (2).

 
Vladimir Karputov:

Entiendo que se trata de un indicador. Así pues, consideremos dos casos de acceso a la matriz de series temporales"cercanas": (1) lo que ocurre cuando"inicio" es igual a "1" y (2) lo que ocurre cuando"inicio" es igual a "tasas_total-1".

Simplemente calcula en tu mente el índice resultante del array "close" si intentas hacer "close[i-2]" para el caso (1) y para el caso (2).

Gracias, lo he comprobado, había que poner un número mayor que 1 en el valor de inicio = 1, la depuración ha mostrado que el error se produce cuando el array de cierre intenta tomar un valor de una celda que aún no ha aparecido al principio del recálculo.

 
Me gustaría crear un array bidimensional con los tiempos de apertura y cierre y las longitudes de las velas, y sería muy interesante. Quiero crear un EA basado en este ejemplo utilizando matemáticas superiores, concretamente la integral triple. supongamos que x e y conocen el precio y el tiempo, encuentren z - en este caso lo hago yo.
 
Otra pregunta - si este código establece la condición de que el precio de cierre será mayor que la línea (supongamos que esta condición es realmente antes de que el programa se inicie), el código funciona como debería ser, pero si añadimos una condición inversa, es decir, diferentes condiciones actuales antes de que el código se inicie, los datos no serán correctos después de la depuración. ¿Por qué ocurre esto? Al fin y al cabo, sólo se trata de una comparación en una declaración de condición, ¿por qué debería tener esto algún efecto perjudicial en el rendimiento del código?
   for (int i = start; i < rates_total &&!IsStopped ();i++)
   {
    if(close[i] > Upper[i])
    Print("C ", close[i]);
    
Ejemplo: si
if(close[i] < Upper[i])

El resultado de la depuración es el siguiente:

Los datos van correctamente, refrescándose al mismo ritmo que se refresca el precio

Pero si inicialmente establecemos esa condición:

if(close[i] > Upper[i])

Entonces el resultado será incorrecto:

Es decir, los valores de los precios de cierre no coinciden con el precio actual


No puedo entender por qué sucede así.

Bloque de código básico en el post