Здравствуйте! Написал индикатор. Все работает хорошо. Да вот только при переключении таймфрейма, все зарисованные объекты исчезают с графика.
Вопрос , конечно же, может быть банальным. Но на просторах интернета и данного форума ответа я все же не нашел..
Пробовал функцию ChartRedraw(); , вставлял и в начале и в конце. - не помогает.
Если Вы эти объекты принудительно не удаляете в OnDeinit() или в OnInit(), то просто нажмите "Ctrl" + "B" и Вы их увидите.
Если Вы эти объекты принудительно не удаляете в OnDeinit() или в OnInit(), то просто нажмите "Ctrl" + "B" и Вы их увидите.
Не а.. Все равно не показывает.
Ну у меня в деините стоит функция удаления.
void OnDeinit(const int reason) { ObjectDelete("Dot_A"); ObjectDelete("Dot_B"); for(int j=0; j<=301; j++) ObjectDelete("Line"+IntegerToString(j,0)); }
Но что же мне теперь ее убирать из за этого??
Так значит все из за деинита. А как же тогда исключить удаление объектов при смене таймфрейма ?
Ответ здесь: Параметр reason может принимать следующие значения:...
Если не поймёте, то просто поэксперементируйте с параметром reason - наберётесь опыта.
Индикатор пишу в первый раз
Советник пишется также.
Для пробы:
void OnDeinit(const int reason) { Alert(reason); }
Переключите тайм, измените входные параметры, удалите с графика, прикрепите к графику, а потом подумайте, как это всё использовать.
Просто проверьте причину деинициализации их всего 10
Ну както вот так делайте
void OnDeinit(const int reason) { if(Debug) switch(reason) { case REASON_PROGRAM: Print("Indicator deinit: REASON_PROGRAM");break; case REASON_REMOVE: Print("Indicator deinit: REASON_REMOVE");break; case REASON_RECOMPILE: Print("Indicator deinit: REASON_RECOMPILE");break; case REASON_CHARTCHANGE: Print("Indicator deinit: REASON_CHARTCHANGE");break; case REASON_CHARTCLOSE: Print("Indicator deinit: REASON_CHARTCLOSEv");break; case REASON_PARAMETERS: Print("Indicator deinit: REASON_PARAMETERS");break; case REASON_ACCOUNT: Print("Indicator deinit: REASON_ACCOUNT");break; case REASON_TEMPLATE: Print("Indicator deinit: REASON_TEMPLATE");break; case REASON_INITFAILED: Print("Indicator deinit: ");break; case REASON_CLOSE: Print("Indicator deinit: REASON_CLOSE");break; } if(reason==REASON_REMOVE || reason==REASON_PROGRAM || reason==REASON_CHARTCLOSE) { ObjectDelete(0,"HEADMTFChK"); ObjectDelete(0,Prefics+"M5"); ObjectDelete(0,Prefics+"M15"); ObjectDelete(0,Prefics+"M30"); ObjectDelete(0,Prefics+"H1"); ObjectDelete(0,Prefics+"H4"); ObjectDelete(0,Prefics+"D1"); ObjectDelete(0,Prefics+"W1"); ObjectDelete(0,Prefics+"MN"); ObjectDelete(0,Prefics+"SCC"); ObjectDelete(0,Prefics+"SDst"); if(ObjectFind(0,Prefics+"HDst")>=0){ObjectDelete(0,Prefics+"HDst");} if(ObjectFind(0,Prefics+"MDst")>=0){ObjectDelete(0,Prefics+"MDst");} if(ObjectFind(0,Prefics+"LDst")>=0){ObjectDelete(0,Prefics+"LDst");} GlobalVariableDel(GVName+ChartSymbol()); } }
Слово Prefics, пишется вот так Prefiх)
Слово Prefics, пишется вот так Prefiх)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте! Написал индикатор. Все работает хорошо. Да вот только при переключении таймфрейма, все зарисованные объекты исчезают с графика.
Вопрос , конечно же, может быть банальным. Но на просторах интернета и данного форума ответа я все же не нашел..
Пробовал функцию ChartRedraw(); , вставлял и в начале и в конце. - не помогает.