- Особенности языка mql5, тонкости и приёмы работы
- Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
- Организация цикла перебора ордеров
Здравствуйте дорогие форумчане!
Извените конечно может не в ту тему пишу так что не пинайте)
А вопрос у меня такой
почему в тестере стратегий в режиме визуализации не отрисовываются отложенные ордера.
Отрисовывается только с момента исполнения до момента закрытия
а выставленная отложка и потом убранная вообще ни как не обозначены.
Это особенности МТ5 или у меня что то не так настроено?
Нет. OrdersTotal() вернёт 2 (это отложенные ордера Buy Limit и Sell Stop) и PositionsTotal() вернёт тоже 2 (позиции Buy и Sell).
Вернёт 4 и 2
Нет. OrdersTotal() вернёт 2 (это отложенные ордера Buy Limit и Sell Stop) и PositionsTotal() вернёт тоже 2 (позиции Buy и Sell).
xxz:
Вернёт 4 и 2
Внимательно читаем название ветки: MQL5. Также читаем: Справка по MetaTrader 5 → Торговые операции → Общие принципы:
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция.
- Ордер — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк Профит и Стоп Лосс.
- Сделка — факт покупки или продажи того или иного финансового инструмента. Покупка (Buy) происходит по цене спроса (Ask), а продажа (Sell) — по цене предложения (Bid). Сделка может быть совершена в результате исполнения рыночного ордера или срабатывания отложенного. Следует учитывать, что в некоторых случаях результатом исполнения ордера могут быть сразу несколько сделок.
- Позиция — это рыночное обязательство, количество купленных или проданных контрактов по финансовому инструменту. Длинная позиция (Long) — купленный в расчете на повышение цены финансовый инструмент, короткая (Short) — обязательство на его поставку в расчете на снижение цены в будущем.
Внимательно читаем название ветки: MQL5. Также читаем: Справка по MetaTrader 5 → Торговые операции → Общие принципы:
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция.
- Ордер — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк Профит и Стоп Лосс.
- Сделка — факт покупки или продажи того или иного финансового инструмента. Покупка (Buy) происходит по цене спроса (Ask), а продажа (Sell) — по цене предложения (Bid). Сделка может быть совершена в результате исполнения рыночного ордера или срабатывания отложенного. Следует учитывать, что в некоторых случаях результатом исполнения ордера могут быть сразу несколько сделок.
- Позиция — это рыночное обязательство, количество купленных или проданных контрактов по финансовому инструменту. Длинная позиция (Long) — купленный в расчете на повышение цены финансовый инструмент, короткая (Short) — обязательство на его поставку в расчете на снижение цены в будущем.
Это всё понятно!
но при аналогичной ситуации открыто два ордера (покупка и продажа)
и выставлено три отложки(2 байлимит и одна сейллимит)
функция PositionsTotal() выдаёт -2
OrdersTotal()-5
терминал МТ5 хедж.
пс. хотя ваш скрипт выдаёт аналогично 2 позиции и 3 отложки.
***
но при аналогичной ситуации открыто два ордера (покупка и продажа)
***
1. Открыты ДВЕ ПОЗИЦИИ (а не ордера) (покупка и продажа)
***
но при аналогичной ситуации открыто два ордера (покупка и продажа)
и выставлено три отложки(2 байлимит и одна сейллимит)
функция PositionsTotal() выдаёт -2
OrdersTotal()-5
терминал МТ5 хедж.
2. Быть такого не может. Пример проверки:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
Vladimir Karputov, 2017.02.28 19:19
Справку прочтите уже наконец :).
Изучайте:
//| OrdersTotalPositionsTotal.mq5 |
//| Copyright © 2017, Vladimir Karputov |
//| http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link "http://wmua.ru/slesar/"
#property version "1.00"
//---
#include <Trade\PositionInfo.mqh>
#include <Trade\OrderInfo.mqh>
CPositionInfo m_position; // trade position object
COrderInfo m_order; // pending orders object
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
int total=0;
for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positions
if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
{
//if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
Print("position ",total,": ",m_position.Symbol()," ",EnumToString(m_position.PositionType()),
" ",DoubleToString(m_position.Volume(),2)," ",DoubleToString(m_position.PriceOpen(),8));
total++;
}
total=0;
for(int i=OrdersTotal()-1;i>=0;i--) // returns the number of current orders
if(m_order.SelectByIndex(i)) // selects the pending order by index for further access to its properties
{
//if(m_order.Symbol()==m_symbol.Name() && m_order.Magic()==m_magic)
Print("pending order ",total,": ",m_order.Symbol()," ",EnumToString(m_order.OrderType()),
" ",DoubleToString(m_order.VolumeInitial(),2)," ",DoubleToString(m_order.PriceOpen(),8));
total++;
}
}
//+------------------------------------------------------------------+
Вот состояние вкладки "Торговля":
Как видите открыты ДВЕ ПОЗИЦИИ (EURUSD buy 0.03 и USDCAD buy 0.02) и выставлены ТРИ ОТЛОЖЕННЫЕ ОРДЕРА (USDJPY buy limit, USDJPY sell limit и EURUSD buy limit),
и распечатка скрипта:
2017.02.28 20:14:43.804 OrdersTotalPositionsTotal (EURUSD,H1) position 1: EURUSD POSITION_TYPE_BUY 0.03 1.06088000
2017.02.28 20:14:43.804 OrdersTotalPositionsTotal (EURUSD,H1) pending order 0: EURUSD ORDER_TYPE_BUY_LIMIT 0.03 1.05879000
2017.02.28 20:14:43.804 OrdersTotalPositionsTotal (EURUSD,H1) pending order 1: USDJPY ORDER_TYPE_SELL_LIMIT 0.01 112.71100000
2017.02.28 20:14:43.804 OrdersTotalPositionsTotal (EURUSD,H1) pending order 2: USDJPY ORDER_TYPE_BUY_LIMIT 0.01 111.74500000
1. Открыты ДВЕ ПОЗИЦИИ (а не ордера) (покупка и продажа)
2. Быть такого не может. Пример проверки:
Позиция это неттинговая лабуда!!!
Она может и правильная но не логичная...
там где Spread выведены показания функций
aa1=PositionsTotal();
Позиция это неттинговая лабуда!!!
Она может и правильная но не логичная...
там где Spread выведены показания функций
aa1=PositionsTotal();
Если хотите задать вопрос - то давайте полностью воспроизводимый код. Не куски, а готовую программу. Неизвестно, где Вы и в каком месте изменяете переменные, не известно какого типа Ваши переменные.
Пример:
//| OrdersTotalPositionsTotal.mq5 |
//| Copyright © 2017, Vladimir Karputov |
//| http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link "http://wmua.ru/slesar/"
#property version "1.00"
//---
//#include <Trade\PositionInfo.mqh>
//#include <Trade\OrderInfo.mqh>
//CPositionInfo m_position; // trade position object
//COrderInfo m_order; // pending orders object
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
int pos_total=PositionsTotal();
int ord_total=OrdersTotal();
Comment("PositionsTotal=",IntegerToString(pos_total),"\n",
"OrdersTotal=",IntegerToString(ord_total));
return;
//for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positions
// if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
// {
// //if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
// Print("position ",total,": ",m_position.Symbol()," ",EnumToString(m_position.PositionType()),
// " ",DoubleToString(m_position.Volume(),2)," ",DoubleToString(m_position.PriceOpen(),8));
// total++;
// }
//int ord_total=0;
//for(int i=OrdersTotal()-1;i>=0;i--) // returns the number of current orders
// if(m_order.SelectByIndex(i)) // selects the pending order by index for further access to its properties
// {
// //if(m_order.Symbol()==m_symbol.Name() && m_order.Magic()==m_magic)
// Print("pending order ",total,": ",m_order.Symbol()," ",EnumToString(m_order.OrderType()),
// " ",DoubleToString(m_order.VolumeInitial(),2)," ",DoubleToString(m_order.PriceOpen(),8));
// total++;
// }
}
//+------------------------------------------------------------------+
И результат запуска скрипта:
1. Открыты ДВЕ ПОЗИЦИИ (а не ордера) (покупка и продажа)
2. Быть такого не может. Пример проверки:
Всё прошу прощения был не прав !!!
это у меня так показывает из за библиотеки MT4Orders.
мои глубокие извинения.
Всё прошу прощения был не прав !!!
это у меня так показывает из за библиотеки MT4Orders.
мои глубокие извинения.
Вот, вот... Вы работаете с MQL5. Нужно уже давно "обрубить хвосты" старого терминала - дабы не было путаницы в голове.
Вот, вот... Вы работаете с MQL5. Нужно уже давно "обрубить хвосты" старого терминала - дабы не было путаницы в голове.
Так терминал сильно разочаровал!
Я был в таком восторге когда недавно узнал что разрабов всё таки посетила умная мысль ввести хедж!
и как быстро разочаровался в убогом тестере в котором надо прыгать из окна в окно.
отложенные ордера не отображаются...
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования