Ситуация очень похожа на то, что вы компилируете индикатор "чужим" редактором. Открытый клиентский терминал - из другого директория и не получает сообщений от чужого редактора
Нет. И редактор, и терминал из одного каталога. Свойства ярлыков:
"D:\Program Files\MetaTrader 4\MetaEditor.exe"
"D:\Program Files\MetaTrader 4\terminal.exe"
"D:\Program Files\MetaTrader 4\MetaEditor.exe"
"D:\Program Files\MetaTrader 4\terminal.exe"
Нет. И редактор, и терминал из одного каталога. Свойства ярлыков:
"D:\Program Files\MetaTrader 4\MetaEditor.exe"
"D:\Program Files\MetaTrader 4\terminal.exe"
"D:\Program Files\MetaTrader 4\MetaEditor.exe"
"D:\Program Files\MetaTrader 4\terminal.exe"
Фишка в том, что MetaEditor запросто может хватать "неродные" коды(если стоит несколько копий терминалов в разных директориях). Чтобы убедиться в правильности, я делаю "Сохранить как" и только потом компилю - это дает 100% гарантию. Иначе никак, несколько раз как дурак искал баги и не мог понять , почему советник не меняется после компиляции :( , искал блох там, где их нет.
Нет, Rosh, SaveAs сохраняет в то же дерево каталога, где стоит и терминал, и эдитор. И эдитор я запускаю с того же каталога, где стоит терминал.
PS. Я работаю в отделе качества одной компании, занимающейся разработкой ПО и всегда удивляюсь -- почему разработчики задают столько вопросов перед тем, как воспроизвести ошибку и исправить ее. Неужели так сложно воспроизвести ее у себя и убедиться, а не бегать по n раз к тестерам и удивляться "почему же оно не работает"? :-)
PS. Я работаю в отделе качества одной компании, занимающейся разработкой ПО и всегда удивляюсь -- почему разработчики задают столько вопросов перед тем, как воспроизвести ошибку и исправить ее. Неужели так сложно воспроизвести ее у себя и убедиться, а не бегать по n раз к тестерам и удивляться "почему же оно не работает"? :-)
Daniil, а как дело обстоит с экспертами? Они перезагружаются после перекомпиляции?
PS Я работал в нескольких компаниях по разработке ПО. И везде у нас была служба quality & assurance (отдел технического контроля), которые воспроизводили клиентские баги (либо самостоятельно находили). Их инструкции по воспроизведению багов были исчерпывающими. И это - очень тяжёлый и неблагодарный труд. Вы сами работали тестером?
У нас есть несколько специальных тестеров, но они не могут воспроизвести проблему, к сожалению.
PS Я работал в нескольких компаниях по разработке ПО. И везде у нас была служба quality & assurance (отдел технического контроля), которые воспроизводили клиентские баги (либо самостоятельно находили). Их инструкции по воспроизведению багов были исчерпывающими. И это - очень тяжёлый и неблагодарный труд. Вы сами работали тестером?
У нас есть несколько специальных тестеров, но они не могут воспроизвести проблему, к сожалению.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Для примера, вот индикатор. Меняю тестовые Print'ы в функции Init() и Start(), компилирую, а реакции никакой -- в логе выдается только, что "loaded successfully". Но когда я удаляю и кидаю снова индикатор на график, то принты в логе видны.
#property indicator_color1 Red #property indicator_chart_window double SignalBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { SetIndexBuffer(0, SignalBuffer); SetIndexStyle(0, DRAW_ARROW); IndicatorShortName("Divergence Indicator"); for(int i = 0; i < Bars; i++) SignalBuffer[i] = 0.0; Print("init2"); return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { ObjectsDeleteAll(0); return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars = IndicatorCounted(); int i, limit; limit = Bars - counted_bars; for(i = limit; i >= 0; i--) { if (Close[i] > Open[i]) SignalBuffer[i] = Close[i] + Point*20; else SignalBuffer[i] = 0.0; // i--; } Print(counted_bars); //---- return(0); } //+------------------------------------------------------------------+