Errores y sugerencias para mejorar CopyTicks() y CopyTicksRange() después de la compilación 1485.
No hay manera de conseguir la historia en absoluto. He probado esto:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE );
He probado esto:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, 0, inpStartTime*1000 );
Probé esto:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, inpStartTime*1000 );
Probé esto:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, inpStartTime*1000, (inpStartTime+72000)*1000 );
La respuesta es siempre la misma:
2016.11.30 21:36:45.965 UseCopyTicks: Получено 288181 тиков за 93009 мкс
2016.11.30 21:36:47.908 UseCopyTicksRange: ОШИБКА #4401 (Запрашиваемая история не найдена). Тики не получены!
2016.11.30 21:36:48.011 UseCopyTicks: Получено 288186 тиков за 102971 мкс
2016.11.30 21:36:49.992 UseCopyTicksRange: ОШИБКА #4401 (Запрашиваемая история не найдена). Тики не получены!
2016.11.30 21:36:50.090 UseCopyTicks: Получено 288189 тиков за 98423 мкс
Probado en futuros VTBR-12.16, BR-12.16, RTS-12.16. Probado en ticks COPY_TICKS_ALL - mismo resultado. Estimados desarrolladores, ¿están tropezando con los usuarios? ¿O simplemente se aburre de probar sus desarrollos antes de lanzarlos?
No hay manera de conseguir la historia en absoluto. He probado esto:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE );
He probado esto:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, 0, inpStartTime*1000 );
Probé esto:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, inpStartTime*1000 );
Probé esto:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, inpStartTime*1000, (inpStartTime+72000)*1000 );
La respuesta es siempre la misma:
2016.11.30 21:36:45.965 UseCopyTicks: Получено 288181 тиков за 93009 мкс
2016.11.30 21:36:47.908 UseCopyTicksRange: ОШИБКА #4401 (Запрашиваемая история не найдена). Тики не получены!
2016.11.30 21:36:48.011 UseCopyTicks: Получено 288186 тиков за 102971 мкс
2016.11.30 21:36:49.992 UseCopyTicksRange: ОШИБКА #4401 (Запрашиваемая история не найдена). Тики не получены!
2016.11.30 21:36:50.090 UseCopyTicks: Получено 288189 тиков за 98423 мкс
Probado en futuros VTBR-12.16, BR-12.16, RTS-12.16. Probado en ticks COPY_TICKS_ALL - mismo resultado. Estimados desarrolladores, ¿están tropezando con los usuarios? ¿O simplemente se aburre de probar sus desarrollos antes de lanzarlos?
Demotivator Es la 100ª modificación y sigue sin funcionar...
http://demotivatorium.ru/sstorage/3/2012/03/2703120956251657.jpgNo hay manera de conseguir la historia en absoluto. He probado esto:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE );
He probado esto:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, 0, inpStartTime*1000 );
Probé esto:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, inpStartTime*1000 );
Probé esto:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, inpStartTime*1000, (inpStartTime+72000)*1000 );
La respuesta es siempre la misma:
2016.11.30 21:36:45.965 UseCopyTicks: Получено 288181 тиков за 93009 мкс
2016.11.30 21:36:47.908 UseCopyTicksRange: ОШИБКА #4401 (Запрашиваемая история не найдена). Тики не получены!
2016.11.30 21:36:48.011 UseCopyTicks: Получено 288186 тиков за 102971 мкс
2016.11.30 21:36:49.992 UseCopyTicksRange: ОШИБКА #4401 (Запрашиваемая история не найдена). Тики не получены!
2016.11.30 21:36:50.090 UseCopyTicks: Получено 288189 тиков за 98423 мкс
Probado en futuros VTBR-12.16, BR-12.16, RTS-12.16. Probado en ticks COPY_TICKS_ALL - mismo resultado. Estimados desarrolladores, ¿están tropezando con los usuarios? ¿O simplemente se aburre de probar sus desarrollos antes de lanzarlos?
El que no trabaja, come estudiante
Aprender a estudiar
http://rusdemotivator.ru/uploads/posts/2013-03/1362153136_s01bb56czdsk.jpg
Aprender a estudiar
http://rusdemotivator.ru/uploads/posts/2013-03/1362153136_s01bb56czdsk.jpg
Creo que es sólo un error en la documentación de la web, realmente sigue en blanco en ME. O la función está todavía en desarrollo. ¡¡¡En segundo lugar, solicitas datos de algún lugar a partir de 1970 y te preguntas por qué las garrapatas del siglo pasado no te devuelven )!!! ¿Qué estás fumando ahí?
Así es como funciona.
{
datetime dt1 = D'2016.11.28 00:00:00', dt2 = D'2016.11.30 00:00:00';
MqlTick ticks[];
ulong start, msc;
//--- Замеряем время старта перед получением тиков
start=GetMicrosecondCount();
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_ALL, dt1*1000, dt2*1000);
//--- Рассчитаем, за сколько мс получена история
msc=GetMicrosecondCount()-start;
Print("copied=", copied, " msc=", msc);
return;
}
// вывод
2016.12.01 04:52:08.134 TestCopyTicks (EURUSD.m,M15) copied=333081 msc=1294871
2016.12.01 04:52:16.877 TestCopyTicks (EURUSD.m,M15) copied=333081 msc=318596
***
Creo que es un error en la documentación de la web, realmente no está en ME todavía. O la función está todavía en desarrollo. ¡¡¡En segundo lugar, solicitas datos de algún lugar a partir de 1970 y te preguntas por qué las garrapatas del siglo pasado no te devuelven )!!! ¿Qué estás fumando ahí?
Así es como funciona.
{
datetime dt1 = D'2016.11.28 00:00:00', dt2 = D'2016.11.30 00:00:00';
MqlTick ticks[];
ulong start, msc;
//--- Замеряем время старта перед получением тиков
start=GetMicrosecondCount();
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_ALL, dt1*1000, dt2*1000);
//--- Рассчитаем, за сколько мс получена история
msc=GetMicrosecondCount()-start;
Print("copied=", copied, " msc=", msc);
return;
}
// вывод
2016.12.01 04:52:08.134 TestCopyTicks (EURUSD.m,M15) copied=333081 msc=1294871
2016.12.01 04:52:16.877 TestCopyTicks (EURUSD.m,M15) copied=333081 msc=318596
***
Alexey, gracias por participar en las pruebas. Como puedes ver, he probado tanto desde una fecha concreta como hasta una fecha concreta y sin fecha. Pero la cuestión es: 1. Utilicé __DATE__ y parece que hay problemas con las sustituciones de macros; 2. Probé en futuros; Sí, si miras la documentación - al menos debería haber empezado a cargar ticks. Sin embargo, no pasa nada.
¿Intentó ejecutar mi indicador en su entorno?
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Seguir luchando para mejorar: las garrapatas, el acceso a ellas y la sincronización de las mismas. @Slawa, @Renat Fatkhullin y los responsables de las garrapatas, por favor, únanse al debate. Creo que encontraremos más de un error. Además, creo que será interesante para @fxsaber, @coderex y otros usuarios de garrapatas.
Comencemos:
1. No hay ni una palabra sobre la nueva función CopyTicksRange() en la documentación de ME build 1486. No es muy útil desde la página web. Añádelo a la documentación del editor, por favor;
2. Al intentar solicitar ticks mediante CopyTicksRange():
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, inpStartTime*1000 );
Constantemente obtenemos -1 y el error #4401 "historial solicitado no encontrado". Y debería ser así:
Если параметр to_msc не указан, то отдаются все тики до конца истории.
El código está completamente abajo:
//| test_CopyTicksRange.mq5 |
//| Tapochun |
//| https://www.mql5.com/ru/users/tapochun |
//+------------------------------------------------------------------+
#property copyright "Tapochun"
#property link "https://www.mql5.com/ru/users/tapochun"
#property version "1.00"
#property indicator_chart_window
#property indicator_plots 0
//---
#include <errordescription.mqh>
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
input datetime inpStartTime=__DATE__; // Время начала загрузки истории
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
if(prev_calculated<=0)
{
//---
UseCopyTicksRange();
//---
UseCopyTicks();
}
//---
return(rates_total);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void UseCopyTicksRange()
{
MqlTick ticks[];
//--- Замеряем время старта перед получением тиков
ulong start=GetMicrosecondCount();
//--- Запрашиваем тиковую историю
int copied=CopyTicksRange(_Symbol,ticks,COPY_TICKS_TRADE,inpStartTime*1000);
//--- Рассчитаем, за сколько мс получена история
ulong msc=GetMicrosecondCount()-start;
//--- Проверяем количество скопированных тиков
if(copied>0) // Если история получена
{
//--- Выведем информацию о количестве тиков и затраченном времени
Print(__FUNCTION__,": Получено ",copied," тиков за ",msc," мкс");
//--- Проверка синхронизации тиковой истории
if(GetLastError()==0) // Если история синхронизирована
{
//--- Выходим
return;
}
else // Если история рассинхронизирована - сообщение
{
Print(__FUNCTION__,": Получено ",copied," тиков за ",msc," мкс. Тики еще не синхронизированы!");
return;
}
}
else if(copied==0) // Если получено 0 тиков - сообщение
Print(__FUNCTION__,": ВНИМАНИЕ! Получено 0 тиков. Возможно установлен некорректный параметр from ("+
TimeToString(inpStartTime,TIME_DATE|TIME_SECONDS)+".",inpStartTime*1000%1000,"). Текущее время "+TimeToString(TimeCurrent()));
else // Если тики не получены - ошибка
Print(__FUNCTION__,": ОШИБКА #",GetLastError()," ("+ErrorDescription(_LastError)+"). Тики не получены!");
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void UseCopyTicks()
{
MqlTick ticks[];
//--- Замеряем время старта перед получением тиков
ulong start=GetMicrosecondCount();
//--- Запрашиваем тиковую историю
int copied=CopyTicks(_Symbol,ticks,COPY_TICKS_TRADE,inpStartTime*1000,10000000);
//--- Рассчитаем, за сколько мс получена история
ulong msc=GetMicrosecondCount()-start;
//--- Проверяем количество скопированных тиков
if(copied>0) // Если история получена
{
//--- Выведем информацию о количестве тиков и затраченном времени
Print(__FUNCTION__,": Получено ",copied," тиков за ",msc," мкс");
//--- Проверка синхронизации тиковой истории
if(GetLastError()==0) // Если история синхронизирована
{
//--- Выходим
return;
}
else // Если история рассинхронизирована - сообщение
{
Print(__FUNCTION__,": Получено ",copied," тиков за ",msc," мкс. Тики еще не синхронизированы!");
return;
}
}
else if(copied==0) // Если получено 0 тиков - сообщение
Print(__FUNCTION__,": ВНИМАНИЕ! Получено 0 тиков. Возможно установлен некорректный параметр from ("+
TimeToString(inpStartTime,TIME_DATE|TIME_SECONDS)+".",inpStartTime*1000%1000,"). Текущее время "+TimeToString(TimeCurrent()));
else // Если тики не получены - ошибка
Print(__FUNCTION__,": ОШИБКА #",GetLastError()," ("+ErrorDescription(_LastError)+"). Тики не получены!");
}
//+------------------------------------------------------------------+
CopyTicks() devuelve el resultado correcto.