GetLastError() возвращает 0

 
GetLastError() возвращает 0 во время открытия ордера и ордер не открываеться. В справке "ERR_NO_ERROR - 0 - Нет ошибки". Может я чего недопонимаю, но при "Нет ошибки" ордер должен бы открываться. Обьясните что не так!!!
 
Twister писал(а) >>
GetLastError() возвращает 0 во время открытия ордера и ордер не открываеться. В справке "ERR_NO_ERROR - 0 - Нет ошибки". Может я чего недопонимаю, но при "Нет ошибки" ордер должен бы открываться. Обьясните что не так!!!

Покажите код открытия, где открываете, счет, тестер?

 

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

А ещё как вариант - вы может сделали так:

if (GetLastError()>0) Print(GetLastError()) 

Если вы вызываете два раза подряд GetLastError. то у вас возникают непонятки.... функция GetLastError - только первый раз даёт значение

 

в принципе мне всеравно что там за ошибка, лишь бы ордер открыло. с ошибками я потом разбираться буду... но вот если без ошибки и ордер не открываеться, то это мягко говоря странно. исходник не выложу - секрет :) вот разве что кусочек:

  ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-stopLoss*Point,Ask+takeProfit*Point,"BuyOrder",0,0,Green);
  if( ticket == -1 ) //если возникла ошибка
  {
  Print("!!!ERROR: "+GetLastError());
 .....................

 
Twister писал(а) >>

в принципе мне всеравно что там за ошибка, лишь бы ордер открыло. с ошибками я потом разбираться буду... но вот если без ошибки и ордер не открываеться, то это мягко говоря странно. исходник не выложу - секрет :) вот разве что кусочек:

ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-stopLoss*Point,Ask+takeProfit*Point,"BuyOrder",0,0,Green);
if( ticket == -1 ) //если возникла ошибка
{
Print("!!!ERROR: "+GetLastError());
.....................

Да не надо нам Ваших секретов) Интересует происходит ли вообще отсылка ордера? Может не выполняется условие, как следствие не происходит выполнение OrderSend, а принт вообще из друго места печатается. Смотрите, дело Ваши, вряд ли советник не открывающий сделки шибко граален) Но мы здесь не экстрасенсы...

 
Figar0 >>:

Да не надо нам Ваших секретов) Интересует происходит ли вообще отсылка ордера? Может не выполняется условие, как следствие не происходит выполнение OrderSend, а принт вообще из друго места печатается. Смотрите, дело Ваши, вряд ли советник не открывающий сделки шибко граален) Но мы здесь не экстрасенсы...

:) после выполнения условия должен открываться ордер и проигрываться звуковой сигнал. так вот playsound() работает, а ордер не открываеться.

 
Figar0 >>:

Да не надо нам Ваших секретов) Интересует происходит ли вообще отсылка ордера? Может не выполняется условие, как следствие не происходит выполнение OrderSend, а принт вообще из друго места печатается. Смотрите, дело Ваши, вряд ли советник не открывающий сделки шибко граален) Но мы здесь не экстрасенсы...

Еще одна причина почему хранить ордеры в тикетах ЗЛО -- в вышеописанном случае ордер на самом деле ордер может открыться, ну и на тестере такого вряд ли воспроизведется.

ИМХО

 
TheXpert >>:

Еще одна причина почему хранить ордеры в тикетах ЗЛО -- в вышеописанном случае ордер на самом деле ордер может открыться, ну и на тестере такого вряд ли воспроизведется.

ИМХО

дело в том что это "наполовину" советник. я вручную задаю направление тренда, а уж даный советник выполняет открытие ордера в нужном направлении, когда условия на открытие выполняються. в тестере открывались ордера. а вот сегодня проверил на демосчету - вылезла ошибка, вернее ордер не открылся. рассуждать можно долго что да как. но вот как решить даную проблемму??? помогите!!!

P.S.: getlasterror() выдает ошибку 0 даже при первом вызове!

 
Twister писал(а) >>

даную проблемму??? помогите!!!

Как? Угададать? Проинтуичить? Кофейной гущи наварить? Карты раскинуть?)

Посмотрите, что в логах терминала при работе на демо? Есть там вообще отправка ордера? Попробуйте отсылку ордера без СЛ и ТП. Какой ДЦ?

 
Twister >>:

дело в том что это "наполовину" советник. я вручную задаю направление тренда, а уж даный советник выполняет открытие ордера в нужном направлении, когда условия на открытие выполняються. да, вы правы. в тестере открывались ордера. а вот сегодня проверил на демосчету - вылезла ошибка, вернее ордер не открылся. рассуждать можно долго что да как. но вот как решить даную проблемму??? помогите!!!

Да не решишь ее никак. Ордер отослан, ответа нету -- причина -- хз, может обрыв связи, может терминал загружен сильно.

Поэтому снимок аккаунта нужно делать тогда, когда это непосредственно нужно. Медленней, но надежно.

Не решает проблему полностью, но логических ошибок не будет точно. А на этот ордер можно забить -- он или открыт или нет, но это мы узнаем потом....

 
Figar0 >>:

Как? Угададать? Проинтуичить? Кофейной гущи наварить? Карты раскинуть?)

Посмотрите, что в логах терминала при работе на демо? Есть там вообще отправка ордера? Попробуйте отсылку ордера без СЛ и ТП. Какой ДЦ?

елки-палки!!! все дело было в лосе/профите. спасибо за помощь!!!

кстати, как прекратить работу советника? вызовом deinit()?

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