Скачать MetaTrader 5

Глюк MQL?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Опубликуй программу в Cobe Base. Миллионы трейдеров ее увидят!
Forex Trader
114255
Forex Trader 2005.11.22 21:01 
Либо я чего-то не понимаю, либо всё-таки приведённый ниже кусок кода зависать не должен:
         while(OrdersTotal()> 0)
         {
            OrderSelect(0, SELECT_BY_POS);
            if(OrderType() == OP_BUY)
            {
               OrderClose(OrderTicket(), OrderLots(), Bid, 3);
            } else {
               OrderClose(OrderTicket(), OrderLots(), Ask, 3);
            }
         }



На этом месте эксперт виснет наглухо. А почему? Разве после успешного закрытия ордера, функция OrdersTotal() не меняет значение? Должна вроде... Ордер выбираю всегда первый, т.к. по-любому доберусь до конца, закрывая их с начала... Вот. Что скажете?

Forex Trader
114255
Forex Trader 2005.11.22 21:08  
Что скажете?

Что и всегда. OrderClose посылает приказ о закрытии позиции брокеру, но не гарантирует закрытия.
Надо смотреть на рантайм ошибки.
MetaQuotes Software Corp.
Модератор
181068
MetaQuotes Software Corp. 2005.11.22 21:10  
Еще один скрипт-убийца.

Почитайте, пожалуйста, форум - все это многократно объяснялось:
1) все OrderSelect должны проверяться
2) где проверки на результат OrderClose? Запустите скрипт в выходные и навечно завесите код
3) где учет/проверка на устаревание цен? где RefreshRates?
4) вообще о брокере думали? что на его стороне будет?

Думаю, придется нам принудительно дисквалифицировать/отключать скрипты за такие попытки трейдов.
Forex Trader
114255
Forex Trader 2005.11.23 00:50  
Сей скрипт был максимально упрощён для более быстрого понимания - это раз. Запускался он только в тестере стратегий - это два (кстати его и вешал). В журнале тестера не было ни одной ошибки закрытия - это три... Вот.
MetaQuotes Software Corp.
Модератор
181068
MetaQuotes Software Corp. 2005.11.23 07:41  
Сей скрипт был максимально упрощён для более быстрого понимания - это раз. Запускался он только в тестере стратегий - это два (кстати его и вешал). В журнале тестера не было ни одной ошибки закрытия - это три... Вот.

5) если есть отложенный ордер, то 100% завис.

К сожалению, Вы в столь малом куске кода сделали массу фатальных ошибок.
Даже сложно придумать более худший код.

Необходимо писать максимально защищенный код, а не игнорировать проверки с подходом:
- мне повезет!
- реквота не дадут!
- на выходные не попаду!
- отложенных ордеров быть не может, я же только BUY и SELL делаю!
- вообще, все должно работать по моей схеме, а требования разработчиков не интересует!
- а на брокера мне вообще наплевать, меня не волнует частота запросов - пусть отрабатывает!
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий