Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Сделал скриншот в MetaTrader? Поделись им с друзьями!
///
100
/// 2012.04.12 09:41 
Доброго времени суток!!! Скажите Господа программисты можно "научить" советника совершать определённое количество сделок?
///
100
/// 2012.04.12 09:49  
BeerGod:
за определенное количество времени или общее количество одновременно открытых позиций ?

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

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


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

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

Roman Zamozhnyy
2187
Roman Zamozhnyy 2012.04.12 13:50  
Rapitvina:

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

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

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

:) А он сможет?
///
100
/// 2012.04.12 14:51  
Integer:

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

Сможет. Он это делает каждый день только приходится кнопку ВКЛ/ВЫКЛ нажимать самой.
Alekseu Fedotov
817
Alekseu Fedotov 2012.04.12 15:33  
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 минут И.Т.Д
ставте нужное вам время........., нет, не то?

o_o
Модератор
23688
o_o 2012.04.12 15:35  
r772ra:
ставте нужное ва время........., нет, не то?


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

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

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