Скачать MetaTrader 5

Вопрос к разработчикам: Советник не закрывает ордера.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
В Маркете более 400 индикаторов. Попробуй любой из них!
bablokos
78
bablokos 2008.08.11 12:36 
Советник не закрывает ордера выдавая при этом код ошибки 0. Иногда закрытие ордера происходит после нескольких десятков попыток (между каждой попыткой вызывается Sleep(3000)). Иногда ордера не закрываются до перезагрузки терминала, после чего несколько часов советник работает корректно. Пожалуйста помогите понять в чём проблема.
Nazariy Stapyak
1743
Nazariy Stapyak 2008.08.11 13:48  

А что за советник? Если сам писал, напиши здесь хотябы функцию для закрытия ордеров (ну или часть советника, которая отвечает за закритыя ордеров).

Dmitry Fedoseev
42921
Dmitry Fedoseev 2008.08.11 13:53  
Для начала стоит попробовать терминал переустановить. Если не поможет, тогда ошибку искать.
bablokos
78
bablokos 2008.08.11 15:34  
WWer писал (а) >>

А что за советник? Если сам писал, напиши здесь хотябы функцию для закрытия ордеров (ну или часть советника, которая отвечает за закритыя ордеров).

Функция самая простая. Вызывается из советника пока не вернёт true:

bool Close(int ticket)

{

bool isClosed = false;
int try = 0;

isClosed = OrderClose(ticket, OrderLots(), OrderClosePrice(), 3, 0);

while(!isClosed) {
Sleep(3000);
try++;
isClosed = OrderClose(ticket, OrderLots(), OrderClosePrice(), 3, 0);

if(try > 3) break;
}

if(!isClosed) Print("Order ", ticket, " was NOT closed due to error:", GetLastError());

return (isClosed);

}

Rashid Umarov
Админ
11836
Rashid Umarov 2008.08.11 15:39  
bablokos писал (а) >>

Функция самая простая. Вызывается из советника пока не вернёт true:


Знакомая тема. Есть сильное подозрение, что данная функция пытается до победного конца закрыть отложенный ордер. Или ордер, который уже закрыт.

bablokos
78
bablokos 2008.08.11 15:43  
Rosh писал (а) >>

Знакомая тема. Есть сильное подозрение, что данная функция пытается до победного конца закрыть отложенный ордер.

Совсем не в тему. Мой советник даже понятия не имеет об отложенных ордерах. Все закрываемые ордера были до этого открыты советником.

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

Ещё раз подчеркну, что после перезагрузки терминала, ордер будет закрыт с первой попытки.

Rashid Umarov
Админ
11836
Rashid Umarov 2008.08.11 15:58  
bablokos писал (а) >>

Ещё раз подчеркну, что после перезагрузки терминала, ордер будет закрыт с первой попытки.

Попробуйте вставить анализ на предмет занятости торгового потока. IsTradeContextBusy

Alexander
2441
Alexander 2008.08.11 17:02  
OrderClosePrice() - что это?
Rashid Umarov
Админ
11836
Rashid Umarov 2008.08.11 17:07  
Roger писал (а) >>
OrderClosePrice() - что это?

Кстати, только что к своему стыду обратил внимание - а где выбор необходимого ордера через OrderSelect(). Насколько корректно в данной функции использовать OrderClosePrice() без вызова OrderSelect(). Где гарантия, что использование OrderClosePrice() корректно?

Ihor Herasko
9064
Ihor Herasko 2008.08.11 17:19  
А я вообще не понимаю, как можно закрывать ордер по цене закрытия OrderClosePrice(), которая будет иметь вменяемое значение только после закрытия позиции. До этого в ней будет просто 0. Здесь уж никакой слиппадж не спасет.
Alexander
4034
Alexander 2008.08.11 17:25  
Scriptong писал (а) >>
А я вообще не понимаю, как можно закрывать ордер по цене закрытия OrderClosePrice(), которая будет иметь вменяемое значение только после закрытия позиции. До этого в ней будет просто 0. Здесь уж никакой слиппадж не спасет.

Да уж...

По трейдерской традиции Buy-позиции закрывают по цене Bid,

Sell-позиции по Ask, а тут инновационный метод: по OrderClosePrtice() Круто!

123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий