Yury Kirillov: Intente utilizar en su Asesor Experto todas las formas posibles de recibir ticks y OnTick y CopyTicks, y luego compare los resultados y utilice la más adecuada.
¿Y qué tiene que ver OnTick() con esto? No está pensado para recibir todos los ticks, sino para procesar el hecho de la recepción de ticks. Ni siquiera es necesario comparar nada aquí, OnTick() no será llamado en cada tick y no permitirá recibir todos los datos de la estructura MqlTick.
El Servicio de Atención al Cliente se ofreció a probarlo en la nueva construcción, la 1545. Pero el resultado no ha cambiado, ya que antes, al solicitar los ticks de las 10 a las 11 de la mañana para algunos papeles, devuelve cero arrays, y luego los datos empiezan a llegar a partir de las 11.00 por alguna razón. Tal vez después de eso los ticks ya son "normales" al consultar, pero no hay relevancia.
Ese es prácticamente el único mensaje que envían. Desde hace tiempo, el servicio de atención al cliente no responde. ¿Es normal que ignore mis mensajes?
antru: Ese es prácticamente el único mensaje que envían. Desde hace tiempo, el servicio de atención al cliente no responde. ¿Es normal que ignore mis mensajes?
En cuanto a lo de ignorar tus mensajes, te has equivocado de rama. Hay un hilo separado sobre SD. De hecho, recuérdelo escribiendo un comentario en la solicitud. ¿Ha adjuntado el código y otras pruebas al BOD?
Alexey Kozitsyn: Sobre lo de ignorar tus mensajes - te has equivocado de hilo. Hay un hilo separado sobre SD. De hecho, recuérdelo escribiendo un comentario en la solicitud. ¿Adjuntaste el código y otras pruebas al BOD?
Sí, por supuesto, incluso explicó el código... el silencio... Gracias por el consejo, lo pondré en un hilo aparte
Hecho código de depuración para comprobar CopyTicksRange. Mientras el servicio de atención al cliente está permanentemente en silencio, me pregunto si hay un error en el código. Mis ojos deben haber sido vidriosos... Por favor, míralo con ojos nuevos.
A continuación se muestra el código, adjuntando los resultados. Primer zip - inicio de Metatrader antes de operar, el segundo zip - inicio a las 10:30 pm EST (el tiempo en los archivos de depuración fue de 3 horas menos).
No entiendo por qué en la primera cremallera no salieron garrapatas en ningún papel.
En absoluto. Amigos, ¿cómo se consigue la cinta en tiempo real? Tal vez estoy reinventando la rueda y haciendo algo mal, ¿puedes darme un código de ejemplo sobre cómo obtener ticks en los papeles en tiempo real?
Por alguna razón, los ticks del día actual ya no se muestran en absoluto, tanto según el antiguo algoritmo como el nuevo... e independientemente de si la cinta está activada en la ventana o no...
aquí está el código donde inserté su función...
//+------------------------------------------------------------------+//| Smelchak.mq5 |//| Pavel&Antru |//| |//+------------------------------------------------------------------+#property copyright"Pavel&Antru"#property link""#property version"1.00"bool g_bEnterInfoSent = false;
datetime g_dEndOfTheDay;
datetime g_dDayBegin;
long LastTime = 0; // time_msc-время последнего тика (самого свежего), полученного из историиint Count = 0; // Количество тиков в последенем запросе, у которых time_msc == LastTime// Возвращает свежие тики, пришедшие после предыдущего вызоваint GetFreshTicks( MqlTick &Ticks[], constuint flags = COPY_TICKS_TRADE, constuint count = 100000 )
{
int Res = 0;
MqlTick NewTicks[];
constint NewAmount = CopyTicks(Symbol(), NewTicks, flags, LastTime, count);
if ((NewAmount > 0) && (Count < NewAmount))
{
Res = ArrayCopy(Ticks, NewTicks, 0, Count);
// Взяли крайнее время из текущей истории
LastTime = NewTicks[NewAmount - 1].time_msc;
Count = 1;
// Находим (Count) в текущей истории количество тиков со временем LastTimefor (int i = NewAmount - 2; i >= 0; i--)
{
if (NewTicks[i].time_msc < LastTime)
break;
Count++;
}
}
return(Res);
}
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
EventSetTimer(3);
MqlDateTime startTime;
TimeGMT(startTime);
startTime.hour = 7;
startTime.min = 0;
startTime.sec = 0;
g_dDayBegin = StructToTime(startTime);
startTime.hour = 17;
startTime.min = 0;
startTime.sec = 0;
g_dEndOfTheDay = StructToTime(startTime);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
}
//+------------------------------------------------------------------+voidOnTimer()
{
MqlDateTime mdt;
datetime dCurrent = TimeCurrent(mdt);
if (!g_bEnterInfoSent && mdt.hour + 3 == 9)
{
MqlDateTime startTime;
TimeGMT(startTime);
startTime.hour = 7;
startTime.min = 0;
startTime.sec = 0;
g_dDayBegin = StructToTime(startTime);
startTime.hour = 17;
startTime.min = 0;
startTime.sec = 0;
g_dEndOfTheDay = StructToTime(startTime);
g_bEnterInfoSent = true;
}
if (g_bEnterInfoSent && mdt.hour + 3 == 22)
{
g_bEnterInfoSent = false;
}
datetime lastTime = TimeCurrent();
if (true)
{
MqlTick tick[];
int nResult = GetFreshTicks(tick);
MqlDateTime tickTime;
if (ArraySize(tick))
{
TimeToStruct(tick[0].time, tickTime);
string sTicksFileName = StringFormat("%s.ticks.%.04d.%.02d.%.02d.csv", Symbol(), tickTime.year, tickTime.mon, tickTime.day);
int nTicksOutputFile = FileOpen(sTicksFileName, FILE_READ | FILE_WRITE | FILE_CSV, ',');
if (nTicksOutputFile == INVALID_HANDLE) nTicksOutputFile = FileOpen(sTicksFileName, FILE_WRITE | FILE_CSV, ',');
if (nTicksOutputFile != INVALID_HANDLE)
{
FileSeek(nTicksOutputFile, 0, SEEK_END);
MqlDateTime tickTime;
for (int i = 0; i<ArraySize(tick); i++)
{
TimeToStruct(tick[i].time, tickTime);
FileWrite(nTicksOutputFile, StringFormat("%.04d.%.02d.%.02d %.02d:%.02d:%.02d.000", tickTime.year, tickTime.mon, tickTime.day,
tickTime.hour, tickTime.min, tickTime.sec),
tick[i].bid,
tick[i].ask,
tick[i].last,
tick[i].volume,
((tick[i].flags & TICK_FLAG_BUY) ? "Buy" : "") +
((tick[i].flags & TICK_FLAG_SELL) ? "Sell" : ""));
}
FileClose(nTicksOutputFile);
}
g_dDayBegin = dCurrent;
}
}
}
Como resultado, lo ejecuté en dos papeles, ALRS y AFLT. Las garrapatas sólo volvieron a aparecer los días anteriores. Ninguno por hoy. ¿Qué puede ser?
Por alguna razón, los ticks del día actual ya no se muestran en absoluto, tanto según el antiguo algoritmo como el nuevo... e independientemente de si la cinta está activada en la ventana o no...
aquí está el código donde inserté su función...
Como resultado, lo ejecuté en dos papeles, ALRS y AFLT. Las garrapatas sólo volvieron a aparecer los días anteriores. Ninguno por hoy. ¿Qué puede ser?
Hay ticks en las ventanas de la cinta, guardo 100000 últimos ticks - no hay ticks para hoy
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
Intente utilizar en su Asesor Experto todas las formas posibles de recibir ticks y OnTick y CopyTicks, y luego compare los resultados y utilice la más adecuada.
Ese es prácticamente el único mensaje que envían. Desde hace tiempo, el servicio de atención al cliente no responde. ¿Es normal que ignore mis mensajes?
Sobre lo de ignorar tus mensajes - te has equivocado de hilo. Hay un hilo separado sobre SD. De hecho, recuérdelo escribiendo un comentario en la solicitud. ¿Adjuntaste el código y otras pruebas al BOD?
Sí, por supuesto, incluso explicó el código... el silencio... Gracias por el consejo, lo pondré en un hilo aparte
Hecho código de depuración para comprobar CopyTicksRange. Mientras el servicio de atención al cliente está permanentemente en silencio, me pregunto si hay un error en el código. Mis ojos deben haber sido vidriosos... Por favor, míralo con ojos nuevos.
A continuación se muestra el código, adjuntando los resultados. Primer zip - inicio de Metatrader antes de operar, el segundo zip - inicio a las 10:30 pm EST (el tiempo en los archivos de depuración fue de 3 horas menos).
No entiendo por qué en la primera cremallera no salieron garrapatas en ningún papel.
En absoluto. Amigos, ¿cómo se consigue la cinta en tiempo real? Tal vez estoy reinventando la rueda y haciendo algo mal, ¿puedes darme un código de ejemplo sobre cómo obtener ticks en los papeles en tiempo real?
Amigos, ¿cómo se consigue la alimentación en tiempo real?
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Misterioso indicador de valores
fxsaber, 2016.10.04 11:28
Por alguna razón, los ticks del día actual ya no se muestran en absoluto, tanto según el antiguo algoritmo como el nuevo... e independientemente de si la cinta está activada en la ventana o no...
aquí está el código donde inserté su función...
Como resultado, lo ejecuté en dos papeles, ALRS y AFLT. Las garrapatas sólo volvieron a aparecer los días anteriores. Ninguno por hoy. ¿Qué puede ser?
Por alguna razón, los ticks del día actual ya no se muestran en absoluto, tanto según el antiguo algoritmo como el nuevo... e independientemente de si la cinta está activada en la ventana o no...
aquí está el código donde inserté su función...
Como resultado, lo ejecuté en dos papeles, ALRS y AFLT. Las garrapatas sólo volvieron a aparecer los días anteriores. Ninguno por hoy. ¿Qué puede ser?
Hay ticks en las ventanas de la cinta, guardo 100000 últimos ticks - no hay ticks para hoy