Хэлп - По поводу количества ордеров и расстояния между ними

 

Привет читающим)

Вопрос вот в чем -

у меня были функции в mq4, которые считали количество ордеров и расстояние между открытыми,,

и вот сейчас когда я пытаюсь переходить с mq4 на mq5, как не пыжу не врубаюсь как эт реализовать.

Кто знает помогите плз.

функции:

//расстояние

int distance(string sy="",int op=-1,int mn=-1)
  {
   double w,p;
   int i,k=OrdersTotal(),r=1000000;

   if(sy=="" || sy=="0") sy=Symbol();
   p=SymbolInfoDouble(sy,SYMBOL_POINT);
   if(p==0) if(StringFind(sy,"JPY")<0) p=0.0001; else p=0.01;
   for(i=0; i<k; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if((OrderSymbol()==sy) && (op<0 || OrderType()==op))
           {
            if(mn<0 || OrderMagicNumber()==mn)
              {
               if(OrderType()==OP_BUY)
                 {
                  w=MathAbs(SymbolInfoDouble(sy,SYMBOL_ASK)-OrderOpenPrice())/p;
                  if(r>w) r=NormalizeDouble(w,0);
                 }
               if(OrderType()==OP_SELL)
                 {
                  w=MathAbs(OrderOpenPrice()-SymbolInfoDouble(sy,SYMBOL_BID))/p;
                  if(r>w) r=NormalizeDouble(w,0);
                 }
              }
           }
        }
     }
   return(r);
  }


и количество ордеров:

int Sell_numb(int mn=0,string sym="")
  {
   int count= 0;
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==sym && OrderMagicNumber()==mn && OrderType()==OP_SELL)
            count++;
        }
     }
   return(count);
  }
 
Trolon:

Привет читающим)

Вопрос вот в чем -

у меня были функции в mq4, которые считали количество ордеров и расстояние между открытыми,,

и вот сейчас когда я пытаюсь переходить с mq4 на mq5, как не пыжу не врубаюсь как эт реализовать.

Кто знает помогите плз.

функции:

//расстояние


и количество ордеров:

Для начала необходимо более точно описать задачу. 

  • Вам нужно: знать цену самой высокой (или самой низкой) ПОЗИЦИИ BUY (или SELL)?
  • Вам нужно просто знать расстояние для любой ПОЗИЦИИ между её ценой открытия и её текущей ценой?
  • и ещё 1 000 000 и больше всяческих пожеланий :)


В общем сначала определитесь, что именно нужно.

 
Ордеров или позиций? :)
 
Vladimir Karputov:

Для начала необходимо более точно описать задачу. 

  • Вам нужно: знать цену самой высокой (или самой низкой) ПОЗИЦИИ BUY (или SELL)?
  • Вам нужно просто знать расстояние для любой ПОЗИЦИИ между её ценой открытия и её текущей ценой?
  • и ещё 1 000 000 и больше всяческих пожеланий :)


В общем сначала определитесь, что именно нужно.

Для меня задача такова -

функция distance() считала количество пунктов от последнего открытого ордера до нынешней цены (от аска или бида), sell_numb (как и buy_numb) считали количество открытых сейчас ордеров buy sell

Ну и соотв нужно считать общее количество ордеров в рынке и расстояние от открытого ранее ордера до нынешней цены (не важно bid или ask)

 
Igor Zakharov:
Ордеров или позиций? :)
ордеров живых в рынке, не тотал)
 
Trolon:
ордеров живых в рынке, не тотал)

Прежде чем приступить к какому нибудь делу в любой области или направлении, сначала изучите эту область!

 Перед тем как приступить

Общие принципы - Торговые операции - MetaTrader 5
Общие принципы - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция. — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк Профит...
 
Trolon:

у меня были функции в mq4, которые считали количество ордеров и расстояние между открытыми,,

и вот сейчас когда я пытаюсь переходить с mq4 на mq5, как не пыжу не врубаюсь как эт реализовать.

Кто знает помогите плз.

Один из вариантов решения - прописать в начале эту строку

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

Тогда MQL4-функции заработают в MT5, как и ожидалось.

 
Vitaly Muzichenko:

Прежде чем приступить к какому нибудь делу в любой области или направлении, сначала изучите эту область!

 Перед тем как приступить

Ну офигеть, не встать)) я же написал:

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==sym && OrderMagicNumber()==mn && OrderType()==OP_SELL)
 и тд.
при чем здесь мое поинимае,, о-то помог)))


//=================

инклюд mt4Orders работает не корректно и с целой пачкой ошибок, не говоря уже об условии компилятора стрикт

 
Trolon:

инклюд mt4Orders работает не корректно и с целой пачкой ошибок, не говоря уже об условии компилятора стрикт

Ни одной ошибки не увидел с функциями из первого поста.

 
Trolon:

Для меня задача такова -

функция distance() считала количество пунктов от последнего открытого ордера до нынешней цены (от аска или бида), sell_numb (как и buy_numb) считали количество открытых сейчас ордеров buy sell

Ну и соотв нужно считать общее количество ордеров в рынке и расстояние от открытого ранее ордера до нынешней цены (не важно bid или ask)

Да не ордеров, а ПОЗИЦИЙ! Учите матчасть!

Снова таки, нет конкретики. 

Итак по-шагам:

  • Шаг 1. у ПОЗИЦИИ всегда есть цена открытия и текущая цена, отнимаем одно от другого и всё. Для этого нужно обойти в цикле список всех ПОЗИЦИЙ
  • Шаг 2. количество ПОЗИЦИЙ BUY и SELL считается легко - это даже делается одновременно в Шаге 1
  • А теперь то, что Вы никак не можете правильно сформулировать " ... расстояние от открытой ранее ПОЗИЦИИ до нынешней цены ... ", здесь самое скользкое - это "открытой ранее". Хорошо подумайте и пропишите, что означает Ваше "открытой ранее".

 

Для начала мат часть.

В МТ5 есть ордер, сделка и позиция и это все разные сущности.

Сначала идет ордер, Вы его выставляете в рынок, он может быть как рыночным так и отложенным.

Ордер при исполнении порождает сделку, при этом ордер отработал и больше его нет в списке, информацию о нем можно найти только в истории.

Результатом сделки является открытие/изменение/закрытие/переворот позиции.

Кроме того есть еще разный учет позиций (неттинговый и с хеджированием).

А еще есть разный способ исполнения ордеров (3 шт.)

И все это влияет на организацию работы с ордерами/позициями. Лично я еще не создал универсальный(е) класс(ы)-обертку(и) для всего этого, в отличие от МТ4, общие мысли только.

Так что: https://www.mql5.com/ru/docs

Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
  • www.mql5.com
MetaQuotes Language 5 (MQL5) - язык программирования технических индикаторов, торговых роботов и вспомогательных приложений для автоматизации торговли на финансовых рынках. MQL5 является современным языком высокого уровня и разработан MetaQuotes Software Corp. для собственной торгово-информационной платформы. Синтаксис языка максимально близок...
Причина обращения: