Подскажите пожалуйста, как в MQL4 можно добиться от OrdersTotal(), чтобы она возвращала количество всех ордеров, а не тока тех, которые открыты?
В MQL II это было как бы само собой. А здеся приходится изголяться...
//-------------
int total, cnt = 0;
bool b = true;
while(b=true)
{
b = OrderSelect(cnt, ... );
cnt++;
}
total = cnt - 2;
// цикл заканчивается, када компилятор не находит очередного ордера, и переменной total присваивается
// последнее значение cnt при котором ордер-таки был.
//-------------
Может имеется какой-то неизвестный мне параметр OrdersTotal(), о котором я просто не знаю?
//-------------
int total, cnt = 0;
bool b = true;
while(b=true)
{
b = OrderSelect(cnt, ... );
cnt++;
}
total = cnt - 2;
// цикл заканчивается, када компилятор не находит очередного ордера, и переменной total присваивается
// последнее значение cnt при котором ордер-таки был.
//-------------
Может имеется какой-то неизвестный мне параметр OrdersTotal(), о котором я просто не знаю?
Неизвестных Вам параметров функции OrdersTotal() нет.
Для подсчета количества всех ордеров нужно использовать также
функцию HistoryTotal( ) .
int HistoryTotal( )
Возвращает количество закрытых позиций и удаленных ордеров в истории текущего счета, загруженной в клиентском терминале. Размер списка истории зависит от текущих настроек вкладки "История счета" терминала.
int OrdersTotal( )
Возвращает общее количество открытых и отложенных ордеров.
Возвращает общее количество открытых и отложенных ордеров.
В MQL II это было как бы само собой. А здеся приходится изголяться...
//-------------
int total, cnt = 0;
bool b = true;
while(b=true)
{
b = OrderSelect(cnt, ... );
cnt++;
}
total = cnt - 2;
// цикл заканчивается, када компилятор не находит очередного ордера, и переменной total присваивается
// последнее значение cnt при котором ордер-таки был.
//-------------
Может имеется какой-то неизвестный мне параметр OrdersTotal(), о котором я просто не знаю?
//-------------
int total, cnt = 0;
bool b = true;
while(b=true)
{
b = OrderSelect(cnt, ... );
cnt++;
}
total = cnt - 2;
// цикл заканчивается, када компилятор не находит очередного ордера, и переменной total присваивается
// последнее значение cnt при котором ордер-таки был.
//-------------
Может имеется какой-то неизвестный мне параметр OrdersTotal(), о котором я просто не знаю?
Неизвестных Вам параметров функции OrdersTotal() нет.
Для подсчета количества всех ордеров нужно использовать также
функцию HistoryTotal( ) .
int HistoryTotal( )
Возвращает количество закрытых позиций и удаленных ордеров в истории текущего счета, загруженной в клиентском терминале. Размер списка истории зависит от текущих настроек вкладки "История счета" терминала.
int OrdersTotal( )
Возвращает общее количество открытых и отложенных ордеров.
Возвращает общее количество открытых и отложенных ордеров.
Правда?! Это оч-чень странно. Пойду проверять.
Здравствуйте! А как найти общее количество только открытых ордеров не отложенных?
barudkinarseniy:
Здравствуйте! А как найти общее количество только открытых ордеров не отложенных?
Перебором в цикле с фильтром по типу ордеров.
Здравствуйте! А как найти общее количество только открытых ордеров не отложенных?
Здравствуйте!
Хочу чтобы советник открывал один ордер на каждой валюте куда он помещён.
Весь мозг сломал , уже недели 2 наверное((.
Сейчас прописано вот это:
total=OrdersTotal();
if(total<1)
// разрешает открытие одного ордера , другой конечно же не откроет пока не произойдёт закрытие //
Может есть функция типа //на данной валютной паре открыто n-ордеров//
// количество ордеров на текущем символе int nCurrentSymbolOrders = 0; // перебираем все открытые и выставленые ордера и ищем среди них ордер, выставленный (открытый) на текущем инструменте // если таковой найдётся - увеличиваем счётчик ордеров текущего символа // при необходимости можно добавить проверку на мэджик, тип и т.д. for(int i = 0; i < OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS) == true) { if(OrderSymbol() == Symbol()) nCurrentSymbolOrders++; } } // если на текущем инструменте ещё нет ордеров - открываем if(nCurrentSymbolOrders == 0) // открываем ордер
Sergei Vladimirov:
Спосибо!!! вроде сошлошь.
Но до понедельника ждать буду))).
Или можно сразу это проверить?
Sergei Vladimirov:
Главное коротко.
На других форумах такой код написали(блин не разобрался я)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
//-------------
int total, cnt = 0;
bool b = true;
while(b=true)
{
b = OrderSelect(cnt, ... );
cnt++;
}
total = cnt - 2;
// цикл заканчивается, када компилятор не находит очередного ордера, и переменной total присваивается
// последнее значение cnt при котором ордер-таки был.
//-------------
Может имеется какой-то неизвестный мне параметр OrdersTotal(), о котором я просто не знаю?