Выражение1 описывает инициализацию цикла. Выражение2 - проверка условия завершения цикла. Если оно истинно, то выполняется оператор тела цикла for. Все повторяется, пока выражение2 не станет ложным. Если оно ложно, циклзаканчивается и управление передается следующему оператору. ВыражениеЗ вычисляется после каждой итерации. for(выражение1; выражение2; выражение3) оператор;
Добрый вечер. Возникла проблема с терминалом, никак не могу исправить:
Загружаю МТ4, загружаю шаблон, рисую трендовые, и при переключении ТФ линии исчезают, в т.ч. не отображаются и на первоначальном временном интервале. При этом вся остальная графика (горизонтальные, вертикальные линии, каналы, все фибо и тп) нормально работает. На чистом ("бесшаблонном") графике, разметка сохраняется полностью, на тех же индюках все раньше прекрасно работало. Советники, эксперты отключены. Работаю в основном по графике, выручайте!!!
Начинать надо с логики. Что и как ты хотел получить.
Ну, логика вроде в коментариях расписана...
Я убрал возвраты и получилось так:
//попытка сделать функцию: отключение всех индикаторов и разрешение только Бай или Селл в зависимости от того, //что закуплено, когда баланс снижается на заданный процент//второй вариант: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);}
Вроде зарабоатло, насколько корректно записан код - не знаю... Если что не так - кто нибудь может подправит?
Пересечение проще и быстрее проверять по другому
Скорость работы выше. Логические сложные выражение выполняются дольше простых. Умножение быстрее логическогоСпасибо Vinin, а как насчёт количества сделок, можно ли написать, чтобы их было только 1.2...N, после пересечения МА.
Пересечение проще и быстрее проверять по другому
Скорость работы выше. Логические сложные выражение выполняются дольше простых. Умножение быстрее логическогоеще один вариант, но думаю вопрошающему пока этого не понять
Спасибо Vinin, а как насчёт количества сделок, можно ли написать, чтобы их было только 1.2...N, после пересечения МА.
Видимо нужно учитывать дополнительные условия для входа.
И считать количество открытых позиций.
Но к пересечению это уже имеет мало отношения.
Потому как может в одном случае был только один сигнал, во втором 10.
Но для начала надо определиться с условиями для дополнительного входа
Видимо нужно учитывать дополнительные условия для входа.
И считать количество открытых позиций.
Но к пересечению это уже имеет мало отношения.
Потому как может в одном случае был только один сигнал, во втором 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 всегда оказывается равен нулю?
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 мин.??
Может кто подскажет, что и где прописать?
Начинать надо с логики. Что и как ты хотел получить.
Ну, логика вроде в коментариях расписана...
Я убрал возвраты и получилось так:
Вроде зарабоатло, насколько корректно записан код - не знаю... Если что не так - кто нибудь может подправит?