Нужна функция закрытия "своих" ордеров советником по валютной паре.

 

 в разных окнах по одной и той же валютной паре работает несколько советников, с разными стратегиями -  каждый из них допускает наличие в торговле только одного рыночного ордера либо бай либо селл. НР: при поступлении сигнала бай функция закрытия ордеров каждого из них сначала закрывает циклом все селл (по критерию от макс лот к мин лот), далее функция открытия ордеров открывает бай. Хотелось бы, чтобы они не вмешивались в работу друг друга, т.е. закрывали только "свой" ранее открытый ордер (по критерию, например, magicnumber). Каждый советник имеет "свой" magicnumber. Т.е. нужен либо алгоритм, либо функция, либо "иной" критерий...  

Файлы:
close_all.mqh  3 kb
 

а класс вариант не работает?


if(OrdersTotal() > 0)
{
for(ord = 0; ord < OrdersTotal(); ord++)
{
OrderSelect(ord,SELECT_BY_POS,MODE_TRADES);
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == magic)

{

if(OrderType() == OP_BUY)
{

if(Условие закрытия)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,NONE);


magic - внешняя переменная, значение сохраняется при открытии ордера

Причина обращения: