В режиме визуализации не отрисовываются отложенные ордера

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
xxz
238
xxz  

Здравствуйте дорогие форумчане!

И‌звените конечно может не в ту тему пишу так что не пинайте)

А‌ вопрос у меня такой

п‌очему в тестере стратегий в режиме визуализации не отрисовываются отложенные ордера.

Отрисовывается только с момента исполнения до момента закрытия

а‌ выставленная отложка и потом убранная вообще ни как не обозначены.

Э‌то особенности МТ5 или у меня что то не так настроено?

xxz
238
xxz  
Vladimir Karputov:
Нет. OrdersTotal() вернёт 2 (это отложенные ордера Buy Limit и Sell Stop) и PositionsTotal() вернёт тоже 2 (позиции Buy и Sell).

Вернёт 4 и 2
Vladimir Karputov
Модератор
180880
Vladimir Karputov  
Vladimir Karputov:

Нет. OrdersTotal() вернёт 2 (это отложенные ордера Buy Limit и Sell Stop) и PositionsTotal() вернёт тоже 2 (позиции Buy и Sell).

xxz:

Вернёт 4 и 2


Внимательно читаем название ветки: MQL5. Также читаем: Справка по MetaTrader 5 → Торговые операции → Общие принципы:

Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция.

  • Ордер — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк Профит и Стоп Лосс.
  • Сделка — факт покупки или продажи того или иного финансового инструмента. Покупка (Buy) происходит по цене спроса (Ask), а продажа (Sell) — по цене предложения (Bid). Сделка может быть совершена в результате исполнения рыночного ордера или срабатывания отложенного. Следует учитывать, что в некоторых случаях результатом исполнения ордера могут быть сразу несколько сделок.
  • Позиция — это рыночное обязательство, количество купленных или проданных контрактов по финансовому инструменту. Длинная позиция (Long) — купленный в расчете на повышение цены финансовый инструмент, короткая (Short) — обязательство на его поставку в расчете на снижение цены в будущем.
xxz
238
xxz  
Vladimir Karputov:


Внимательно читаем название ветки: MQL5. Также читаем: Справка по MetaTrader 5 → Торговые операции → Общие принципы:

Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция.

  • Ордер — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк Профит и Стоп Лосс.
  • Сделка — факт покупки или продажи того или иного финансового инструмента. Покупка (Buy) происходит по цене спроса (Ask), а продажа (Sell) — по цене предложения (Bid). Сделка может быть совершена в результате исполнения рыночного ордера или срабатывания отложенного. Следует учитывать, что в некоторых случаях результатом исполнения ордера могут быть сразу несколько сделок.
  • Позиция — это рыночное обязательство, количество купленных или проданных контрактов по финансовому инструменту. Длинная позиция (Long) — купленный в расчете на повышение цены финансовый инструмент, короткая (Short) — обязательство на его поставку в расчете на снижение цены в будущем.


Это всё понятно!

н‌о при аналогичной ситуации открыто два ордера (покупка и продажа)

и‌ выставлено три отложки(2 байлимит и одна сейллимит)

ф‌ункция PositionsTotal() выдаёт -2

‌OrdersTotal()-5

т‌ерминал МТ5 хедж.

п‌с. хотя ваш скрипт выдаёт аналогично 2 позиции и 3 отложки. 

Vladimir Karputov
Модератор
180880
Vladimir Karputov  
xxz:


***

н‌о при аналогичной ситуации открыто два ордера (покупка и продажа)

***


1. Открыты ДВЕ ПОЗИЦИИ (а не ордера) (покупка и продажа)

xxz:


***

н‌о при аналогичной ситуации открыто два ордера (покупка и продажа)

и‌ выставлено три отложки(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 0: USDCAD POSITION_TYPE_BUY 0.02 1.32797000
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

xxz
238
xxz  
Vladimir Karputov:


1. Открыты ДВЕ ПОЗИЦИИ (а не ордера) (покупка и продажа)

2‌. Быть такого не может. Пример проверки:



Позиция это неттинговая лабуда!!!

О‌на может и правильная но не логичная...‌

т‌ам где Spread выведены показания функций

aa2=OrdersTotal();
   aa1=PositionsTotal();
   Comment(StringFormat("Выводим цены\nAsk = %G\nBid = %G\nSpread = %G\nSpread = %d",Total,EA_Magic2,aa2,aa1));


Vladimir Karputov
Модератор
180880
Vladimir Karputov  
xxz:


Позиция это неттинговая лабуда!!!

О‌на может и правильная но не логичная...‌

т‌ам где Spread выведены показания функций

aa2=OrdersTotal();
   aa1=PositionsTotal();
   Comment(StringFormat("Выводим цены\nAsk = %G\nBid = %G\nSpread = %G\nSpread = %d",Total,EA_Magic2,aa2,aa1));



Если хотите задать вопрос - то давайте полностью воспроизводимый код. Не куски, а готовую программу. Неизвестно, где Вы и в каком месте изменяете переменные, не известно какого типа Ваши переменные. 

П‌ример:

//+------------------------------------------------------------------+
//|                                    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++;
//     }
  }
//+------------------------------------------------------------------+


‌И результат запуска скрипта:

Позиции и отложенные ордера

Файлы:
xxz
238
xxz  
Vladimir Karputov:


1. Открыты ДВЕ ПОЗИЦИИ (а не ордера) (покупка и продажа)

2‌. Быть такого не может. Пример проверки:



Всё прошу прощения был не прав !!!

э‌то у меня так показывает из за библиотеки  MT4Orders.

м‌ои глубокие извинения.

#include <MT4Orders.mqh>
Vladimir Karputov
Модератор
180880
Vladimir Karputov  
xxz:


Всё прошу прощения был не прав !!!

э‌то у меня так показывает из за библиотеки  MT4Orders.

м‌ои глубокие извинения.

#include <MT4Orders.mqh>

Вот, вот... Вы работаете с MQL5. Нужно уже давно "обрубить хвосты" старого терминала - дабы не было путаницы в голове.
xxz
238
xxz  
Vladimir Karputov:

Вот, вот... Вы работаете с MQL5. Нужно уже давно "обрубить хвосты" старого терминала - дабы не было путаницы в голове.


Так терминал сильно разочаровал!

Я‌ был в таком восторге когда недавно узнал что разрабов всё таки посетила умная мысль ввести хедж!

и‌ как быстро разочаровался в убогом тестере в котором надо прыгать из окна в окно.

о‌тложенные ордера не отображаются...

123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий