При модификации ордера возникает ошибка 131 - страница 3

 
fxsaber:

Этот FXOpen-ECN Demo Server? Название торгового сервера напишите.


Поправил выше.

 
forexman77:

Поправил выше.

Ну вот сразу и проблема стала ясна

#property strict

void OnStart()
{
  const int Ticket = OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0);
  
  if (Ticket > 0)
    OrderModify(Ticket, Ask, MathMin(Bid, Ask - 100 * _Point), 0, 0);
}


MT4 не позволяет выставлять SL внутрь спреда.

 
fxsaber:

Ну вот сразу и проблема стала ясна


MT4 не позволяет выставлять SL внутрь спреда.


Стоп у меня далеко, потом вообще ноль стал ставить. Там же 131 выходит объем лота, хотя может тут не в лоте дело.

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

Можно вообще стоп и тейк не трогать ноли поставить, их можно потом двигать, когда ордер в позицию превратится.

Цену открытия нужно только модифицировать в отложенном ордере.

 
forexman77:

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

void OnStart()
{
  if (OrderSelect(OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - 1000 * _Point, 0, 0, 0), SELECT_BY_TICKET))
    OrderModify(OrderTicket(), OrderOpenPrice() - 2000 * _Point, OrderStopLoss(), OrderTakeProfit(), OrderExpiration());
}


Результат

2017.09.12 21:10:41.128 '120208814': pending order #2114114284 buy limit 1.00 EURSEK was modified -> price: 9.50939 sl: 0.00000 tp: 0.00000
2017.09.12 21:10:40.879 '120208814': modify pending order #2114114284 buy limit 1.00 EURSEK at 9.52939 sl: 0.00000 tp: 0.00000 -> price: 9.50939 sl: 0.00000 tp: 0.00000
2017.09.12 21:10:40.879 '120208814': order was opened : #2114114284 buy limit 1.00 EURSEK at 9.52939 sl: 0.00000 tp: 0.00000
2017.09.12 21:10:40.587 '120208814': pending order buy limit 1.00 EURSEK at 9.52939 sl: 0.00000 tp: 0.00000


Какой тип отложки?

 
fxsaber:


Результат


Какой тип отложки?


OP_SELLLIMIT

 
forexman77:

OP_SELLLIMIT

void OnStart()
{
  if (OrderSelect(OrderSend(_Symbol, OP_SELLLIMIT, 1, Bid + 100 * _Point, 0, 0, 0), SELECT_BY_TICKET))
    OrderModify(OrderTicket(), Bid +  200 * _Point, OrderStopLoss(), OrderTakeProfit(), OrderExpiration());
}


Все пашет

2017.09.12 21:18:09.120 '120208814': pending order #2114114944 sell limit 1.00 EURSEK was modified -> price: 9.53840 sl: 0.00000 tp: 0.00000
2017.09.12 21:18:08.824 '120208814': modify pending order #2114114944 sell limit 1.00 EURSEK at 9.53740 sl: 0.00000 tp: 0.00000 -> price: 9.53840 sl: 0.00000 tp: 0.00000
2017.09.12 21:18:08.824 '120208814': order was opened : #2114114944 sell limit 1.00 EURSEK at 9.53740 sl: 0.00000 tp: 0.00000
2017.09.12 21:18:08.564 '120208814': pending order sell limit 1.00 EURSEK at 9.53740 sl: 0.00000 tp: 0.00000


SellLimit в MT4 обязан выставляться не ниже текущего Bid.

 
forexman77:

С запасом новая цена. Выше поправил время экспирации, текущее убрал, чтобы не смущало, здесь на картинке текущее время и есть время экспирации.

Ну так это же ECN полноценный, поэтому экспирацию для лимитников через MT4-прокладку выставлять нельзя ни на одном символе.

 
fxsaber:


Все пашет


SellLimit в MT4 обязан выставляться не ниже текущего Bid.

bool res=OrderModify(Ticket_,Bid +  200 * _Point,0,0,Time[0]+100000,Magenta);
                  Print("res=",res);
                  if(!res)
                    {
                     Print("Ошибка модификации ордера. Код ошибки=",GetLastError());
                     Print("Ticket_=",Ticket_,"Tip_=",Tip_,"старая цена=",Price_,"новая цена =",price_,"время эксп.=",Time[0]+100000,"текущее время=",Time[0]);
                    }
 
fxsaber:

Ну так это же ECN полноценный, поэтому экспирацию для лимитников через MT4-прокладку выставлять нельзя ни на одном символе.


Вручную ставится.

Елки-палки поставил экспирацию ноль, стало модифицироваться(((()))))))

Два дня на эту билиберду с проверками потратил. 

Спасибо, что разрешили дилему.

А на другом ДЦ работает.