[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 52

 
FAQ:

Совершенно от этого не зависит. Может от чего другого, но не от тиков - проверял. Вообще в новом билде полностью изменена работа терминала относительно потока советника. Теперь зацикленный советник четко отрабатывает все итерации цикла не зависимо от работы самого терминала, в старых версиях были задержки при нагрузке на основной поток. И кстати резко уменьшилось количество потребляемых ресурсов проца (зацикленным советником)
У меня также подобное было с терминалом - там не было зацикленных вещей - было похоже, что терминал занят обработкой чего-то... при повторных попытках вызова мышкой окна "Свойств" сОва - попытки с 5-8 - оно с успехом открывалось...
 
Roman.:
У меня также подобное было с терминалом - там не было зацикленных вещей - было похоже, что терминал занят обработкой чего-то... при повторных попытках вызова мышкой окна "Свойств" сОва - попытки с 5-8 - оно с успехом открывалось...

Возможно, но на тики это никак не завязано.
 
FAQ:

Возможно, но на тики это никак не завязано.

Понятно.
 

Надеюсь темой не ошибся ; )

Вопрос скорее нубский, но застрял на нем уже давно.

int total=OrdersTotal();

int Q,W;
if (total == Q + W)

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

 
Keda:

Надеюсь темой не ошибся ; )

Вопрос скорее нубский, но застрял на нем уже давно.

int total=OrdersTotal();

int Q,W;
if (total == Q + W)

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


Насколько можно судить - переменные Q и W это целые.

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

Вопрос вообще супер. Вы правильно сказали: "Вопрос скорее нубский". Точно: нуб по задаванию вопросов. Не будьте нубом в задавании вопросов, тренируйтесь так задавать, чтобы Вас поняли.

А пока, Вам лучше сюда сходить.

 

по вопросу можно судить, что задающий совсем новичек в mql4. За ответ спс, теперь понимаю в чем проблема.

Попробовал разобраться, еще больше запутался. Стоит предел на открытие лотов, не больше 2. Открываеться 2 разных лота. Они должны работать вместе. Когда один из них закрываеться, как сделать так, что бы закрывшийся снова открылся? А то у меня когда 1 закрываеться, другой работает один и только когда оба закроються, открываеться 2 лота. Буду благодарен за совет

 
yosuf:
Часто пропадает интернет, нельзя, ли автоматизировать программно его повторный запуск? Или что в этом направлении известно? Есть ли способ одновременно запитать от двух и более провайдеров, в смысли, паралельно? Заранее благодарю.
Проще и НАДЁЖНЕЕ для денежных средств использовать VPS сервис.
 
Keda:

по вопросу можно судить, что задающий совсем новичек в mql4. За ответ спс, теперь понимаю в чем проблема.

Попробовал разобраться, еще больше запутался. Стоит предел на открытие лотов, не больше 2. Открываеться 2 разных лота. Они должны работать вместе. Когда один из них закрываеться, как сделать так, что бы закрывшийся снова открылся? А то у меня когда 1 закрываеться, другой работает один и только когда оба закроються, открываеться 2 лота. Буду благодарен за совет


Теперь понятно. Вот примерная прикидка:

int    Magic=123;

double Lot_Q=0.01;
double Lot_W=0.05;

bool   Flag_Q=False;
bool   Flag_W=False;


//Просматриваем все открытые ордера

for(int i = OrdersTotal() - 1; i >= 0; i--) 
  {
   OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
   if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)//Если это ордер данного символа и магика (т.е. открыт данным советником)
     {
      if(OrderLots()==Lot_Q) Flag_Q=True;//Если ордер с объемом Q есть среди открытых, присваиваем флагу Q истину.
      if(OrderLots()==Lot_W) Flag_W=True;//Если ордер с объемом W есть среди открытых, присваиваем флагу W истину.
     }
   }


//Проверяем условия нужности открытия - индикаторы, другие сигналы, и что там у Вас еще. И если есть сигнал

if(Flag_Q==False)//Только если ордер Q не открыт в настоящий момент
  {
   //Открытие ордера Q
  }

if(Flag_W==False)//Только если ордер W не открыт в настоящий момент
  {
   //Открытие ордера W
  }
 
Во здорово, это оно. Спасибо
 

Опять я) Здравствуйте! Подскажите как это по компактнее написать?

        for (i=4; i<7; i++){
        sum+=GetPrcD1(symb[i]);
        Content[5][1]=DoubleToStr(sum/3,3);
        }
        
        for (i=7; i<10; i++){
        sum+=GetPrcD1(symb[i]);
        Content[6][1]=DoubleToStr(sum/3,3);
        }

        for (i=10; i<13; i++){
        sum+=GetPrcD1(symb[i]);
        Content[7][1]=DoubleToStr(sum/3,3);
        }

        for (i=13; i<16; i++){
        sum+=GetPrcD1(symb[i]);
        Content[8][1]=DoubleToStr(sum/3,3);
        }

        for (i=16; i<19; i++){
        sum+=GetPrcD1(symb[i]);
        Content[9][1]=DoubleToStr(sum/3,3);
        }
Причина обращения: