Скачать MetaTrader 5

Как посчитать кол во чужих открытых позиций

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

Планирую делать так:

int MyOP = NumberOfPositions(NULL,-1,Magic);

int AllOP = NumberOfPositions(NULL,-1,-1);

int Alien = AllOP-MyOP

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает количество позиций.                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfPositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), kp=0;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) kp++;
          }
        }
      }
    }
  }
  return(kp);
}

Нормально? Или можно придумать лучше?

Alexander
2441
Alexander  

Для себя родного измени функцию, Замени

if (mn<0 || OrderMagicNumber()==mn) kp++;

на

if (OrderMagicNumber()!=mn) kp++;

Тогда достаточно будет одной строчки

int Alien = NumberOfPositions(NULL,-1,Magic);

Sergey
219
Sergey  
спасибо
Mikhail Kozhemyako
1270
Mikhail Kozhemyako  
boing9267:

Планирую делать так:

int MyOP = NumberOfPositions(NULL,-1,Magic);

int AllOP = NumberOfPositions(NULL,-1,-1);

int Alien = AllOP-MyOP

Нормально? Или можно придумать лучше?

Всё нормально, работает.Просто наверное чужой код выкладывать на всеобщее осмотрение, тем более его менять. Ну или комментарии хотя бы убрать.
Sergey
219
Sergey  
а в чем криминал?
Mikhail Kozhemyako
1270
Mikhail Kozhemyako  
boing9267:
а в чем криминал?


А просто подставив шапку от имени другого человека. Мало ли как Вы можете изменит код, а ему потом расхлёбывай...Конечно этот код выложен в свободном доступе, но если код меняете под свои задачи уберите хотя бы шапку.
Sergey
219
Sergey  
Sepulca:


А просто подставив шапку от имени другого человека. Мало ли как Вы можете изменит код, а ему потом расхлёбывай...Конечно этот код выложен в свободном доступе, но если код меняете под свои задачи уберите хотя бы шапку.

В измененном коде комментов нет + я не планирую выкладывать измененный код. В сообщении оставил код с комментами с целью указания авторства.
Alekseu Fedotov
1042
Alekseu Fedotov  
NumberOfPositions(string sy="", int op=-1, int mn=-1)boing9267:

В измененном коде комментов нет + я не планирую выкладывать измененный код. В сообщении оставил код с комментами с целью указания авторства.

Не обязательно что-то меять.

Вызываем

NumberOfPositions(); все, и чюжие и свои.

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