К сожалению циклы и многое другое для меня -высшая математика (
А можно написать это согласно конкретного примера выше (с лииями "Line xxx" ) ?
Или, если это проще - как конкретно выглядит кусок кода, в котором ищется пересечение телом свечи КРУГЛОГО уровня .
т.е. open_1 < RoundLevel && close_1 > RoundLevel
(Где RoundLevel - уровень, кратный 100 и 50) ?
... ищется пересечение телом свечи КРУГЛОГО уровня .
Чьим телом? :)
Задачу формулируете не полностью и туманно.
Из того, что есть, предполагается перебор свечей на каком-то участке. Что вы хотите получить? Скрипт, советник, индикатор? От этого зависит решение, чтобы не производить перебор на каждом тике.
Термин "свеча КРУГЛОГО уровня" должен выполнять это условие:
Open[i] < RoundLevel && Close[i] > RoundLevel
правильно я понял? Не вижу смысла привязывать поиск данных свечей с объектами. Поясните смысл? Нашли нужную свечу - можно узнать имя, пересекающего его объекта.
P.S. Прежде чем писать код, нужно чётко сформулировать: что имеем и что хотим получит на Выходе. И только потом перебираем возможные варианты "как этого добиться".
int ot=ObjectsTotal(); for(int i=0; i<ot;i++) { string name=ObjectName(i); if(StringFind(name,"Line")>=0) { double price=ObjectGetValueByShift(name, i+1); } }
Это по первому вопросу.
Open[i] < RoundLevel && Close[i] > RoundLevel
...правильно я понял? Не вижу смысла привязывать поиск данных свечей с объектами.
Абсолютно правильно. В данном случае не надо привязывать к объектам. Код нужен для индикатор, расставляющего стрелки при пересечении телом свечи ( что находится между Open и Close) любого круглого уровня. То есть любого уровня, оканчивающегося на 00.
double d=Point*100; double mx=MathMax(Close[i],Open[i]); double mn=MathMin(Close[i],Open[i]); double lev=MathFloor(mx/d)*d; if(mx>lev && mn<lev) { //... момент истины:) }Примерно так.
Сделал тестовый скрипт. Для наглядности можно нарисовать сетку из "круглых" уровней.
P.S. Чтобы скрипт нарисовал стрелочки, нужно настройку:
input bool ClearArrow = False;Эта настройка при обратном значении позволяет удалить все нарисованные стрелочки.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
(То есть если на графике - куча линий с однотипными названиями "Line 1.2340" , "Line 1.2350" и т.д. )
Можно ли с помошью функции ObjectGetValueByShift( " ", i+1);
задать поиск пересечения цены с ЛЮБОЙ подвернувшейся линией, содержащей слово "Line " - независимо от того, какие еще циферки есть в ее названии ?