В каком это стандартном индикаторе? Ссылка на CodeBase есть?
В каком это стандартном индикаторе? Ссылка на CodeBase есть?
очевидно что стандартный, значит в поставке МТ, какая тут ссылка, пусть даст название индикатора
очевидно что стандартный, значит в поставке МТ, какая тут ссылка, пусть даст название индикатора
Дааа, конечно очевидно, что стандартный, если так и написано - "стандартный".
Все эти пользовательские индикаторы приложенные к терминалу в качестве примеров есть в CоdeBase, да и не в этом суть, а в том, что бы посозерцать реально объект обсуждения.
Ищутся эти совпадения элементарно: в строку поиска MetaEditor'a вставляется строка "if(prev_calculated>rates_total || prev_calculated<0) to_copy=rates_total" и выбирается режим "Поиск в файлах". Первый подопытный - "Accelerator".
Вероятно конструкция
//--- we can copy not all data int to_copy; if(prev_calculated>rates_total || prev_calculated<0) to_copy=rates_total; else { to_copy=rates_total-prev_calculated; if(prev_calculated>0) to_copy++; }
была введена для защиты вот от таких случаев ("+1" я дописал сам - для тестирования):
//--- return value of prev_calculated for next call return(rates_total+1);
- то есть вероятно раньше была возможность в конце OnCalculate() вернуть количество баров больше, чем "rates_total". А так как в коде применяется копирование ("CopyBuffer"), то можно было бы получить ошибку выхода за пределы массива.
Сейчас я попробовал
//--- return value of prev_calculated for next call return(rates_total+1);
- но обмануть не удалось - при таком методе при последующем заходе в OnCalculate() "prev_calculated" сбрасывается в "0".
У меня один раз брокер глюканул, и на пару часов просто потерял историю баров дальше месяца назад. График цены обрывался месяц назад. Вот в таком случае rates_total точно уменьшились до нового очень маленького значения, индикаторы и эксперт позакрывались с ошибками в логах.
Это было на MT5. Мне кажется в MT4 другая система контроля истории, и брокер уже не может изменить ранее сохранённые бары.Сейчас я попробовал
Менять символ на другой с меньшим кол-вом баров истории не пробовали?
Пробовал. Например был символ EURUSD, а потом замена символа на RTS-9.17.
А какой смысл в таком действии? Ведь при смене символа индикатор загружается по новой.
Пробовал. Например был символ EURUSD, а потом замена символа на RTS-9.17.
А какой смысл в таком действии? Ведь при смене символа индикатор загружается по новой.
Или переключать на ТФ с короткой историей
Практика показывает что смысл искать не стоит, лучше вставить доп проверку на всякий.. Вот и штатные разрабы так и делают
Т.е. такая ситуация как
1.prev_calculated>rates_total - кол-во подсчитанный баров больше кол-ва баров на графике.
2.prev_calculated<0 - кол-во подсчитанный баров меньше 0.
имеет место быть, то значит при таких условиях в индикаторе нужно просто делать перерасчет от 0 до rates_total, и я думаю на этом все))
Т.е. такая ситуация как
1.prev_calculated>rates_total - кол-во подсчитанный баров больше кол-ва баров на графике.
2.prev_calculated<0 - кол-во подсчитанный баров меньше 0.
имеет место быть, то значит при таких условиях в индикаторе нужно просто делать перерасчет от 0 до rates_total, и я думаю на этом все))
Не ну вы сподобитесь написать в каком индикаторы вы такое увидели, или не царское дело? Где увидели, что ситуация имеет место быть?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте! Нашел в стандартном индикаторе вот такую строчку кода
if(prev_calculated>rates_total || prev_calculated<0) to_copy=rates_total;
Мне не понятно в каких ситуациях может быть
1.prev_calculated>rates_total - кол-во подсчитанный баров больше кол-ва баров на графике.
2.prev_calculated<0 - кол-во подсчитанный баров меньше 0.
Если такое возможно - то как можно смоделировать такую ситуацию, чтобы проверить работу своего индикатора в этих условиях?