Ни разу не работал с тиками. Сейчас назрела необходимость. Прошу помочь.
Нужно не для каждого бара на графике (как обычно строятся индикаторы), а только для текущего, который формируется в н.в. вывести информацию на экран графика (средствами Comment) следующую информацию:
1. Сколько раз цена Bid равнялась с High/Low
2. Сколько раз изменяла High/Low
Как это сделать? Может кто пример индюка своего скинет, работающего на тиках с ценами?
1 пункт выполняется только 1 раз на первом тике бара.
2 пункт выполним в цикле со счётчиками, проверяя увеличение разностей High-Bid и Bid-Low, считая с открытия бара до открытия следущего.
С этой задачей можете сами справиться!
1 пункт выполняется только 1 раз на первом тике бара.
На первом, а точнее, на нулевом тике бара bid == open. Далее bid может быть равным high и low сколько угодно раз. Надо завести 2 счетчика и сравнивать до начала нового бара.
Правильно, потому что 1-й уже будет зелёный, то есть, выше, или как? Потому что никогда 1-й тик не встречал на понижение, красный.
Понятно, но меня этот вопрос не волнует! Не тиком единым жив трейдер! ;))
Как это сделать? Может кто пример индюка своего скинет, работающего на тиках с ценами?
А какие у вас возникают проблемы? Где код с попыткой реализации? Нужно помочь или сделать за вас?
Индикатор получится достаточно простой:
- при появлении бара обнуляем все счетчики и переменные,
- при равенстве close[0] и high[0] увеличиваем счетчик "касание хай"
- при high[0] > prev_high увеличиваем счетчик "изменение хай" и запоминаем prev_high = high[0]
- аналогично для лоу.
А какие у вас возникают проблемы? Где код с попыткой реализации? Нужно помочь или сделать за вас?
Индикатор получится достаточно простой:
- при появлении бара обнуляем все счетчики и переменные,
- при равенстве close[0] и high[0] увеличиваем счетчик "касание хай"
- при high[0] > prev_high увеличиваем счетчик "изменение хай" и запоминаем prev_high = high[0]
- аналогично для лоу.
А какие у вас возникают проблемы? Где код с попыткой реализации? Нужно помочь или сделать за вас?
Индикатор получится достаточно простой:
- при появлении бара обнуляем все счетчики и переменные,
- при равенстве close[0] и high[0] увеличиваем счетчик "касание хай"
- при high[0] > prev_high увеличиваем счетчик "изменение хай" и запоминаем prev_high = high[0]
- аналогично для лоу.
Так и планировалось сделать. Думал что работа с ценой на уровне тика чем-то будет отличаться.
Когда открываешь тиковый график, то часто можно видеть колебания цены, которые не отражаются на основном графике. С чем связано не знаю, но происходит это регулярно на каждой валютной паре. Может ошибка отрисовки или зрительного восприятия, из-за вертикального сжатия графика.
Попробую так и сделать. Спасибо!
А какие у вас возникают проблемы? Где код с попыткой реализации? Нужно помочь или сделать за вас?
Индикатор получится достаточно простой:
- при появлении бара обнуляем все счетчики и переменные,
- при равенстве close[0] и high[0] увеличиваем счетчик "касание хай"
- при high[0] > prev_high увеличиваем счетчик "изменение хай" и запоминаем prev_high = high[0]
- аналогично для лоу.
Господа, вернулся к вопросу.
int OnCalculate(const int rates_total, const int prev_calculated, const datetime& time[], const double& open[], const double& high[], const double& low[], const double& close[], const long& tick_volume[], const long& volume[], const int& spread[]) { int check_high, check_low; int change_high, change_low; double prev_high, prev_low; check_high = 0; check_low = 0; prev_high = Open[0]; prev_low = Open[0]; //Print("Ticks: ", tick_volume[0]); if (Close[0] == High[0]) check_high++; if (Close[0] == Low[0]) check_low++; if (High[0] > prev_high) {prev_high = High[0]; change_high++;} if (Low[0] < prev_low) {prev_low = Low[0]; change_low++;} Print("High checked: ", check_high, " *** changed: ", change_high); Print("Low checked: ", check_low, " *** changed: ", change_low); //---- конец return(0); }
Статья появлении бара написана для MQL5. Статья хорошая, прочел. У меня задача решается для MQL4.
Идентификацию появления нового бара делать через OnCalculate? При очередном тике счетчики обнуляются, а должны при появлении нового бара.
Господа, вернулся к вопросу.
Статья появлении бара написана для MQL5. Статья хорошая, прочел. У меня задача решается для MQL4.
Идентификацию появления нового бара делать через OnCalculate? При очередном тике счетчики обнуляются, а должны при появлении нового бара.

Идентификацию появления нового бара делать через OnCalculate? При очередном тике счетчики обнуляются, а должны при появлении нового бара.
Переменные-счетчики нужно объявить на глобальном уровне, а в ините и при появлении нового бара - обнулять.
И почитайте про сравнение вещественных чисел. Даже на этом форуме было несколько тем.
Переменные-счетчики нужно объявить на глобальном уровне
Объявил
в ините - обнулил. А как обнулить при появлении нового бара? Где "оно" (появление нового бара) происходит исходя из кода? Я не могу этого понять:
int check_high, check_low; int change_high, change_low; double prev_high, prev_low; int init() { IndicatorBuffers(1); SetIndexBuffer(0,operation); check_high = 0; change_high = 0; check_low = 0; change_low = 0; prev_high = High[0]; prev_low = Low[0]; return(0); } int OnCalculate(const int rates_total, const int prev_calculated, const datetime& time[], const double& open[], const double& high[], const double& low[], const double& close[], const long& tick_volume[], const long& volume[], const int& spread[]) { if (Close[0] == high[0]) check_high++; if (Close[0] == low[0]) check_low++; if (high[0] > prev_high) {prev_high = high[0]; change_high++;} if (low[0] < prev_low) {prev_low = low[0]; change_low++;} Print("High checked: ", check_high, " *** changed: ", change_high); Print("Low checked: ", check_low, " *** changed: ", change_low); //---- конец return(rates_total); }

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Ни разу не работал с тиками. Сейчас назрела необходимость. Прошу помочь.
Нужно не для каждого бара на графике (как обычно строятся индикаторы), а только для текущего, который формируется в н.в. вывести информацию на экран графика (средствами Comment) следующую информацию:
1. Сколько раз цена Bid равнялась с High/Low
2. Сколько раз изменяла High/Low
Как это сделать? Может кто пример индюка своего скинет, работающего на тиках с ценами?