"Научите" советника !!! [за время указанного мною интервала он совершил нужное мне количество сделок (не ордеров) ]

 
Доброго времени суток!!! Скажите Господа программисты можно "научить" советника совершать определённое количество сделок?
 
BeerGod:
за определенное количество времени или общее количество одновременно открытых позиций ?

Временной интервал в нём уже заложен. Мне нужно что бы за время указанного мною интервала он совершил нужное мне количество сделок (не ордеров)
 
sergeev:

повторите пожалуйста вопрос, в расширенном изложении.


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

Самый простой и прямой способ - просматривать всю историю ордеров и считать сколько ордеров сделано за заданный интервал времени. Это медленно будет тестироваться, если делать, то делать непосредственно перед открытием ордера (после всех проверок на открытие), чтобы лишний раз не бегать по истории.

 
Rapitvina:

Временной интервал в нём уже заложен. Мне нужно что бы за время указанного мною интервала он совершил нужное мне количество сделок (не ордеров)
Их должно быть не больше нужного количества (сделать легко) - или не меньше нужного количества (тогда непонятки с условиями на вход)?
 
Rich:
Их должно быть не больше нужного количества (сделать легко) - или не меньше нужного количества (тогда непонятки с условиями на вход)?

Что же непонятного? Условия на вход определены временным интервалом.....
 
Rapitvina:

Он должен совершить столько сколько я захочу.

:) А он сможет?
 
Integer:

:) А он сможет?

Сможет. Он это делает каждый день только приходится кнопку ВКЛ/ВЫКЛ нажимать самой.
 
Rapitvina:

Сможет. Он это делает каждый день только приходится кнопку ВКЛ/ВЫКЛ нажимать самой.


Вот функция И Ким

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

  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) {
              if (t<OrderOpenTime()) t=OrderOpenTime();
            }
          }
        }
      }
    }
  }
  return(TimeCurrent()-t);
}

вызываем из советника

If(SecondsAfterOpenLastPos()>300) //300- 5 минут,600- 10 минут И.Т.Д
ставте нужное вам время........., нет, не то?

 
r772ra:
ставте нужное ва время........., нет, не то?


не, надо функция, которая считает число ордеров за указанный диапазон времени.
 
sergeev:

не, надо функция, которая считает число ордеров за указанный диапазон времени.

Нет,не нужно ему считать ордера в поле терминал все ордера закрыты.
Причина обращения: