Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Добавляй наш канал в друзья и следи за новостями!
Igor Somov
424
Igor Somov 2014.06.04 19:25 
Ребят, кто подскажет - можно ли задать поиск пересечения с ЛЮБОЙ линией, в части названия которой содержится определенный элемент?

(То есть если на графике - куча линий с однотипными названиями "Line 1.2340" , "Line 1.2350" и т.д. )

Можно ли с помошью функции ObjectGetValueByShift( " ", i+1);

задать поиск пересечения цены с ЛЮБОЙ подвернувшейся линией, содержащей слово "Line " - независимо от того, какие еще циферки есть в ее названии ?
TarasBY
1744
TarasBY 2014.06.04 19:50  
В цикле перебираете все объекты на нужном графике нужного типа (ObjectsTotal()). И ищете нужные объекты по префиксу ("Line") в имени объекта посредством StringFind().
Igor Somov
424
Igor Somov 2014.06.04 20:25  

К сожалению циклы и многое другое для меня -высшая математика (

А можно написать это согласно конкретного примера выше (с лииями "Line xxx" ) ?

Igor Somov
424
Igor Somov 2014.06.04 20:58  

Или, если это проще - как конкретно выглядит кусок кода, в котором ищется пересечение телом свечи КРУГЛОГО уровня .

 

т.е.          open_1 < RoundLevel  && close_1 >   RoundLevel

 

(Где   RoundLevel - уровень, кратный 100 и 50) ?

TarasBY
1744
TarasBY 2014.06.05 09:51  
Igogo:

... ищется пересечение телом свечи КРУГЛОГО уровня .

Чьим телом? :)

Задачу формулируете не полностью и туманно.

Из того, что есть, предполагается перебор свечей на каком-то участке. Что вы хотите получить? Скрипт, советник, индикатор? От этого зависит решение, чтобы не производить перебор на каждом тике.

Термин "свеча КРУГЛОГО уровня" должен выполнять это условие:

Open[i] < RoundLevel && Close[i] > RoundLevel

правильно я понял? Не вижу смысла привязывать поиск данных свечей с объектами. Поясните смысл? Нашли нужную свечу - можно узнать имя, пересекающего его объекта.

P.S. Прежде чем писать код, нужно чётко сформулировать: что имеем и что хотим получит на Выходе. И только потом перебираем возможные варианты "как этого добиться".

rov_kvn
10
rov_kvn 2014.06.05 10:04  
        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);
                }
        }

Это по первому вопросу.

Igor Somov
424
Igor Somov 2014.06.05 13:46  
TarasBY:

 

 Open[i] < RoundLevel && Close[i] > RoundLevel

...правильно я понял? Не вижу смысла привязывать поиск данных свечей с объектами. 


Абсолютно правильно. В данном случае не надо привязывать к объектам. Код нужен для индикатор, расставляющего стрелки при пересечении телом свечи ( что находится между Open и Close) любого круглого уровня. То есть любого уровня, оканчивающегося на 00.
Dmitry Fedoseev
41217
Dmitry Fedoseev 2014.06.06 06:05  
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) {
    //... момент истины:)

}
Примерно так.
TarasBY
1744
TarasBY 2014.06.06 10:48  

Сделал тестовый скрипт. Для наглядности можно нарисовать сетку из "круглых" уровней.

P.S. Чтобы скрипт нарисовал стрелочки, нужно настройку:

input bool ClearArrow = False;
Эта настройка при обратном значении позволяет удалить все нарисованные стрелочки.
Файлы:
Igor Somov
424
Igor Somov 2014.06.06 16:08  
Большущее спасибо, ребята!
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий