Скачать MetaTrader 5

Рисуем значок индикатором, когда не нужен - он всеравно остается....

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Все программы в Code Base доступны из MetaTrader 5. Опубликуй и ты свою!
Forex Trader
114255
Forex Trader 2007.03.26 13:37 
Индикатор как дает сигнал на покупку/продажу в виде стрелки вниз/вверх, если срабатывает определнное условие.
В чем проблема:
например: как появляется бар, допустим, появляется стрелка на покупку - стрелка вверх, но пока бар формируется, значение индикатора меняется и на момент акрытия бара получается так, что индикатор показывает одно (условие не достаточное для отрисовки стрелки вверх), а стрелка на графике уже есть, т.к. условие было достаточным в начале периода.
Приходиться открывать св-ва данного индикатора и жать "Ok" , после чего "неверные" стрелки исчезают.
Как сделать это по нормальному?
Forex Trader
114255
Forex Trader 2007.03.26 15:12  
bool ObjectDelete( string name) 
Удаление объекта с указанным именем. При успешном удалении функция возвращает TRUE, иначе FALSE.
Чтобы получить дополнительную информацию об ошибке, необходимо вызвать функцию GetLastError(). 
Параметры:
name   -   Имя удаляемого объекта. 

Пример:
ObjectDelete("text_object");
 
Forex Trader
114255
Forex Trader 2007.03.26 15:17  
Так сигнал ввиде стрелок - это результат работы индикатора. Как я могу знать название объекта?
Forex Trader
114255
Forex Trader 2007.03.26 15:18  
Скорей всего у него немного не то. Вычисляется значения буфера на нулевом баре, а когда условие отрисовки отменяется, алгоритм индикатора "забывает" обнулить этот буфер.
Forex Trader
114255
Forex Trader 2007.03.26 15:19  
Так сигнал ввиде стрелок - это результат работы индикатора. Как я могу знать название объекта?

Точно, подтвердил.
Forex Trader
114255
Forex Trader 2007.03.26 15:22  
тогда в буфер индикатора вместо значения ставь
void SetIndexEmptyValue( int index, double value) 
Устанавливает значение пустой величины для линии индикатора. Пустые значения не рисуются и не показываются в DataWindow. По умолчанию значение пустой величины - EMPTY_VALUE. 
Параметры:
index   -   Порядковый номер линии. Должен быть от 0 до 7. 
value   -   Новое "пустое" значение. 

Пример:
int init()
  {
//---- 2 распределенных буфера индикатора
    SetIndexBuffer(0,ExtUppperBuffer);
    SetIndexBuffer(1,ExtLowerBuffer);
//---- настройка параметров отрисовки
    SetIndexStyle(0,DRAW_ARROW);
    SetIndexArrow(0,217);
    SetIndexStyle(1,DRAW_ARROW);
    SetIndexArrow(1,218);
//---- значение 0 отображаться не будет
    SetIndexEmptyValue(0,0.0);
    SetIndexEmptyValue(1,0.0);
//---- отображение в DataWindow
    SetIndexLabel(0,"Fractal Up");
    SetIndexLabel(1,"Fractal Down");
//---- инициализация сделана
   return(0);
  }

Forex Trader
114255
Forex Trader 2007.03.27 13:47  
Profi_R
Большое спасибо!
Проблема решена!
Forex Trader
114255
Forex Trader 2007.03.28 00:49  
Profi_R
Проблема не решена - я ошибся!!!

Видимо я неверно объяснил ситуацию!
Я торгую на 15-и минутках. Как только появляется новый бар, значение индикатора не нулевое, а значит рисуется стрелка. Но к моменту закрытия бара, т.е. в конце 15-и минутки ситуация может поменяться, и условия необходимые для отрисовки стрелки уже не выполняются, т.е. получается, что стрелка нарисованная до этого неверна, ее быть не должно, а она уже есть!!!!!!!
Forex Trader
114255
Forex Trader 2007.03.28 00:55  
Т.е. сейчас индикатор для отрисовки стрелки ориентируется на текущую цену Close, а надо не на текущую, а на реальный Close, т.е. на тот, на котором действительно закрылся текущий бар!!!

Как это сделать? Пробовал через iClose, но при ее вызове она тоже берет текущую цену Close, т.е ту цену, которая пляшет на текущем, последнем баре. Помимо того, как "сдвигать" в коде расчет индикатора на бар назад есть какие-нибудь варианты?
Forex Trader
114255
Forex Trader 2007.03.28 01:16  
Может в начале цикла поставить проверку, что если текущий номер бара равен предпоследнему на графике, то делать RefreshRates( ) ?
Forex Trader
114255
Forex Trader 2007.03.28 08:55  
Выложите кусок кода, где записываются значения в индикаторный массив,так легче будет показать. Я знаю в чем у Вас ошибка, но на словах вряд ли получится объяснить.
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий