Как определить количество установленных ордеров

Программирование прибыли: от азов к секретам мастерства. Читайте, спрашивайте, делитесь опытом.
Бонус за сообщение 0.5$
Ответственный Модератор - Haos

Как определить количество установленных ордеров

Сообщение Haos » 16 сен 2017, 14:07

При разработки кода разработчику необходимо определять сколько установлено ордеров в данный момент. При этом конкретизация необходимой информации может осуществляться по следующим условиям:
1. сколько установлено ордеров на текущем торговом активе или на всех активах;
2. сколько установлено ордеров любого типа или определенного типа;
3. сколько установлено ордеров конкретным советником (скриптом) или установленных любым способом (вручную и без идентификационного номера);
Чтобы иметь возможность данной конкретизации при получении информации об установленных ордерах напишем функцию для получения количества ордеров и будем передавать в неё три параметра:
1. наименование актива;
2. тип торговой операции (тип ордера) ;
3. Мэджик намбер (идентификационный номер советника / скрипта, который устанавливал ордера).

Код: выделить все
int f_GetNumberOfOrders(string sy, int op, int mn)
{
/*
   Описание : Возвращает количество ордеров.                                 
   Параметры:                                                               
   sy - наименование инструмента   (""   - любой символ,                   
                                     "0" - текущий символ)                 
   op - операция                   (-1   - любой ордер)                   
   mn - MagicNumber                (-1   - любой магик)                   
*/
   int int_N = 0; // кол-во ордеров
   if(sy == "0") sy = _Symbol;
   for(int i = 0; i < OrdersTotal(); i++)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         if(OrderType() > 1 && OrderType() < 6)
         {
            if((OrderSymbol() == sy || sy == "") && (op < 0 || OrderType() == op))
            {
               if(mn < 0 || OrderMagicNumber() == mn) int_N++;
            }
         }
      }
   }

return(int_N);
}

Итак, данная функция выполняет все поставленные задачи по нахождению количества установленных ордеров. Сторонних функций эта функция не использует, поэтому может быть применена в коде сама по себе.
Аватар пользователя
Haos
Специалист MQL
 
Сообщений: 24699
Зарегистрирован: 29 мар 2014, 16:07
Средств на руках: 193.70 Доллар
Группа: Главные модераторы
Благодарил (а): 3379 раз.
Поблагодарили: 8200 раз.

Как определить количество установленных ордеров

Сообщение Sova767 » 23 сен 2017, 18:12

Haos писал(а):При разработки кода разработчику необходимо определять сколько установлено ордеров в данный момент. При этом конкретизация необходимой информации может осуществляться по следующим условиям:
1. сколько установлено ордеров на текущем торговом активе или на всех активах;
2. сколько установлено ордеров любого типа или определенного типа;
3. сколько установлено ордеров конкретным советником (скриптом) или установленных любым способом (вручную и без идентификационного номера);
Чтобы иметь возможность данной конкретизации при получении информации об установленных ордерах напишем функцию для получения количества ордеров и будем передавать в неё три параметра:
1. наименование актива;
2. тип торговой операции (тип ордера) ;
3. Мэджик намбер (идентификационный номер советника / скрипта, который устанавливал ордера).

Код: выделить все
int f_GetNumberOfOrders(string sy, int op, int mn)
{
/*
   Описание : Возвращает количество ордеров.                                 
   Параметры:                                                               
   sy - наименование инструмента   (""   - любой символ,                   
                                     "0" - текущий символ)                 
   op - операция                   (-1   - любой ордер)                   
   mn - MagicNumber                (-1   - любой магик)                   
*/
   int int_N = 0; // кол-во ордеров
   if(sy == "0") sy = _Symbol;
   for(int i = 0; i < OrdersTotal(); i++)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         if(OrderType() > 1 && OrderType() < 6)
         {
            if((OrderSymbol() == sy || sy == "") && (op < 0 || OrderType() == op))
            {
               if(mn < 0 || OrderMagicNumber() == mn) int_N++;
            }
         }
      }
   }

return(int_N);
}

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

Что-то я плохо поняла, зачем определять количество установленных ордеров, когда при непосредственном их размещении, надо заранее определиться, сколько можно активировать позиций тем или иным размером лота, чтобы общая активация процента депозитных средств, конкретно соответствовала допустимым объемом относительно стартовой сумме депозита.

Если это не рассчитывать заочно, тогда, - это просто будет конкретным преступлением в плане поддержания благополучия текущего общего баланса торгового капитала.

Это же все самый важный момент при выполнении любого торгового плана, вплоть до использования автоматизированной торговой системы.

Кроме того, такой учет ни в коем случае нельзя доверять роботу, если этот советник не написан собственноручно самим трейдером для личного пользования.
Аватар пользователя
Sova767
 
Сообщений: 1566
Зарегистрирован: 07 июл 2014, 00:11
Средств на руках: 180.00 Доллар
Откуда: г. Профит ул. Инвесторов 76
Награды: 2
Ветеран I (1) Медаль за научный вклад (1)
Группа: Базовая
Благодарил (а): 755 раз.
Поблагодарили: 514 раз.
Dzhuliya Karlovna Ignatowichene

Re: Как определить количество установленных ордеров

Сообщение Haos » 23 сен 2017, 18:20

Ситуации бывают разные и описанный тобой случай также реализуется в коде. Он имеет отношение к манименеджменту и многосделочной, скажем так, торговле, т.е. к гридингу.
А вот мнение о доверии к роботам просьба высказывать в соответствующих разделах, не то что в этой теме, т.к. данный раздел очень практичен, он прикладной для осваивающих программирование и уже специалистов в этом.
Аватар пользователя
Haos
Специалист MQL
 
Сообщений: 24699
Зарегистрирован: 29 мар 2014, 16:07
Средств на руках: 193.70 Доллар
Группа: Главные модераторы
Благодарил (а): 3379 раз.
Поблагодарили: 8200 раз.

Как определить количество установленных ордеров

Сообщение Sova767 » 23 сен 2017, 20:35

Haos писал(а):Ситуации бывают разные и описанный тобой случай также реализуется в коде. Он имеет отношение к манименеджменту и многосделочной, скажем так, торговле, т.е. к гридингу.
А вот мнение о доверии к роботам просьба высказывать в соответствующих разделах, не то что в этой теме, т.к. данный раздел очень практичен, он прикладной для осваивающих программирование и уже специалистов в этом.

Тогда я все поняла, что этот вопрос относительно определения количества одновременных активных позиций, конкретно относится к работе автоматизированной торговой системы. То есть, этот момент должен быть непременно прописан при постройке торгового робота.
При этом я просто подумала, что это касается и торговли, управляемой в ручном режиме.
Тогда вопросов больше нет.
Аватар пользователя
Sova767
 
Сообщений: 1566
Зарегистрирован: 07 июл 2014, 00:11
Средств на руках: 180.00 Доллар
Откуда: г. Профит ул. Инвесторов 76
Награды: 2
Ветеран I (1) Медаль за научный вклад (1)
Группа: Базовая
Благодарил (а): 755 раз.
Поблагодарили: 514 раз.
Dzhuliya Karlovna Ignatowichene

Re: Как определить количество установленных ордеров

Сообщение Haos » 24 сен 2017, 05:44

Sova767 писал(а):Тогда я все поняла, что этот вопрос относительно определения количества одновременных активных позиций, конкретно относится к работе автоматизированной торговой системы. То есть, этот момент должен быть непременно прописан при постройке торгового робота.
При этом я просто подумала, что это касается и торговли, управляемой в ручном режиме.
Тогда вопросов больше нет.

Сначала идёт постановка задачи что нужно трейдеру, а потом это реализуется в коде. Например, если заранее известно сколько будет ордеров и максимально допустимый риск, то можно рассчитать алгоритм изменения объёмов торговых, что проще делать роботу, а не считать каждый раз вручную.
Аватар пользователя
Haos
Специалист MQL
 
Сообщений: 24699
Зарегистрирован: 29 мар 2014, 16:07
Средств на руках: 193.70 Доллар
Группа: Главные модераторы
Благодарил (а): 3379 раз.
Поблагодарили: 8200 раз.

Как определить количество установленных ордеров

Сообщение Sova767 » 24 сен 2017, 08:22

Haos писал(а):
Sova767 писал(а):Тогда я все поняла, что этот вопрос относительно определения количества одновременных активных позиций, конкретно относится к работе автоматизированной торговой системы. То есть, этот момент должен быть непременно прописан при постройке торгового робота.
При этом я просто подумала, что это касается и торговли, управляемой в ручном режиме.
Тогда вопросов больше нет.

Сначала идёт постановка задачи что нужно трейдеру, а потом это реализуется в коде. Например, если заранее известно сколько будет ордеров и максимально допустимый риск, то можно рассчитать алгоритм изменения объёмов торговых, что проще делать роботу, а не считать каждый раз вручную.

Сначала идёт постановка задачи, что нужно трейдеру, а потом это реализуется в коде. Например, если заранее известно, сколько будет ордеров и максимально допустимый риск, то можно рассчитать алгоритм изменения объёмов торговых, что проще делать роботу, а не считать каждый раз вручную.
Но этот момент конкретно зависит от выполняемого плана. Если же, при этом, выполняется торговля посредством автоматизированной системы, тогда, разумеется, это должно быть заранее прописано в самой системе советника. То есть, в данном случае вывод элементарный и сводится к тому, что изначально должен быть составлен хорошо продуманный и основательно протестированный торговый план.

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

То есть, скажем, если депозит 30 000 единиц, тогда, предельно допустимая активация средств капитала, должна составлять не более десяти позиций, каждая из которых может быть открыта лотом не более чем 1.00.
Это обеспечивает активацию загруженной суммы депозитных средств в размере 200 единиц.
Данный расчет я указала в долларовом эквиваленте, на момент среднего уровня котировки минувшей торговой недели.

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

Говоря совсем кратко, надо просто указать на то, что изначально требуется основательно продумать пункты торгового плана, начиная прямо с определения допустимого процента активации депозитных средств в соответствии с дальнейшими параметрами последующих пунктов практической реализации активного позиционирования выполняемой торговой системы.
Аватар пользователя
Sova767
 
Сообщений: 1566
Зарегистрирован: 07 июл 2014, 00:11
Средств на руках: 180.00 Доллар
Откуда: г. Профит ул. Инвесторов 76
Награды: 2
Ветеран I (1) Медаль за научный вклад (1)
Группа: Базовая
Благодарил (а): 755 раз.
Поблагодарили: 514 раз.
Dzhuliya Karlovna Ignatowichene


Вернуться в MQL – теория и практика

Кто сейчас на форуме?

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 76

Права доступа к форуму

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения