закрытие по несуществующей цене , возможные причины?

 

столкнулся с глюком причину которого не могу понять.

есть идеи? что это и как с этим бороться?

функция клосе использует только фактические цены закрытия полученные запросом маркет инфо

.

void AllClose(){
 for(int i=OrdersTotal()-1;i>=0;i--){
 if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
 if(OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS)),10,Black);
 if(OrderType()==OP_SELL)OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),10,Black);
 }}}

 
а проблема то в чем?
 
void AllClose(){
 for(int i=OrdersTotal()-1;i>=0;i--){
 if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
 if(OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),
NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),
MarketInfo(OrderSymbol(),MODE_DIGITS)),10,Black);
else
 if(OrderType()==OP_SELL)OrderClose(OrderTicket(),OrderLots(),
NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),
MarketInfo(OrderSymbol(),MODE_DIGITS)),10,Black);
 }}}

чтоб удобнее читать

ордер закрывается по текущей цене, которая есть в момент подачи запроса.

можешь еще перед запросом делать так

RefreshRates();
 
Vladon:

чтоб удобнее читать

ордер закрывается по текущей цене, которая есть в момент подачи запроса.

можешь еще перед запросом делать так

RefreshRates() перед запросом - лишнее. Прямо в запросе считываются самые последние данные из MarketInfo(). Вот во время обработки кода возврата торгового сервера, если требуется ожидание, то перед повторным запросом нужно выполнить RefreshRates(), да и то... я не уверен, что в данном случае оно надо - прямо в торговом запросе берутся свежие данные.

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

 
panelektrik:

столкнулся с глюком причину которого не могу понять.

есть идеи? что это и как с этим бороться?

функция клосе использует только фактические цены закрытия полученные запросом маркет инфо

.

В чём глюк-то вы видите?
 
artmedia70:
В чём глюк-то вы видите?


Насколько я понял, он не видит на графике цену, по которой была закрыта выделенная на скриншоте позиция. Но привязки ко времени нет (хотяб по GMT), названия ДЦ тоже, так что ищем черную кошку в темноте.


Хотя цены такой сегодня вообще не было.

 
artmedia70:
В чём глюк-то вы видите?


поясню. глюк в том что фактическое закрытие происходит по левой цене.

только что удалил все ордера. отключил сову. перезагрузил мт4. открываю ордера руками и опа ордера опять по левой цене

 
panelektrik:


поясню. глюк в том что фактические закрытие происходит по левой цене.

только что удалил все ордера. отключил сову. перезагрузил мт4. открываю ордера руками и опа ордера опять по левой цене

А пример "левой" цены можно?
 
panelektrik:


поясню. глюк в том что фактические закрытие происходит по левой цене.

только что удалил все ордера. отключил сову. перезагрузил мт4. открываю ордера руками и опа ордера опять по левой цене

Бегите с этого ДЦ, есть много других.
 

получается что котиры те что видим на графике идут а котиры для торговых операций заклинили

 
evillive:

Насколько я понял, он не видит на графике цену, по которой была закрыта выделенная на скриншоте позиция. Но привязки ко времени нет (хотяб по GMT), названия ДЦ тоже, так что ищем черную кошку в темноте.


Хотя цены такой сегодня вообще не было.


а действительно, :-) там же баров нет.
Причина обращения: