Как торговать на нескольких парах но не более одной одновременно

 
Здравствуйте .
У меня вопрос .
Есть эксперт подключенный на несколько графиков .
Как сделать , что бы он работал поочереди со всеми - в зависимости от пришедшего сигнала ,
но не более чем с одной парой в каждый момент времени. По одной паре может быть открыто несколько ордеров .
 
во всех проверках, где проверяется символ и магик убрать проверку символа и оставить только проверку магика
 
Создай глобальную переменную, по тику в советнике проверяй ее, если равна нулю можно работать, если единица - завершай цикл. Далее, если равна нулю, сразу же сделай ее единицей, чтобы другие советники в это время не мешали. Потом в конце цикла опять ее обнули. Все.
 
Из того совета, что дал Roger для начинающего понятно только то, что он очень продвинут в программировании. Для нас-непродвинутых- подходит предыдущий совет. Если нужны подробности - дайте знать (сюда) приведу инструкции подробнее...
 

Я так понял если на одной паре уже открыта позиция то на другой валютной паре не должна? и в тоже время на той же валютной паре он может еще позиции открыть а на другой нет? если так то мона сделать ф-ию которая возвращает активную пару в данный момент по открытым позициям и если она совпадает с текущей, то продолжить а если нет то выйти. и не нужно никаких глобальных переменных. они могут слететь не обнулиться когда нужно или не выставиться. . не надежны они как (это мое мнение). к тому же это усложнит логику. и отладку

 
scorpionk:

Я так понял если на одной паре уже открыта позиция то на другой валютной паре не должна? и в тоже время на той же валютной паре он может еще позиции открыть а на другой нет? если так то мона сделать ф-ию которая возвращает активную пару в данный момент по открытым позициям и если она совпадает с текущей, то продолжить а если нет то выйти. и не нужно никаких глобальных переменных. они могут слететь не обнулиться когда нужно или не выставиться. . не надежны они как (это мое мнение). к тому же это усложнит логику. и отладку


ДА , поняли правильно .
А можно в коде показать ? Примером .

А как сделать , что бы он работал поочереди со всеми - в зависимости от пришедшего сигнала ,
но не более чем по ДВУМ парам в каждый момент времени.
По одной паре может быть открыто несколько ордеров .
 

Моё участие предсказуемо, поскольку традиционно...

//+----------------------------------------------------------------------------+
//|  Возвращает флаг существования позиций                                     |
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool ExistPositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal();
 
  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) return(True);
          }
        }
      }
    }
  }
  return(False);
}
 
Простите, не понял вопроса. Я думал, что задающий хочет осуществить жесткий мониторинг и разбирается в этом.
> не надежны они как (это мое мнение). к тому же это усложнит логику. и отладку
Можно спросить у разработчиков, разделяют ли они такую точку зрения? (Я - нет!)
PS
>Sserg777 >Для нас-непродвинутых- подходит предыдущий совет. Если нужны подробности - дайте знать (сюда) приведу инструкции подробнее. ..
Не надо давать инструкции, если Вы - непродвинутый.
 
Roger:
> не надежны они как (это мое мнение). к тому же это усложнит логику. и отладку
Можно спросить у разработчиков, разделяют ли они такую точку зрения? (Я - нет!)

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

а прмиера увы нету, не делал такого еще.
 
sprite:

Есть эксперт подключенный на несколько графиков .
Как сделать , что бы он работал поочереди со всеми - в зависимости от пришедшего сигнала ,
но не более чем с одной парой в каждый момент времени. По одной паре может быть открыто несколько ордеров .

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

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