Помогите, кто знает!

 

В функции модификации не изменяется цена:

if(OrderOpenPrice()-Ask>Point*TralingOrders)
                 {
                  Alert(GetLastError());
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TralingOrders,OrderTakeProfit(),OrderExpiration(),Red);
                     
                   Alert(GetLastError());
                 }

Здесь лучше делать continue:

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;

И еще - не советую выбирать ордера OrderSelect'ом каждый раз, ваш главный цикл может работать не верно из-за этого.

 
А как их выбирать? И я исправил ошибку на которую указали, но все равно нес работает!
Файлы:
lockpopen.mq4  6 kb
 

Выбирать нужно в главном цикле, а в остальные функции просто передавать уже готовые параметры, например:

void TralOrderOtl( int ticket, int type, double op, double sl, double tp, datetime exp )

То есть внутри функции делать переинициализацию не имеет смысла, все нужные значения можно просто получить в виде формальных параметров.

Далее, что это за условия?

if(OrderOpenPrice()-Ask>2*Point*TralingOrders)

Это Аск должен быть выше цены на 2*TralingOrders пунктов, чтобы цена начала двигаться, а не цена открытия выше Аска. Пересмотрите внимательно условия исполнения модификаций.

if ( Ask - op - 2*TralingOrders*Point > -Point/2.0 ) { ...modify... }
Причина обращения: