Добрый день!
Полагаю, что проблема в том, что переменная telo может иметь значение "0". А делить на ноль - не хорошо :)
Попробуйте примерно так:
#property indicator_chart_window // Индик. рисуется в основном окне #property indicator_buffers 1 // Количество буферов #property indicator_color1 Gold // Цвет первой линии double Buf_0[]; double razmer; double sv; double telo; double raz; double znach; int u; // Открытие индикаторных массивов //-------------------------------------------------------------------- int init() // Специальная функция init() { //-------------------------------------------------------------------- SetIndexBuffer(0,Buf_0); // Назначение массива буферу SetIndexStyle (0,DRAW_ARROW,0,3); // Стиль линии SetIndexArrow(0,159); //-------------------------------------------------------------------- return 0; // Выход из спец. ф-ии init() } //-------------------------------------------------------------------- int start() // Специальная функция start() { // Количество просчитанных баров //-------------------------------------------------------------------- u=Bars-1; // Индекс первого непосчитанного while(u>=0) // Цикл по непосчитанным барам { razmer=High[u]-Low[u]; if (Open[u]>=Close[u]) sv=2; if (Open[u]<Close[u]) sv=1; if (sv==1) telo=Close[u]-Open[u]; if (sv==2) telo=Open[u]-Close[u]; if (sv==1) znach=Close[u]-((Close[u]-Open[u])/2); if (sv==2) znach=Open[u]-((Open[u]-Close[u])/2); raz=razmer/(telo == 0 ? Point : telo); if (raz>2) Buf_0[u]=znach; u--; // Расчёт индекса следующего бара } //-------------------------------------------------------------------- return 0; // Выход из спец. ф-ии start() } //--------------------------------------------------------------------
Где в "(telo == 0 ? Point : telo)" означает "если telo равно нулю, то используем Point, иначе telo".
Вместо Point по смыслу вероятно корректней будет единицу использовать, но это Вам виднее. Главное - не допускать деления на ноль.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Друзья, кому не сложно - гляньте, пожалуйста, почему не работает индикатор?
Описание: если тело свечи в 2 или более раз меньшк полного размера свечи, то посередине тела свечи надо поставить точку.
Вот родил такое чудо:
В итоге, на месячном графике все работает хорошо, а начиная с недельного и ниже - он работает все левее и левее, т.е. точки отображаются только в самом начале графика, лишь на первых нескольких барах.
Почему так? Что поправить?
Знаний маловато, буду благодарен за более подробные ответы.