Это почему же CopyTicks такой тормозной?! Проверил зависимость от количества тиков (count - входной параметр) - почти никакой. Так же тормозит и при малых значениях.
У Вас from нулевой. Все тормоза, похоже, когда в CopyTicks входной from не нулевой.
Похоже, очень кривая реализация CopyTicks в таком режиме, даже если запрашиваются тики со времени последнего вызова. Казалось бы, должно летать, ан нет.
fxsaber: У Вас from нулевой. Все тормоза, похоже, когда в CopyTicks входной from не нулевой.
Здесь получается другое направление копирования: когда "from==0", то запрос идёт, образно говоря, от самой правой части графика к левой части. А вот когда задаём копирование с определённой даты и количество, то копирование идёт с левой стороны (начиная с указанной даты) в право.
Щас проверим гипотезу...
// Индикатор в виде гистограммы показывает проторгованный оборот BUY и SELL#property indicator_separate_window#property indicator_buffers2#property indicator_plots2#property indicator_label1 "TurnOver_BUY"#property indicator_type1 DRAW_HISTOGRAM#property indicator_color1 clrYellow#property indicator_style1 STYLE_SOLID#property indicator_width1 1#property indicator_label2 "TurnOver_SELL"#property indicator_type2 DRAW_HISTOGRAM#property indicator_color2 clrRed#property indicator_style2 STYLE_SOLID#property indicator_width2 1double Buffer0[];
double Buffer1[];
//--- input parameters inputint ticks=1000; // количество запрашиваемых тиков //+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnInit()
{
SetIndexBuffer(0,Buffer0,INDICATOR_DATA);
SetIndexBuffer(1,Buffer1,INDICATOR_DATA);
IndicatorSetInteger(INDICATOR_DIGITS,Digits());
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
if(prev_calculated==0)
{
for(int i=0;i<rates_total;i++)
{
Buffer0[i]=MathRand();
Buffer1[i]=-MathRand();
}
return(rates_total);
}
for(int i=prev_calculated-1;i<rates_total;i++)
{
Buffer0[i]=MathRand();
Buffer1[i]=-MathRand();
}
//--- массив для приема тиков MqlTick tick_array[];
//--- запросим тикиdatetime start=D'2016.09.27 19:00'; // с какой даты запрашивать тикиint copied=CopyTicks(Symbol(),tick_array,COPY_TICKS_ALL,(ulong)start*1000,ticks);
//--- если тики получены, то выведем на график значения Bid и Ask if(copied>0)
{
}
else// сообщим об ошибке при получении тиков
{
Comment("Не удалось загрузить тики. GetLastError()=",GetLastError());
}
return(rates_total);
}
//+------------------------------------------------------------------+
Да, верно. Локализована проблема: при запросе из индикатора, по крайней мере при стиле рисования DRAW_HISTOGRAM, истории тиков при указании конструкции, где параметр "from" равен какой-то дате происходит моргание данных в окне "Окно данных".
Если применять в CopyTicks параметр "from"==0, моргания нет.
Karputov Vladimir: Здесь получается другое направление копирования: когда "from==0", то запрос идёт, образно говоря, от самой правой части графика к левой части. А вот когда задаём копирование с определённой даты и количество, то копирование идёт с левой стороны (начиная с указанной даты) в право.
Вправо всегда копируется: Ticks[0] - всегда самый "левый" (с наименьшим временем рождения) тик. Грубо говоря, Ticks[] всегда отсортирован по возрастанию времени рождения тиков.
Karputov Vladimir:
Локализована проблема: при запросе из индикатора, по крайней мере при стиле рисования DRAW_HISTOGRAM, истории тиков при указании конструкции, где параметр "from" равен какой-то дате происходит моргание данных в окне "Окно данных".
Если применять в CopyTicks параметр "from"==0, моргания нет.
Что же мне так везет на баги. Похоже, никто CopyTicks не применяет, раз бажные рапорты только от меня.
fxsaber: Вправо всегда копируется: Ticks[0] - всегда самый "левый" (с наименьшим временем рождения) тик. Грубо говоря, Ticks[] всегда отсортирован по возрастанию времени рождения тиков.
Это он так уже записывается в буфер, а по сути запроса - это два разных направления: один запрашивает от сюда и вглубь, а второй запрашивает из глубины истории и до сюда.
Karputov Vladimir: Это он так уже записывается в буфер, а по сути запроса - это два разных направления: один запрашивает от сюда и вглубь, а второй запрашивает из глубины истории и до сюда.
Можно, конечно, в данном случае переписать
GetFreshTicks
с вариантом from == 0, но это не дело совсем. Надо выправлять CopyTicks. В Сервисдеск снова?
мне одному ТС напоминает по манере и всему остальному hrenfx?)) побольше бы таких героев (никакого сарказма,все реально). должен же кто-то пинать сервисдеск и разрабов чем-то помимо -нарисуйте мне тут в терминале стрелочку другого цвета или прилепите кнопку не сюда,а вооон-туда)
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Пробовал - моргание исчезало. Но в причинах не разобрался. Не хочется думать, что это очередной баг.
Вот набросал:
моргание ушло. Подтверждаю.
Добавим экстрима:
полёт нормальный. Нет моргания.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
fxsaber, 2016.09.27 18:30
Сделал вывод каждого тика, дофига!
Это почему же CopyTicks такой тормозной?! Проверил зависимость от количества тиков (count - входной параметр) - почти никакой. Так же тормозит и при малых значениях.
Добавим экстрима:
полёт нормальный. Нет моргания.
У Вас from нулевой. Все тормоза, похоже, когда в CopyTicks входной from не нулевой.
Похоже, очень кривая реализация CopyTicks в таком режиме, даже если запрашиваются тики со времени последнего вызова. Казалось бы, должно летать, ан нет.
У Вас from нулевой. Все тормоза, похоже, когда в CopyTicks входной from не нулевой.
Щас проверим гипотезу...
Да, верно. Локализована проблема: при запросе из индикатора, по крайней мере при стиле рисования DRAW_HISTOGRAM, истории тиков при указании конструкции, где параметр "from" равен какой-то дате происходит моргание данных в окне "Окно данных".
Если применять в CopyTicks параметр "from"==0, моргания нет.
Здесь получается другое направление копирования: когда "from==0", то запрос идёт, образно говоря, от самой правой части графика к левой части. А вот когда задаём копирование с определённой даты и количество, то копирование идёт с левой стороны (начиная с указанной даты) в право.
Вправо всегда копируется: Ticks[0] - всегда самый "левый" (с наименьшим временем рождения) тик. Грубо говоря, Ticks[] всегда отсортирован по возрастанию времени рождения тиков.
Локализована проблема: при запросе из индикатора, по крайней мере при стиле рисования DRAW_HISTOGRAM, истории тиков при указании конструкции, где параметр "from" равен какой-то дате происходит моргание данных в окне "Окно данных".
Если применять в CopyTicks параметр "from"==0, моргания нет.
Что же мне так везет на баги. Похоже, никто CopyTicks не применяет, раз бажные рапорты только от меня.
Вправо всегда копируется: Ticks[0] - всегда самый "левый" (с наименьшим временем рождения) тик. Грубо говоря, Ticks[] всегда отсортирован по возрастанию времени рождения тиков.
Это он так уже записывается в буфер, а по сути запроса - это два разных направления: один запрашивает от сюда и вглубь, а второй запрашивает из глубины истории и до сюда.
Можно, конечно, в данном случае переписатьс вариантом from == 0, но это не дело совсем. Надо выправлять CopyTicks. В Сервисдеск снова?
Да. И не забудьте примеры, на которых явно видно локализованная проблема (from=0 и from=определённая дата).
Добавлено: фсё, я спать.