Что нужно исправить и усовершенствовать в коде?

 
Описываю ситуацию.

Написал советник для работы на нескольких валютных парах. Количество пар задаётся параметром AmountOfSymbols. Я ставил 4. На одной валютной паре одновременно могут быть открыты только один ордер Buy и только один ордер Sell.

Ордер открывается с нулевыми лосями и профитами, т.к. мой брокер не поддерживает открытие со сразу заданными. Закрытие ордеров осуществляется с помощью Лося или трейлинга.

Сначала работа эксперта меня устраивала, но потом он некорректно обработал одну из позиций (открыл, но не поставил лося). При этом все другие позиции открывались и модифицировались (установка лосей) корректно и сразу же .

Собственно чего хотелось бы:

1. Чтобы эксперт открывал, но не в коем случае не оставлял ордера с нулевым лосём. Даже если ордера открыты руками на этой валютной паре, он должен поставить лося.

2. Чтобы советник открывал только один ордер на свече, но это должно быть реализовано не через время, а через цену. Может как-то так:

   ...if(st!=Open[0])
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,slippage,0,0,"",0,0,Green);
         st=Open[0]   ...
В общем советник в аттаче. Жду ваших советов.

Всем заранее спасибо!
Файлы:
july20.mq4  6 kb
 
Да и ещё насчёт лосей. В их величине ошибки нет. Все они выше STOPLEVEL.
 
Neelan:
Да и ещё насчёт лосей. В их величине ошибки нет. Все они выше STOPLEVEL.

"Что с возу упало, то не вырубишь топором!"
Причина обращения: