Здравствуйте.

- www.mql5.com
Спасибо.
Пожалуйста поясните я кажется не понял. Я это в строке должен так написать?
if(ord.Symbol()==_Symbol&&COrderInfo::OrderType()==ORDER_TYPE_SELL_STOP)
Спасибо.
Пожалуйста поясните я кажется не понял. Я это в строке должен так написать?
if(ord.Symbol()==_Symbol&&COrderInfo::OrderType()==ORDER_TYPE_SELL_STOP)
if(ord.Symbol()==_Symbol&&ord.OrderType()==ORDER_TYPE_SELL_STOP)
if(ord.Symbol()==_Symbol&&ord.OrderType()==ORDER_TYPE_SELL_STOP)
К сожалению так не работает.
Когда прописываю ord.Type() появляется всплывающее окно вот скрин ...
Там указано, что возвращаемый тип будет int и это по моему не совпадает с типом указанным здесь
https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/corderinfo/corderinfoordertype
Я этим способом выбора ордера хотел воспользоваться, когда ознакомился со статьей
https://www.mql5.com/ru/articles/138
Там в таблице по разделу 1.4 стандартного класса COrderInfo в таблице приводится пример
myorder.Type() | Используется для получения типа ордера (ORDER_TYPE_BUY_STOP и т.п.). | if (myorder.Type() == ORDER_TYPE_BUY_LIMIT) { // это ордер Buy Limit order, и т.д. } |
... Но у меня не работает. Почему функция возвращает значение int, не ENUM_ORDER_TYPE

- www.mql5.com
А, понял.
Боюсь мы по прежнему не понимаем друг друга. Вот элементарный скрипт.
#include <Trade\OrderInfo.mqh>
COrderInfo ord; // Объект класса отложенных ордеров
void OnStart()
{
ulong ticket=0; // переменная для запоминания номера отложенного ордера
int total=OrdersTotal(); // получаем общее количество отложенных ордеров
if(total>0) // есть в наличии хотя бы один отложенный ордер
{
Alert("Вижу всего отложенных ордеров - ",total);
for(int i=0;i<total;i++) // Проверим все отложенные ордера
{
ticket=OrderGetTicket(i);
ord.Select(ticket);
if(ord.Type()==ORDER_TYPE_SELL_STOP) // Тип ордера sell-stop?
Alert("Ордер sell-stop тикет №",ticket);
else
Alert("Ордер тикет №",ticket," не sell-stop.");
}
}
else
{
Alert("Вообще не вижу отложенных ордеров."); // Нет отложенников вообще
}
}
Специально написал, скомпилировал. Выставил два отложенника разного типа и результат на скрине ...
Еще раз говорю if(ord.Type()==ORDER_TYPE_SELL_STOP) -не работает. Почему?

- www.mql5.com
RedFish:
Еще раз говорю if(ord.Type()==ORDER_TYPE_SELL_STOP) -не работает. Почему?
А я ещё раз говорю (последний): Потому что не:
if(ord.Type()==ORDER_TYPE_SELL_STOP)
а:
if(ord.OrderType()==ORDER_TYPE_SELL_STOP)
(последний)
Огромное спасибо!!! Извините за невнимательность и неуместную настойчивость. Не хотел злить.
Еще раз благодарю.
А, понял. Этой статье полтора года и она немного "отстала от жизни". Справка освежается регулярно.
Имя метода OrderType.
Текст и коды статьи Как использовать торговые классы Стандартной библиотеки при написании советника обновлены.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте.
Пытаюсь в эксперте использовать стандартный класс.
#include <Trade\OrderInfo.mqh>
COrderInfo ord; // Объект класса отложенных ордеров
.....
ulong ticket=0; // переменная для запоминания номера отложенного ордера
int total=OrdersTotal(); // получаем общее количество отложенных ордеров
if(total>0) // есть в наличии хотя бы один отложенный ордер
{
for(int i=0;i<total;i++) // Проверим все отложенные ордера
{
ticket=OrderGetTicket(i);
ord.Select(ticket);
if(ord.Symbol()==_Symbol&&ord.Type()==ORDER_TYPE_SELL_STOP) // Торговый инструмент и тип ордера совпадает?
.....
Пытаюсь "поймать" нужный мне ордер по двум критериям - символ и тип. Но по типу отказывается работать. Когда пишу код всплывающее окно говорит, что на выходе будет int при вызове ord.Type(), а в документации написано ENUM_ORDER_TYPE.
Получается, что надо сравнивать с числом (типа int 1,2 ...) ? А где можно увидеть какой тип ордера какому числу int сопоставляется? В МТ4 помню была информация, а в этом справочнике нет.
Заранее благодарю.