Leo59: Спасибо! Как я понимаю, к понятию "действующий ордер" относятся позиции BUY и/или SELL, а также установленные (принятые брокером) отложенные ордера. Если у меня открыты: позиции Long и Short, а также установлены Buy Limit и Sell Stop, то OrdersTotal() вернёт значение =4. Так?
Может быть открыта BUY-позиция и действующий BUY-ордер. Выше привел кодо-пример, но проще, наверное, на пальцах. Как идет срабатывания TP открытой позиции
Leo59: Всё уже давно принято, и прежде чем писать документацию, наверное не лишне будет почитать учебник Сергея Ковалёва (он встроен в MQL4):
Название ветки прочтите. Все думали, что речь именно о MQL5. Здесь на форуме есть соответствующий раздел для MQL4 и МТ4. Если бы задали вопрос туда, Вам бы ответили по другому.
Leo59: Всё уже давно принято, и прежде чем писать документацию, наверное не лишне будет почитать учебник Сергея Ковалёва (он встроен в MQL4):
Вот так может быть построен блок, в котором анализируются рыночные и отложенные ордера:
for (int i=1; i<=OrdersTotal(); i++) //Цикл по всем ордерам,.. { //отражённым в терминале if(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий { // Здесь должен выполняться .. // ..анализ характеристик ордеров } } //Конец тела цикла
В заголовке оператора цикла указано начальное значение i=1, а условием окончания цикла - выражение i<=OrdersTotal(). Функция OrdersTotal() возвращает общее количество рыночных и отложенных ордеров, т.е. тех ордеров, которые отражаются в Терминале на закладке Торговля. Поэтому в цикле будет столько итераций, сколько ордеров присутствует в торговле.
Пожалуйста вставляйте код правильно: Правильно вставляем код на форуме (я уже исправил вставленное Вами - и смотрите: Вы вставили просто текст, а теперь это КОД, с подсветкой синтаксиса).
Leo59: Всё уже давно принято, и прежде чем писать документацию, наверное не лишне будет почитать учебник Сергея Ковалёва (он встроен в MQL4):
Вот так может быть построен блок, в котором анализируются рыночные и отложенные ордера:
for (int i=1; i<=OrdersTotal(); i++) //Цикл по всем ордерам,.. { //отражённым в терминале if(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий { // Здесь должен выполняться .. // ..анализ характеристик ордеров } } //Конец тела цикла
В заголовке оператора цикла указано начальное значение i=1, а условием окончания цикла - выражение i<=OrdersTotal(). Функция OrdersTotal() возвращает общее количество рыночных и отложенных ордеров, т.е. тех ордеров, которые отражаются в Терминале на закладке Торговля. Поэтому в цикле будет столько итераций, сколько ордеров присутствует в торговле.
Мало того, что вы говорите про mql4 и показали код из mql4 (а ветка об особенностях и тонкостях программирования на mql5), так вы ещё и цикл неверно написали - с нуля нужно начинать, иначе всегда один ордер будете пропускать.
... МТ4, и в нём нет деления ордеров и позиций - в нём всё смешано воедино
тогда как в MQL5 OrdersTotal() вернёт количество отложенных ордеров. Таким образом в MQL5 всё систематизировано на более высоком уровне: котлеты отдельно, мухи отдельно.
Что касается торговых функций - есть различия. Выше уже сказали про MQL4:
тогда как в MQL5 OrdersTotal() вернёт количество отложенных ордеров. Таким образом в MQL5 всё систематизировано на более высоком уровне: котлеты отдельно, мухи отдельно.
Не следует путать между собой действующие отложенные ордера и позиции, которые также отображаются на вкладке "Торговля" в панели "Инструменты". Ордер – это распоряжение на проведение торговой операции, а позиция является результатом одной или нескольких сделок.
При "неттинговом" учете позиций (ACCOUNT_MARGIN_MODE_RETAIL_NETTING и ACCOUNT_MARGIN_MODE_EXCHANGE) по каждому символу в любой момент времени может быть открыта только одна позиция, которая является результатом одной или более сделок. Не следует путать между собой позиции и действующие отложенные ордера, которые также отображаются на вкладке "Торговля" в панели "Инструменты".
При независимом представлении позиций (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) по каждому символу одновременно может быть открыто несколько позиций.
PositionsTotal()
Возвращает количество открытых позиций.
int PositionsTotal();
Возвращаемое значение
Значение типа int.
Примечание
При "неттинговом" учете позиций (ACCOUNT_MARGIN_MODE_RETAIL_NETTING и ACCOUNT_MARGIN_MODE_EXCHANGE) по каждому символу в любой момент времени может быть открыта только одна позиция, которая является результатом одной или более сделок. Не следует путать между собой позиции и действующие отложенные ордера, которые также отображаются на вкладке "Торговля" в панели "Инструменты".
При независимом представлении позиций (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) по каждому символу одновременно может быть открыто несколько позиций.
Спасибо!
Как я понимаю, к понятию "действующий ордер" относятся позиции BUY и/или SELL, а также установленные (принятые брокером) отложенные ордера.
Если у меня открыты: позиции Long и Short, а также установлены Buy Limit и Sell Stop, то OrdersTotal() вернёт значение =4. Так?
Может быть открыта BUY-позиция и действующий BUY-ордер. Выше привел кодо-пример, но проще, наверное, на пальцах. Как идет срабатывания TP открытой позиции
Всё уже давно принято, и прежде чем писать документацию, наверное не лишне будет почитать учебник Сергея Ковалёва (он встроен в MQL4):
Всё уже давно принято, и прежде чем писать документацию, наверное не лишне будет почитать учебник Сергея Ковалёва (он встроен в MQL4):
Вот так может быть построен блок, в котором анализируются рыночные и отложенные ордера:
{ //отражённым в терминале
if(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий
{
// Здесь должен выполняться ..
// ..анализ характеристик ордеров
}
} //Конец тела цикла
В заголовке оператора цикла указано начальное значение i=1, а условием окончания цикла - выражение i<=OrdersTotal(). Функция OrdersTotal() возвращает общее количество рыночных и отложенных ордеров, т.е. тех ордеров, которые отражаются в Терминале на закладке Торговля. Поэтому в цикле будет столько итераций, сколько ордеров присутствует в торговле.
Не нужно отжигать)
Это код МТ4, и в нём нет деления ордеров и позиций - в нём всё смешано воедино
Всё уже давно принято, и прежде чем писать документацию, наверное не лишне будет почитать учебник Сергея Ковалёва (он встроен в MQL4):
Вот так может быть построен блок, в котором анализируются рыночные и отложенные ордера:
{ //отражённым в терминале
if(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий
{
// Здесь должен выполняться ..
// ..анализ характеристик ордеров
}
} //Конец тела цикла
В заголовке оператора цикла указано начальное значение i=1, а условием окончания цикла - выражение i<=OrdersTotal(). Функция OrdersTotal() возвращает общее количество рыночных и отложенных ордеров, т.е. тех ордеров, которые отражаются в Терминале на закладке Торговля. Поэтому в цикле будет столько итераций, сколько ордеров присутствует в торговле.
А что, в MQL4 и MQL5 функция OrdersTotal() - это разные функции? Компилятор-то вроде один и тот же....
А что, в MQL4 и MQL5 функция OrdersTotal() - это разные функции? Компилятор-то вроде один и тот же....
Что касается торговых функций - есть различия. Выше уже сказали про MQL4:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
Vitaly Muzichenko, 2017.02.28 19:25
... МТ4, и в нём нет деления ордеров и позиций - в нём всё смешано воедино
Да, разные.
И в чём разница?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
Vladimir Karputov, 2017.02.28 19:44
Что касается торговых функций - есть различия. Выше уже сказали про MQL4:
И в чём разница?
OrdersTotal()
Возвращает количество действующих ордеров.
int OrdersTotal();
Возвращаемое значение
Значение типа int.
Примечание
Не следует путать между собой действующие отложенные ордера и позиции, которые также отображаются на вкладке "Торговля" в панели "Инструменты". Ордер – это распоряжение на проведение торговой операции, а позиция является результатом одной или нескольких сделок.
При "неттинговом" учете позиций (ACCOUNT_MARGIN_MODE_RETAIL_NETTING и ACCOUNT_MARGIN_MODE_EXCHANGE) по каждому символу в любой момент времени может быть открыта только одна позиция, которая является результатом одной или более сделок. Не следует путать между собой позиции и действующие отложенные ордера, которые также отображаются на вкладке "Торговля" в панели "Инструменты".
При независимом представлении позиций (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) по каждому символу одновременно может быть открыто несколько позиций.
PositionsTotal()
Возвращает количество открытых позиций.
int PositionsTotal();
Возвращаемое значение
Значение типа int.
Примечание
При "неттинговом" учете позиций (ACCOUNT_MARGIN_MODE_RETAIL_NETTING и ACCOUNT_MARGIN_MODE_EXCHANGE) по каждому символу в любой момент времени может быть открыта только одна позиция, которая является результатом одной или более сделок. Не следует путать между собой позиции и действующие отложенные ордера, которые также отображаются на вкладке "Торговля" в панели "Инструменты".
При независимом представлении позиций (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) по каждому символу одновременно может быть открыто несколько позиций.