Ошибки, баги, вопросы - страница 733

 
сейчас проверил- еще и другие звуковые события не работают.
 

Наблюдаю странную картину в работе методов для открытия позиции в классе CTrade (PositionOpen,Buy,Sell) - советник реально открывает позицию (я ее вижу в терминале), а эти методы возвращают false, _LastError=4756 (Не удалось отправить торговый запрос). При этом CTrade.ResultRetcode()=10008 (Ордер размещен). 

Я что-то пропустил в работе серверов Alpari в эти дни или это баг? 

 
blef:

сейчас проверил- еще и другие звуковые события не работают.

А звуки в терминале включены?

 
да-включены,то же самое происходит и на сервере ROBOFOREX-а.
 
сейчас все звуковые события заработали ==> на обоих терминалах MQ   и  ROBOFOREX.
 

Объясните кто понимает что происходит? создаю советник:

void OnTrade()
  {
//---
   if(OrdersTotal()!=0)
     {
      OrderSelect(OrderGetTicket(0));
      Print("Есть ордера OrdersTotal()=",OrdersTotal()," ",
            EnumToString((ENUM_ORDER_STATE)OrderGetInteger(ORDER_STATE))
            );
     }
   else
     {
      OrderSelect(OrderGetTicket(0));
      Print("Нет ордеров OrdersTotal()=",OrdersTotal()," ",
            EnumToString((ENUM_ORDER_STATE)OrderGetInteger(ORDER_STATE))
            );
     }
  }

Запускаю советник на чарте, открываю вручную позицию и получаю в принтах:

2012.05.02 16:27:10     Template Trades (EURUSD,M15)    Нет ордеров OrdersTotal()=0 ORDER_STATE_STARTED
2012.05.02 16:27:10     Template Trades (EURUSD,M15)    Нет ордеров OrdersTotal()=0 ORDER_STATE_STARTED
2012.05.02 16:27:10     Template Trades (EURUSD,M15)    Нет ордеров OrdersTotal()=0 ORDER_STATE_STARTED

Как такое возможно ?, что приходит событие традес а ордеров нет, но у этих "ордеров нет" тип started причём всегда.

Приходят мысли что вся эта хрень просто не работает.

 
А вы проверяйте результат выполнения
OrderSelect(OrderGetTicket(0));

Какой смысл запрашивать состояние несуществующего ордера? И что вернет в таком случае вторая форма?

bool  OrderGetInteger(
   ENUM_ORDER_PROPERTY_INTEGER  property_id, // идентификатор свойства
   long&                long_var          // сюда примем значение свойства
   );
 
Rosh:

А вы проверяйте результат выполнения

Какой смысл запрашивать состояние несуществующего ордера? И что вернет в таком случае вторая форма?

Так и знал что вы пойдёте по этому пути разбора кода.

А почему вас не волнует вопрос что ордер есть, раз сработало событие традес (то хоть одно из них должно быть по установке ордера), а OrdersTotal() говорит что ордеров нет?

 
Urain:

Так и знал что вы пойдёте по этому пути разбора кода.

А почему вас не волнует вопрос что ордер есть, раз сработало событие традес (то хоть одно из них должно быть по установке ордера), а OrdersTotal() говорит что ордеров нет?

Может PositionTotal() нужно?
 

Вот такую ошибку выдало при подключении классов

 

Серебро закрыло нормально, а золото нет.

Если проблема в проскальзывании, то не подскажите как его задавать?
if (myposition.Select(_Symbol))
{
 // закрыть открытую позицию по этому символу
 // величина проскальзывания была установлена ранее 
 mytrade.PositionClose(_Symbol);
}
Причина обращения: