При открытии ордеров надо их помечать, что они относятся к одной паре.
После открытия первого ордера известен его тикет, допустим 12345, создаем глобальную переменную с именем _12345_set2=1.
Для открытия второго ордера отдельный цикл. Перебираем ордера, если у ордера есть глобальная переменная ..._set2, значит открываем второй ордер, а эту глобальную переменную удаляем.
После открытия второго ордера у нас известны оба тикета, допустим второй тикет 67890. Теперь создаем две глобальных переменных: _12345_pair_of=67890 и _67890_pair_of=12345. После этого, зная тикет одного ордера, всегда под рукой тикет второго ордера.
---
К глобальным переменным еще желательно добавить префиксы, чтобы отделить переменные создаваемые при работе в тестере от переменных создаваемых при работе на счете. В лучшем случае перфикс состоит из имени советника, символа, магика и буквы "t" если работа в тестере
Долго я думал, и написал функцию, на тестере работает, но сегодня понял, что протупил, потому что решил, что цена (или к примеру время) открытия двух ордеров будит одинаковым.
При открытии ордеров надо их помечать, что они относятся к одной паре.
После открытия первого ордера известен его тикет, допустим 12345, создаем глобальную переменную с именем _12345_set2=1.
Для открытия второго ордера отдельный цикл. Перебираем ордера, если у ордера есть глобальная переменная ..._set2, значит открываем второй ордер, а эту глобальную переменную удаляем.
После открытия второго ордера у нас известны оба тикета, допустим второй тикет 67890. Теперь создаем две глобальных переменных: _12345_pair_of=67890 и _67890_pair_of=12345. После этого, зная тикет одного ордера, всегда под рукой тикет второго ордера.
---
К глобальным переменным еще желательно добавить префиксы, чтобы отделить переменные создаваемые при работе в тестере от переменных создаваемых при работе на счете. В лучшем случае перфикс состоит из имени советника, символа, магика и буквы "t" если работа в тестере
не совсем понял... как узнать какой тикет относиться к первому ордеру, какой к второму ?
а как вы открываете эти два ордера?
ticket1 = -1; ticket2 = -1;и далее анализируйте их уже по тикетам с помощью функции
OrderSelect(tiket,SELECT_BY_TICKET)и вставляем код с помощью кнопочки SRC вменю сообщения
вынесите эти переменные на глобальный уровень и далее анализируйте их уже по тикетам с помощью функции и вставляем код с помощью кнопочки SRC вменю сообщения
не совсем понял... как узнать какой тикет относиться к первому ордеру, какой к второму ?
Добавьте ее одну глобалку, например _12345_is1=1 (создавать после открытия первого ордера)
Или _12345_num=1, _67890_num=2
В данном случае, действительно алгоритм немного сложноватый получиться, как вариант ограничить новое открытие ордеров пока не отработают уже открытые, или же воспользоваться ООП и написать слежение в виде объекта класса, и при открытии новой пары ордеров создавать новый объект, а как только отработают объект удаляется. Благо теперь в четверке тоже можно писать код с помощью ООП.
Возможно Ваш вариант подойдет. Можно при открытие новой пари создавать объект класса и вызывать метод, который будет открывать эти позиции, в класе можно сделать две переменные с тикетами ордеров. Потом этот объект заносить в список, и при модификации брать цикл по списку и оттуда уже получать тикеты разных пар сделок
Возможно Ваш вариант подойдет. Можно при открытие новой пари создавать объект класса и вызывать метод, который будет открывать эти позиции, в класе можно сделать две переменные с тикетами ордеров. Потом этот объект заносить в список, и при модификации брать цикл по списку и оттуда уже получать тикеты разных пар сделок
Или это тоже не вариант ?

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Долго я думал, и написал функцию, на тестере работает, но сегодня понял, что протупил, потому что решил, что цена (или к примеру время) открытия двух ордеров будит одинаковым.