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

 
Vladimir Karputov:
¿Está seguro de que el intercambio funciona para el símbolo solicitado por la noche?

No fuerzo al terminal a que me envíe ticks a una hora concreta que no tiene, simplemente le envío una petición:

from=0,// la fecha a partir de la cual se solicitan los ticks.

count=0// número de ticks a recibir

Y me envía la propia historia, ¿no?

 
VANDER:

No fuerzo al terminal a que me envíe ticks a una hora concreta que no tiene, simplemente le envío una petición:

from=0,// la fecha a partir de la cual se solicitan los ticks.

count=0// número de ticks a recibir

Y me envía la propia historia, ¿no?

Si las operaciones están cerradas para el símbolo solicitado (por ejemplo, es de noche), ¿de dónde saldrán los ticks del símbolo solicitado?
 

Comprobado, para el símbolo principal RTS-12.19 en el que se está ejecutando el Asesor Experto, el último tick fue a las 23:59:30 y SBRF-12.19 a las 23:52:21 por lo que no pudo descargar los ticks?

¿Y cómo de interesante es la función SymbolInfoTick que le ayuda a ser inteligente?

 
VANDER:

Comprobado, para el símbolo principal RTS-12.19 en el que se está ejecutando el Asesor Experto, el último tick fue a las 23:59:30 y SBRF-12.19 a las 23:52:21 por lo que no pudo descargar los ticks?

¿Y qué tan interesante es la función SymbolInfoTick que le ayuda a entenderlo?

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategia

FAQ de principiantes MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.12.08 13:20

Si la puja por el símbolo solicitado está cerrada (por ejemplo, es de noche), ¿de dónde obtendrá los ticks el símbolo solicitado?

 
VANDER:

Comprobado, para el símbolo principal RTS-12.19 en el que se está ejecutando el Asesor Experto, el último tick fue a las 23:59:30 y SBRF-12.19 a las 23:52:21 por lo que no pudo descargar los ticks?

¿Y qué interés tiene la función SymbolInfoTick?

Aquí está el EA:

//+------------------------------------------------------------------+
//|                                                  CopyTicks_1.mq5 |
//|                              Copyright © 2015, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.100"
#property description "Сравнение трёх режимов получения тиков"
//--- input parameters
input string   name  = "RTSSiZ9";      // символ по которому запрашиваем тики
input int      ticks = 3000;           // количество запрашиваемых тиков
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
  SymbolSelect(name,true);
//--- succeed
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- массив для приема тиков
   MqlTick ExTicks[];
//--- запросим тики
   ResetLastError();
   int copied=CopyTicks(name,ExTicks,COPY_TICKS_ALL,0,ticks);
//--- если тики получены, то выведем на график значения Bid и Ask
   Print("Получено тиков: ",copied," код ошибки: ",GetLastError());
   if(copied>1)
     {
      Print("Тик: ",ExTicks[0].time," bid: ",ExTicks[0].bid," ask: ",ExTicks[0].ask," last: ",ExTicks[0].last," [0]");
      Print("Тик: ",ExTicks[copied-1].time," bid: ",ExTicks[copied-1].bid," ask: ",ExTicks[copied-1].ask," last: ",ExTicks[copied-1].last," [",copied-1,"]");
     }
  }
//+------------------------------------------------------------------+

Funcionando en RTSSRZ9 (esto es SBRF-Dec19) - aquí están los ajustes:


Solicitar ticks en RTSSiZ9 (esto es Si-Dec19).

Resultado:

2019.08.30 07:00:00   Получено тиков: -1 код ошибки: 4004
2019.08.30 07:00:01   Получено тиков: 2 код ошибки: 0
2019.08.30 07:00:01   Тик: 2019.08.30 07:00:00 bid: 22552.0 ask: 22697.0 last: 0.0 [0]
2019.08.30 07:00:01   Тик: 2019.08.30 07:00:01 bid: 22552.0 ask: 22697.0 last: 0.0 [1]
2019.08.30 07:00:02   Получено тиков: 3 код ошибки: 0
2019.08.30 07:00:02   Тик: 2019.08.30 07:00:00 bid: 22552.0 ask: 22697.0 last: 0.0 [0]
2019.08.30 07:00:02   Тик: 2019.08.30 07:00:02 bid: 22425.0 ask: 22856.0 last: 0.0 [2]
2019.08.30 07:00:02   Получено тиков: 4 код ошибки: 0
2019.08.30 07:00:02   Тик: 2019.08.30 07:00:00 bid: 22552.0 ask: 22697.0 last: 0.0 [0]

y así sucesivamente...


Es decir, en el servidor real todo funciona. Si no te funciona: 1. 1. Trabajar en un servidor real, no en un servidor de demostración Comprueba tu código.

Archivos adjuntos:
 

La cuenta es más que real, yo comercio con ella. He utilizado su código, incluso establecer todos los ajustes exactamente y se reirá, aquí está el registro completo:


2019.12.08 21:08:38.787 MetaTester 5 started on 127.0.0.1:3000
2019.12.08 21:08:38.790 initialization finished
2019.12.08 21:08:39.088 login (build 2265)
2019.12.08 21:08:39.120 4372 bytes of account info loaded
2019.12.08 21:08:39.120 1482 bytes of tester parameters loaded
2019.12.08 21:08:39.120 1212 bytes of input parameters loaded
2019.12.08 21:08:39.138 29043 bytes of symbols list loaded
2019.12.08 21:08:39.138 expert file added: Experts\CopyTicks_1.ex5. 16437 bytes loaded
2019.12.08 21:08:39.152 6116 Mb available, 76 blocks set for ticks generating
2019.12.08 21:08:39.152 initial deposit 10000.00 USD, leverage 1:100
2019.12.08 21:08:39.153 successfully initialized
2019.12.08 21:08:39.153 37 Kb of total initialization data received
2019.12.08 21:08:39.153 Intel Core i5-3450  @ 3.10 GHz, 8157 MB
2019.12.08 21:08:39.198 RTS-12.19: symbol to be synchronized
2019.12.08 21:08:39.199 RTS-12.19: symbol synchronized, 4120 bytes of symbol info received
2019.12.08 21:08:39.199 RTS-12.19: history synchronization started
2019.12.08 21:08:39.201 RTS-12.19: load 33 bytes of history data to synchronize in 0:00:00.000
2019.12.08 21:08:39.201 RTS-12.19: history synchronized from 2018.01.12 to 2019.12.06
2019.12.08 21:08:39.201 RTS-12.19: ticks synchronization started
2019.12.08 21:08:39.202 RTS-12.19: load 40 bytes of tick data to synchronize in 0:00:00.000
2019.12.08 21:08:39.202 RTS-12.19: history ticks synchronized from 2019.01.03 to 2019.12.05
2019.12.08 21:08:39.205 RTS-12.19,H1: history cache allocated for 2480 bars and contains 971 bars from 2018.01.12 13:00 to 2019.08.29 23:00
2019.12.08 21:08:39.205 RTS-12.19,H1: history begins from 2018.01.12 13:00
2019.12.08 21:08:39.207 RTS-12.19,H1 (Open-Broker): generating based on real ticks
2019.12.08 21:08:39.207 RTS-12.19,H1: testing of Experts\CopyTicks_1.ex5 from 2019.08.30 00:00 to 2019.11.26 00:00 started with inputs:
2019.12.08 21:08:39.207   name=SBRF-12.19
2019.12.08 21:08:39.207   ticks=3000
2019.12.08 21:08:39.263 SBRF-12.19: symbol to be synchronized
2019.12.08 21:08:39.263 SBRF-12.19: symbol synchronized, 4120 bytes of symbol info received
2019.12.08 21:08:40.615 RTS-12.19 : real ticks begin from 2019.01.03 00:00:00
2019.12.08 21:08:55.958 2019.08.30 00:03:46   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:08:56.877 2019.08.30 00:03:46   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:08:57.764 2019.08.30 09:52:14   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:08:58.739 2019.08.30 10:00:01   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:08:59.784 2019.08.30 10:00:01   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:09:04.628 2019.08.30 10:00:03   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:09:05.579 2019.08.30 10:00:04   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:09:06.596 2019.08.30 10:00:06   Получено тиков: -1 код ошибки: 4401

La única diferencia es que empieza por la noche, pero luego es igual incluso por la mañana.

 
VANDER:

La cuenta es más que real, yo comercio con ella. He utilizado su código, incluso establecer todos los ajustes exactamente y se reirá, aquí está el registro completo:


La única diferencia es que empieza por la noche, pero luego es igual incluso por la mañana...

ERR_HISTORY_NOT_FOUND

4401

No se ha encontrado el historial solicitado

¿Desde qué fecha y hasta qué fecha se negociael SBRF-12.19? ¿Son estas fechas entre el 30 de agosto de 2019 y el 26 de noviembre de 2019?

 
Vladimir Karputov:

ERR_HISTORY_NOT_FOUND

4401

No se ha encontrado el historial solicitado

¿Desde cuándo se negociael SBRF-12.19 y hasta cuándo? ¿Estas fechas entran en el rango 2019.08.30-2019.11.26?

Sí lo hacen, ocurre en todas las fechas


Olvídalo, he encontrado una solución para mí, utilizando la función

SymbolInfoTick(необходимый символ)

Entonces CopyTicks() empieza a funcionar con él, tal vez Openchat tenga fallos en otros brokers que no he comprobado, tal vez le sirva a alguien.

 
VANDER:

Sí, lo hacen, ocurre en todas las fechas.


Ok olvídalo, he encontrado una salida para mí, usa la función antes

Entonces CopyTicks() empieza a funcionar con él, quizás falla en otros brokers que no he comprobado, quizás le sirva a alguien.

Está claro que depende del servidor de comercio; a mí me ha funcionado.
Quizá no actualicen la parte del servidor en diez años.
 
fxsaber :

¿Qué impide arreglar el código para que no haya avisos?

Cuando tienes 600 advertencias, tienes que encontrar líneas con errores (en realidad tengo más si habilito el modo estricto)

Y casi todas las advertencias son inútiles. Porque muchos de ellos son sobre variables ocultas o conversiones de tipo. Tal vez algunos piensen que puedes equivocarte, pero eso no es común entre los programadores experimentados.

Mt4 estaba justificado para los principiantes. Pero el actual lenguaje mql5 es lo suficientemente sofisticado como para tener un propósito para los principiantes. Y los programadores experimentados no necesitan 600 líneas sobre algo claramente hecho por una razón


Obviamente esta es mi opinión subjetiva, pero otros lenguajes te permiten decidir el nivel de verborrea que quieres