Дыры во времени - страница 2

 
Вот делать aksakal'у нечего, как просить (с подъ_бкой) других. Я как-то напряг Славу, думал у меня в коде нет ошибки, Слава ее нашел. Мне было , мягко говоря, неудобно :)
Чему равен limit, если индикатор запускается в первый раз?
У себя в глазу бревна и не видим? :)
 
Rosh:
Вот делать aksakal'у нечего, как просить (с подъ_бкой) других. Я как-то напряг Славу, думал у меня в коде нет ошибки, Слава ее нашел. Мне было , мягко говоря, неудобно :)
Чему равен limit, если индикатор запускается в первый раз?
У себя в глазу бревна и не видим? :)
Самое печальное, что бревна я до сих пор не вижу :(.
limit = Bars - counted_bars;
Код взят из хелпа по IndicatorCounted( ) . Только цикл в другую сторону.
Где можно прочитать как должно быть?
 
Бревно вот - где такая конструкция?
if(counted_bars == 0){нужны
 
Rosh, а зачем мне эта конструкция?
Если counted_bars == 0 я все равно должен выполнить то, что и при counted_bars > 0. Т.е. заполнить ExtMapBuffer1.
 
Я проверил (немного изменив твой код) твой индикатор, дыр не обнаружил. В советнике не проверял. Поэтому пока не понимаю о каких дырах ижет речь.
#property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Yellow #property indicator_maximum 2.0 #property indicator_minimum 0.0 //---- input parameters extern int Param1=0; //---- buffers double ExtMapBuffer1[]; //int limit = 0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); //---- int limit; if(counted_bars < 0){ return(-1); } if(counted_bars > 0){ counted_bars--; } limit = Bars - counted_bars; for(int i=limit; i>=0; i--) { ExtMapBuffer1[i] = 1; Print("i=",i); } //---- return(0); } //+------------------------------------------------------------------+
 
Rosh:
Я проверил (немного изменив твой код) твой индикатор, дыр не обнаружил. В советнике не проверял. Поэтому пока не понимаю о каких дырах ижет речь.
Дыры видны при тестировании приведенного выше советника.
 
Вообще-то, копировать содержимое вкладки "журнал" не совсем корректно. Приведите в качестве иллюстрации 2 фрагмента log-файла.
Уверяю Вас, в обоих фрагментах будут одинаковые дыры. А почему дыры? Да потому что минутки!
 
Спасибо, stringo.

Вроде ситуация проясняется. Буду пробовать дальше.

Логи лежат в "MetaTrader 4\tester\logs\*.log" ?
Если Вы имеете в виду дырочки на несколько минут, то это понятно. Это не в сутки дырище :)
А как можно знать когда доверять журналу, а когда нужно лезть в логи?
 
При массовом выводе в журнал данные во вкладке могут "закусываться" (вывод в окно идёт через буфер фифо, который может не успевать очищаться). Поэтому, в случае чего, лучше самостоятельно открывать лог-файл. Папку с логами можно открыть из контекстного меню журнала.
 
aksakal:
А как можно знать когда доверять журналу, а когда нужно лезть в логи?
Когда в логи выводятся тысячи и десятки тысяч записей, журнал показывает не все данные.
Журнал специально пропускает массированный многотысячный вывод в свое окно, чтобы не тормозить работу терминала.
Вывод в файловый журнал идет полностью. При массированном выводе логов именно там надо смотреть результаты.
Также зацените объем сгенерированных логов.