Доработка ботов (советников, индикаторов) vol. 2

MakarFX

Элитный участник
Рано я радовался. Сегодня советник открылся одновременно по пяти инструментам. А должен был только по одному.
Этого стоило ожидать! Советник на каждой паре видел, что других ордеров нет и отправил запрос на открытие.
Надо советник делать мультивалютным, чтобы один контролировал все пары.
 
Последнее редактирование:

marattmb

Гуру форума
Рано я радовался. Сегодня советник открылся одновременно по пяти инструментам. А должен был только по одному.
После того, как часть ордеров закрылась при достижения тейк профита, новые не открывались( при наличии сигнала). Так и должно быть. Ранее сбой произошел при установке советников на графики, где уже были условия условия для открытия ордеров. Видимо, не нужно было устанавливать там, где уже были условия.
 

MakarFX

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

блондинка

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

MakarFX

Элитный участник
тогда наверное надо ограничение по числу одновременно открываемых ордеров равное 1,открывается первый и он же единственный
Солнышко) Так каждый советник и открывает по одному ордеру.
 

AlexeNP

Гуру форума
Рано я радовался. Сегодня советник открылся одновременно по пяти инструментам. А должен был только по одному.
каждый экземпляр советника работает в своей песочнице, поэтому если сигналы придут двум разным экземплярам одновременно (что не так маловероятно, как может показаться на первый взгляд), то они оба и откроются.
Тут два пути - задавать приоритеты на обработку сигналов разными копиями, или делать дин советник под несколько валют
 

kudinoff

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

vladradon

Программист
Можно подробнее как это сделать?
Мысль в голову пришла: задать каждому сову свой номер и каждый сов будет записывать в глобальную переменную терминала свой номер после обработки и каждый сов, который считает из глобальной переменной номер последнего отработавшего на открытие сова и добавив 1 получит свой номер, получит возможность проверить сигнал на вход и так по кругу. А сов, который последний в списке, выставляет в переменную 0 и дальше первый сов снова проверяет сигнал на вход. Параллельно нужно проверять отдельной функцией количество уже торгующих сов для приостановки. Функционально это всего несколько строк кода будет. В входные переменные задать номер сова и, как вариант, триггерную переменную (true/false), которая будет обозначать является ли сов последним в списке.
 

MakarFX

Элитный участник
Мысль в голову пришла:
Это что-то сильно навороченное
Цикл по массиву символов
Я тоже считаю это лучшим вариантом
Код:
input string Symbols    = "EURUSD,GBPUSD,AUDUSD,USDCHF"; // список символов (разделитель ",")
int sz1;
string tSymbol;
string iSymbol[];
ushort sep=StringGetCharacter(",",0);
//+------------------------------------------------------------------+
   sz1=StringSplit(Symbols,sep,iSymbol);
   for(int i=0; i<sz1; i++)
     {
      tSymbol=iSymbol[i];
     }
//+------------------------------------------------------------------+
 
Верх