Небольшое отступление - а зачем гонять в режиме Еври Тик или Контрол Пойнтс? Единственно , что в немного не понравилось в коде - сравнение типов double и int.
Небольшое отступление - а зачем гонять в режиме Еври Тик или Контрол Пойнтс? Единственно , что в немного не понравилось в коде - сравнение типов double и int. Ну и проверка нового бара по времени - я так тоже не делаю.
В режиме КаждыйТик гоняется, потому как так и работает основной эксперт, по другому как же он ордера отслеживать будет? ;) Сравнение дабли и инта убрал, оставил чистый дабл - на результат всё равно не повлияло, всё теже тормоза на билдах старше 179-го... Проверка же нового бара по времени, по НЕМОЕМУ мнению, самая что ни на есть простая и надежная :) А моего мнения всё равно никто не спрашивал... :) Нет, ну если честно, нормальная проверка, чем оно вам не нравится то? Работает и работает... Корректно... А вот что с тормозами делать - кто б объяснил...
Если идет проверка значений индикатора на последнем завершенном баре - зачем в нулевом баре все это проверять? Вот в чем вопрос. То есть хачем режимы Эври Тик и другие? Только для ловли стопов внутри бара и перезарядки лотов при получении стопа или тейк-профита?
Если идет проверка значений индикатора на последнем завершенном баре - зачем в нулевом баре все это проверять? Вот в чем вопрос. То есть хачем режимы Эври Тик и другие? Только для ловли стопов внутри бара и перезарядки лотов при получении стопа или тейк-профита?
Да, для двигания трейлинга по алгоритму. Без него никак. А в нулевом баре эта проверка идет толкьо один раз, сами видите, при открытии бара.
прогнал твой код у себя модель - 2, AMD 2700+, WinXP SP2, RAM 512Mb
Баров в истории 57060
Смоделировано тиков 586272
14:13:47 test inputs: ADX=18; ADXPM=18; ADXPer=10;
...
14:31:21 2005.07.29 21:30 test GBPUSD,M30: Покупка!
итого 18 минут 26 секунд!!!
заменил принт на присваивание значение временной переменной
Баров в истории 57061 <- период теста не менял , а кол-во баров увеличилось ?
Смоделировано тиков 586273 <- период теста не менял , а смоделированных тиков увеличилось ?
14:37:13 test GBPUSD,M30: loaded successfully
14:37:15 test inputs: ADX=18; ADXPM=18; ADXPer=10;
закончил примерно 14:56 я думал что он в лог запишет , но обратил внимание на таймер
т.е. время опять более 18 минут!!!
перенес код использования индикаторов в старт
2005.08.29 14:58:47 test inputs: ADX=18; ADXPM=18; ADXPer=10;
2005.08.29 14:58:46 test GBPUSD,M30: loaded successfully
на этот раз посмотрел на часы специально закончил в 15:13
т.е. примерное затраченное время 15 мин.
теперь сокращу число обращений к индикатору (функции) за отработку старт
прогнал твой код у себя модель - 2, AMD 2700+, WinXP SP2, RAM 512Mb
Баров в истории 57060
Смоделировано тиков 586272
14:13:47 test inputs: ADX=18; ADXPM=18; ADXPer=10;
...
14:31:21 2005.07.29 21:30 test GBPUSD,M30: Покупка!
итого 18 минут 26 секунд!!! заменил принт на присваивание значение временной переменной
Баров в истории 57061 <- период теста не менял , а кол-во баров увеличилось ?
Смоделировано тиков 586273 <- период теста не менял , а смоделированных тиков увеличилось ?
14:37:13 test GBPUSD,M30: loaded successfully
14:37:15 test inputs: ADX=18; ADXPM=18; ADXPer=10;
закончил примерно 14:56 я думал что он в лог запишет , но обратил внимание на таймер
т.е. время опять более 18 минут!!! перенес код использования индикаторов в старт
2005.08.29 14:58:47 test inputs: ADX=18; ADXPM=18; ADXPer=10;
2005.08.29 14:58:46 test GBPUSD,M30: loaded successfully
на этот раз посмотрел на часы специально закончил в 15:13
т.е. примерное затраченное время 15 мин. теперь сокращу число обращений к индикатору (функции) за отработку старт
2005.08.29 15:16:15 test inputs: ADX=18; ADXPM=18; ADXPer=10;
2005.08.29 15:16:14 test GBPUSD,M30: loaded successfully
время окончания теста - 15:31:12
Баров в истории 57062 <-как ни странно количество баров и смоделированных тиков опять
Смоделировано тиков 586274 <- увеличилось
чуть меньше 15 минут и на конец без проверки на "новый бар" с одним обращением к индикатору (просто одино обращение к функции)
а вот без проверки на новый бар, пролетело даже глазом моргнуть не успел, потому результатов нет :)
Единственно , что в немного не понравилось в коде - сравнение типов double и int.
Небольшое отступление - а зачем гонять в режиме Еври Тик или Контрол Пойнтс?
Единственно , что в немного не понравилось в коде - сравнение типов double и int.
Ну и проверка нового бара по времени - я так тоже не делаю.
В режиме КаждыйТик гоняется, потому как так и работает основной эксперт, по другому как же он ордера отслеживать будет? ;)
Сравнение дабли и инта убрал, оставил чистый дабл - на результат всё равно не повлияло, всё теже тормоза на билдах старше 179-го...
Проверка же нового бара по времени, по НЕМОЕМУ мнению, самая что ни на есть простая и надежная :) А моего мнения всё равно никто не спрашивал... :)
Нет, ну если честно, нормальная проверка, чем оно вам не нравится то? Работает и работает... Корректно...
А вот что с тормозами делать - кто б объяснил...
Да, для двигания трейлинга по алгоритму. Без него никак. А в нулевом баре эта проверка идет толкьо один раз, сами видите, при открытии бара.
итого 18 минут 26 секунд!!!
заменил принт на присваивание значение временной переменной
т.е. время опять более 18 минут!!!
перенес код использования индикаторов в старт
т.е. примерное затраченное время 15 мин.
теперь сокращу число обращений к индикатору (функции) за отработку старт
итого 18 минут 26 секунд!!!
заменил принт на присваивание значение временной переменной
т.е. время опять более 18 минут!!!
перенес код использования индикаторов в старт
т.е. примерное затраченное время 15 мин.
теперь сокращу число обращений к индикатору (функции) за отработку старт
чуть меньше 15 минут
и на конец без проверки на "новый бар" с одним обращением к индикатору (просто одино обращение к функции)
а вот без проверки на новый бар, пролетело даже глазом моргнуть не успел, потому результатов нет :)
выходит вся проблема в
//if(prevtime!=Time[0]) //{ //prevtime = Time[0];??? а вроде как нацелено на оптимизацию работы кода :)
выходит вся проблема в
//if(prevtime!=Time[0]) //{ //prevtime = Time[0];??? а вроде как нацелено на оптимизацию работы кода :)
А вот и нет. Запускаем "чистый" код:
extern double ADX=18, ADXPM=18; extern int ADXPer=10; datetime prevtime; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //----------------------------------------------------------------------------------/ //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { if(prevtime != Time[0]) { prevtime = Time[0]; int znak=0; } // Закрыли проверку на новый ли это бар //---- return(0); }Летает, как из пушки.