Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 589
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
При по шаговой проверке индикатора обнаружил дребезг срабатываний в подпрограмме, стоящей за if {} и в котором нет W. Для пояснения сути вопроса привожу упрощенный код:
//--- input parameters
input int w=10;
//---
{
int i;
//---
int co=0;
for(i=0;i<=w;i++)if(w==10){co++; Alert(co);}
//--- return value of prev_calculated for next call
return(rates_total);
}
Результат (арлеты):
2016.05.30 00:45:14.064 1 (EURUSD,H1) 11
2016.05.30 01:10:35.972 1 (EURUSD,H1) 10
........... и т.д. до 1.
2016.05.30 00:45:14.064 1 (EURUSD,H1) 1
Правило: Если выражение в скобках истинно, то выполняется оператор1.
В коде: оператор1 выполняется ВСЕГДА.
По моему if()должно сработать только один раз, при истинности условия в скобках. А по факту срабатывает при каждой проверке условия и все выражения в {} выполняются на каждом шаге и жуют машинное время.
Вопросы : ПОЧЕМУ переменная CO выросла за цикл от 0 до 11? Почему Alert срабатывает на каждом шаге?
Ну сколько можно повторять-то вам?
Смотрите: у вас w равна 10,
Проверяете w на равность 10: "if(w==10){co++; Alert(co);}" Как считаете, это выражение истинно?
Тогда почему вопрос у вас?
При по шаговой проверке индикатора обнаружил дребезг срабатываний в подпрограмме, стоящей за if {} и в котором нет W. Для пояснения сути вопроса привожу упрощенный код:
//--- input parameters
input int w=10;
//---
{
int i;
//---
int co=0;
for(i=0;i<=w;i++)if(w==10){co++; Alert(co);}
//--- return value of prev_calculated for next call
return(rates_total);
}
Результат (арлеты):
2016.05.30 00:45:14.064 1 (EURUSD,H1) 11
2016.05.30 01:10:35.972 1 (EURUSD,H1) 10
........... и т.д. до 1.
2016.05.30 00:45:14.064 1 (EURUSD,H1) 1
Правило: Если выражение в скобках истинно, то выполняется оператор1.
В коде: оператор1 выполняется ВСЕГДА.
По моему if()должно сработать только один раз, при истинности условия в скобках. А по факту срабатывает при каждой проверке условия и все выражения в {} выполняются на каждом шаге и жуют машинное время.
Вопросы : ПОЧЕМУ переменная CO выросла за цикл от 0 до 11? Почему Alert срабатывает на каждом шаге?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Andrey Barinov, 2016.05.30 10:38
Судя по всему у вас опечатка в коде, и хотели написать вот так:
Здравствуйте Господа! У меня возникла небольшая проблемка в написании советника(( советник открывает отложенные ордера в большинстве случаев все нормально но иногда открыть ордера нужно очень близко к текущей цене, так вот как прописать что бы отложенные ордера открывались МАКСИМАЛЬНО близко из возможного?
Ну сколько можно повторять-то вам?
Смотрите: у вас w равна 10,
Проверяете w на равность 10: "if(w==10){co++; Alert(co);}" Как считаете, это выражение истинно?
Тогда почему вопрос у вас?
Приношу свои извинения за дурацкий вопрос и благодарю Вас за Ваше терпение и понимание. Подвел механический перенос пробника if(w==10){ Alert(I,"/",F); по программе в поисках ошибки по шагам. Такое бывает, когда упираешься в стену собственного не понимания причины, но стоит не надолго отстраниться от проблемы и вопрос решается как бы сам собой. И то, что воспринималось как "дребезг", на самом деле оказывается не учтенным запросом из другой части программы. С благодарностью, Владимир.
Здравствуйте, помогите, пожалуйста, с математикой.
Как узнать каким будет лот пятой позиции, если известен лот первoй и то, что лот каждой новой позиции увеличивается в арифметической прогрессии.
Второй вариант лот увеличивается с геометрической прогрессией.
Здравствуйте, помогите, пожалуйста, с математикой.
Как узнать каким будет лот пятой позиции, если известен лот первoй и то, что лот каждой новой позиции увеличивается в арифметической прогрессии.
Второй вариант лот увеличивается с геометрической прогрессией.
В гугле забанили? Сочувствую, за что вас так жестоко? ))
арифметическая прогрессия задана формулой
геометрическая прогрессия задана формулой
Не соображаю, по идее для первого варианта достаточно первый лот умножить на 5, если увеличивается на старт лот
Для второго варианта: лот первой позиции* коэффициент*5 …но
Не соображаю, по идее для первого варианта достаточно первый лот умножить на 5
Для второго варианта лот первой позиции* коэффициент*5 …но
Да ничего, сам со школы математику забыл )) Откопал книгу по математике, перепечатываю определение ариф. прогрессии, тут понятнее написано.
-------------
Последовательность чисел, каждое из которых, начиная со второго, получается из предыдущего прибавлением постоянного числа d, называемого разность ариф. прогр.
Если первый член a1, то ариф. прогр. с длиной n имеет вид:
a1, a1+d, a1+2*d, ...., a1 + n*d
код на MQL вот такой, накидал простой примерчик
Да ничего, сам со школы математику забыл ))