Вопрос к програмистам.

 
Добрий день.Один индикатор пробивает другово индикатора в короткий срок несколько раз в советнике, тогда получитца покупка или продажа тоже несколько раз.Можноли зафикцировать только первое пробивание на какое то время.А остальние пробивание нерегировали на какоето время.
 
Простите за ошибки в тексте.
 

___Правда не на врямя вообще, а на время существования одной или "m" открытых позиций !

extern int    m = 1;//количество ОДНОВРЕМЕННО  открытых позиций

//--------------------------------------------------------------------


//+----------------------------------------------------------------------------+
//| И.Ким. Функция Возвращает количество позиций.                              |
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1 - любая позиция)                    |
//|    mn - MagicNumber                (-1 - любой магик)                      |
//+----------------------------------------------------------------------------+
int NumberOfPositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), kp=0;
  if (StringLen(sy)==1 && StringGetChar(sy, 0)==48) 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);}
//-----------------------------------------------------------------------------+
if (NumberOfPositions("", -1, MagicNumber)<m)  {//если открытых позиций МЕНЬШЕ m
 
Спосибо за ответ.Это очень хорошо.Имеем один ордер,теренд идёт в нужную сторону,график 15м,проходит каких 45 минут опиать пробивает индикатор,было бы хорошо чтоб советник сделал есщё один ордер в трендовую сторону,это тоже можно решить.
 

Можно конечно. Для этого и предусмотрен параметр "m" . Задайте его равным=2

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

Например вот так:

if (NumberOfPositions("",-1, MagicLONG)<m)  {//если открытых длинных позиций МЕНЬШЕ m

Либо, прямо в функции NumberOfPositions() предусмотреть открытие только длинных или только коротких позиций.Например -

if (NumberOfPositions("",OP_BUY, MagicNumber)<m)  {//если открытых длинных позиций МЕНЬШЕ m
Ну и конечно, нужно предусмотреть, чтобы по одному сигналу открывалась строго одна позиция...
 
Спосибо RID за ответы.
Причина обращения: