[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 404

 
Vinin писал(а) >>

Пересечение проще и быстрее проверять по другому

Скорость работы выше. Логические сложные выражение выполняются дольше простых. Умножение быстрее логического

Спасибо Vinin, а как насчёт количества сделок, можно ли написать, чтобы их было только 1.2...N, после пересечения МА.

 
Vinin >>:

Пересечение проще и быстрее проверять по другому

Скорость работы выше. Логические сложные выражение выполняются дольше простых. Умножение быстрее логического

еще один вариант, но думаю вопрошающему пока этого не понять

 
Stanislav.exe писал(а) >>

Спасибо Vinin, а как насчёт количества сделок, можно ли написать, чтобы их было только 1.2...N, после пересечения МА.

Видимо нужно учитывать дополнительные условия для входа.

И считать количество открытых позиций.

Но к пересечению это уже имеет мало отношения.

Потому как может в одном случае был только один сигнал, во втором 10.

Но для начала надо определиться с условиями для дополнительного входа

 
Vinin писал(а) >>

Видимо нужно учитывать дополнительные условия для входа.

И считать количество открытых позиций.

Но к пересечению это уже имеет мало отношения.

Потому как может в одном случае был только один сигнал, во втором 10.

Но для начала надо определиться с условиями для дополнительного входа

ОК, постараюсь разобраться глубже, большое спасибо Vilin и sanyooooook за помощь.

 

double Lots;
double m = 0.1;


for (m = 0.1; AccountFreeMarginCheck(Symbol(),OP_SELL,m)>150; m = m + 0.1)
{
Lots = m;
}

Почему у меня Lots всегда оказывается равен нулю?

 
Noterday >>:

double Lots;
double m = 0.1;


for (m = 0.1; AccountFreeMarginCheck(Symbol(),OP_SELL,m)>150; m = m + 0.1)
{
Lots = m;
}

Почему у меня Lots всегда оказывается равен нулю?


А цикл выполняется или сразу выходит по условию?

https://docs.mql4.com/ru/basis/operators/for

Выражение1 описывает инициализацию цикла. Выражение2 - проверка условия завершения цикла. Если оно истинно, то выполняется оператор тела цикла for. Все повторяется, пока выражение2 не станет ложным. Если оно ложно, циклзаканчивается и управление передается следующему оператору. ВыражениеЗ вычисляется после каждой итерации.
for(выражение1; выражение2; выражение3)
оператор;

 
Видимо сразу выходит... Вставил алерт в цикл - нифига ниразу...
 

Добрый вечер. Возникла проблема с терминалом, никак не могу исправить:

Загружаю МТ4, загружаю шаблон, рисую трендовые, и при переключении ТФ линии исчезают, в т.ч. не отображаются и на первоначальном временном интервале. При этом вся остальная графика (горизонтальные, вертикальные линии, каналы, все фибо и тп) нормально работает. На чистом ("бесшаблонном") графике, разметка сохраняется полностью, на тех же индюках все раньше прекрасно работало. Советники, эксперты отключены. Работаю в основном по графике, выручайте!!!

 

Здравствуйте,

Как сделать чтобы советник не закрывал сделку раньше 3 мин.??

Может кто подскажет, что и где прописать?

 
Vinin писал(а) >>

Начинать надо с логики. Что и как ты хотел получить.

Ну, логика вроде в коментариях расписана...

Я убрал возвраты и получилось так:

//попытка сделать функцию: отключение всех  индикаторов и разрешение только Бай или Селл в зависимости от того, 
//что закуплено, когда баланс снижается на заданный процент
//второй вариант:

bool fOffInd(){
int i,b,s;
   if(UT_AutoOf==1){
   //если баланс снизился на LossIndikator процентов
       if(gProfit<=((-1.0)*LossIndikator*AccountBalance())/100.0){
          Print ("Включен автореверс UT_!");
          UT_ON=0; //выключатель индикатора, 0-контроль отключен
          VRF_ON=0;//выключатель индикатора, 0-контроль отключен
     //выбираем открытые ордера Бай       
   for( i=1; i<=OrdersTotal(); i++){        
      if(OrderSelect(i-1,SELECT_BY_POS)==true){   
           if(OrderType()==OP_BUY && OrderSymbol()==Symbol()){b=b+1;}
          }   
        }
   //выбираем открытые ордера Селл     
   for( i=1; i<=OrdersTotal(); i++){        
      if(OrderSelect(i-1,SELECT_BY_POS)==true){   
           if(OrderType()==OP_SELL && OrderSymbol()==Symbol()){s=s+1;}
          }   
        }
   //если открытых Бай больше чем Селл, то включаем запрет торговли Бай     
       if(s>=b){CloseAllBuyNow  = true;
        MaxCount = b;
         Print ("Автореверс. Работаем только Селл!");
          }
       else{
   //если открытых Селл больше чем Селл, то включаем запрет торговли Селл    
       if(b>=s){CloseAllSellNow = true;
        MaxCount = s;
         Print ("Автореверс. Работаем только Бай!");
             }
           }
           return(false);
         }
       }
       else{
       //все индикаторы должны быть включены и запрет на Бай и Селл снят
          UT_ON=1;
          VRF_ON=1;
          CloseAllBuyNow  = false;
          CloseAllSellNow = false;
    }
   return(0);    
} 
Вроде зарабоатло, насколько корректно записан код - не знаю... Если что не так - кто нибудь может подправит?
Причина обращения: