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

 
forexman77:

Нормализую лот так:

пробовал еще вместо Digits просто 2 поставить.

Объем не так приводится к корректному, а вот так:

double VolumeCast(double volume, double volumeMin, double volumeMax, double volumeStep)
{
   if (volumeStep == 0.0)
      return volumeMin;

   return (MathMin(MathMax(MathFloor(volume / volumeStep) * volumeStep, volumeMin), volumeMax));
}

Ошибка точно 131.

После OrderModify и получения ошибки распечатайте: тикет ордера, тип ордера, имеющуюся цену открытия, новую цену открытия, время экспирации и текущее время.

 
Ihor Herasko:

Объем не так приводится к корректному, а вот так:

После OrderModify и получения ошибки распечатайте: тикет ордера, тип ордера, имеющуюся цену открытия, новую цену открытия, время экспирации и текущее время.


double volume_=0.01;
double volumeMin_=MarketInfo(Symb,MODE_MINLOT); 
double volumeMax_=MarketInfo(Symb,MODE_MAXLOT); 
double volumeStep_=MarketInfo(Symb,MODE_LOTSTEP);
double lot=VolumeCast(volume_,volumeMin_,volumeMax_,volumeStep_);
*********************************************
Ticket=OrderSend(Symb,OP_SELLLIMIT,lot,price,20,0,0,NULL,0,tf,clrGreen);

*********************************************
double VolumeCast(double volume, double volumeMin, double volumeMax, double volumeStep)
{
   if (volumeStep == 0.0)
      return volumeMin;

   return (MathMin(MathMax(MathFloor(volume / volumeStep) * volumeStep, volumeMin), volumeMax));


На всякий случай и так попробовал:

double lot=NormalizeDouble((VolumeCast(volume_,volumeMin_,volumeMax_,volumeStep_)),2);
 

И еще, когда ордер превращается позицию, то тейки и стоп изменяются.

 
forexman77:

И еще, когда ордер превращается позицию, то тейки и стоп изменяются.


Попробуйте volume_=0.1

 
khorosh:

Попробуйте volume_=0.1


Угу уже пробовал и 0.1 и 1.00, в самом начале.

 
forexman77:

На всякий случай и так попробовал:


Очень странно. Ума не приложу, причем объем к этой операции? Действительно, что-то не то возвращает сервер.

А вручную подобная модификация происходит? То есть если 9.531 изменить на 9.53081.

P. S. Попробовал на Alpari. Если установить ордер по такой цене, то получаем ошибку "Нет цены" (то есть суть ошибки тоже странная). В данном случае причиной ошибки является тот факт, что цена ордера располагается в середине спреда. Если установить за пределы спреда, то все нормально. Дальнейшая модификация тоже проходит.

 
Ihor Herasko:

Очень странно. Ума не приложу, причем объем к этой операции? А вручную подобная модификация происходит? То есть если 9.531 изменить на 9.53081.


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

На другом ДЦ пробовал все нормально. Может у них там какие-то ограничения стоят?

 

Надо всего лишь написать название торгового сервера и символ, и проблема будет решена в кратчайшие сроки, потому как каждый сам сможет попробовать.

А пока складывается ощущение, что задача не найти решение, а отвечать да/нет.

 
fxsaber:

Надо всего лишь написать название торгового сервера и символ и проблема будет решена в кратчайшие сроки, потому как каждый сам сможет попробовать.

А пока складывается ощущение, что задача не найти решение, а отвечать да/нет.


Ну, так банят же за упоминание брокеров, а мне ответ нужен, есть ли в этой вселенной вообще рыба или одни миражи.

Да х. с ним. FXOpen-ESN Demo Server  пара EURSEK.

 
forexman77:

Ну, так банят же за упоминание брокеров. Да х. с ним. Форекс опен EURSEK.

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

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