не забывайте обнулять элементы до начала использования
и дальше увеличивайте счёт, где надо
потом сравнивайте
Сейчас Вы сделали обход циклом 10 предыдущих свечей на каждой новой свече. Это не рационально. Нужно всегда избавляться от лишних циклов, запоминая результаты расчётов предыдущих значений. В Вашем случае, при поступлении новой свечи просто увеличивайте счёт при выполнении условия, а если условие не выполняется, то отнимайте. И проверяйте, нет ли превышения. Ваш цикл на 10 элементов не нужен, только основной.
Aleksei, попробывал сделать, но что все равно работает не так:
не плюсует по единице к count.up
for(int i=1;i<=10;i++)
{
count.up=0;
count.dn=0;
double hig10 = iMA (NULL,CP,WPER, 0, MODE_SMA, PRICE_CLOSE, i);
if (hig10>iClose(Symbol(),CP,i))
{
count.up++;
}
else
{
count.dn++;
}
}
if (count.up>=8)
{
Comment("dsdsD");
}
Подскажите пожалуйста. У меня есть пользовательские функции в отдельных файлах .mqh прописал их через #include, вызываю в старте по очередности, когда старт переходит в одну функцию, то в зависимости от действий программе нужно обратиться к другому файлу .mqh (к примеру для получения значения по объему ордера) и этого не происходит. Если же прописываю все в одном листе, то работает или если прописываю формулу расчета лота прямо в параметрах открытия ордера. Смотрел уроки по MQL4, читал справку по программе и ничего не нашел в итоге. Это ведь придумано для того, чтобы в программе был порядок и структура, так почему одна функция .mqh не может взаимодействовать с другой функцией .mqh в рамках выполнения расчетов - мне совсем не ясно. Или нужно делать чтобы программа при возникновении такой необходимости возвращалась в start - переходила в функцию расчета лота .mqh та возвращала результат в start и после чего start с этим расчетом шел обратно в функцию открытия ордера .mqh ? Бред какой-то... Или нужно как-то по-другому объявить все имеющиеся функции для их совместного взаимодействия? Спасибо
Denis Diakonov: Подскажите пожалуйста. У меня есть пользовательские функции в отдельных файлах .mqh прописал их через #include, вызываю в старте по очередности, когда старт переходит в одну функцию, то в зависимости от действий программе нужно обратиться к другому файлу .mqh (к примеру для получения значения по объему ордера) и этого не происходит. Если же прописываю все в одном листе, то работает или если прописываю формулу расчета лота прямо в параметрах открытия ордера. Смотрел уроки по MQL4, читал справку по программе и ничего не нашел в итоге. Это ведь придумано для того, чтобы в программе был порядок и структура, так почему одна функция .mqh не может взаимодействовать с другой функцией .mqh в рамках выполнения расчетов - мне совсем не ясно. Или нужно делать чтобы программа при возникновении такой необходимости возвращалась в start - переходила в функцию расчета лота .mqh та возвращала результат в start и после чего start с этим расчетом шел обратно в функцию открытия ордера .mqh ? Бред какой-то... Или нужно как-то по-другому объявить все имеющиеся функции для их совместного взаимодействия? Спасибо
Обращайтесь из функций не к файлам, а к функциям, если подключились через инклюд. Если я вас правильно понял, конечно.
Попытался переписать чужой индюк "olyakish_fractals_01"" под свою идею , мой построен на Зеленых барах Вильямса. Но по причине моего полного не знания MQL4 я что то не то написал и он не отображается на графике. Если кто соображает, помогите, если вам это ничего не стоит.)
Лучше даже сделать структуру
не забывайте обнулять элементы до начала использования
и дальше увеличивайте счёт, где надо
потом сравнивайте
Сейчас Вы сделали обход циклом 10 предыдущих свечей на каждой новой свече. Это не рационально. Нужно всегда избавляться от лишних циклов, запоминая результаты расчётов предыдущих значений. В Вашем случае, при поступлении новой свечи просто увеличивайте счёт при выполнении условия, а если условие не выполняется, то отнимайте. И проверяйте, нет ли превышения. Ваш цикл на 10 элементов не нужен, только основной.Aleksei, попробывал сделать, но что все равно работает не так:
не плюсует по единице к count.up
Надо убрать из цикла
а то на каждой итерации Вы обнуляете предыдущие значения. Напишите это до цикла.
Надо убрать из цикла
а то на каждой итерации Вы обнуляете предыдущие значения. Напишите это до цикл
Спасибо большое теперь считает!
Однако странно я проделывал тоже самое без структуры, а просто с обычными значениями что то вроде
и он начинал плюсовать каждый тик))
Со структурой тоже будет тикать. Для работы только в начале новой свечи необходимо отслеживать время этой свечи
Как проще сего избавится в строке от года (2020) и минут? В TimeToStr нет еще другие форматы вывода?
Добрый день!
Как проще сего избавится в строке от года (2020) и минут? В TimeToStr нет еще другие форматы вывода?
tm=(string)Hour();Спасибо!
Подскажите пожалуйста. У меня есть пользовательские функции в отдельных файлах .mqh прописал их через #include, вызываю в старте по очередности, когда старт переходит в одну функцию, то в зависимости от действий программе нужно обратиться к другому файлу .mqh (к примеру для получения значения по объему ордера) и этого не происходит. Если же прописываю все в одном листе, то работает или если прописываю формулу расчета лота прямо в параметрах открытия ордера. Смотрел уроки по MQL4, читал справку по программе и ничего не нашел в итоге. Это ведь придумано для того, чтобы в программе был порядок и структура, так почему одна функция .mqh не может взаимодействовать с другой функцией .mqh в рамках выполнения расчетов - мне совсем не ясно. Или нужно делать чтобы программа при возникновении такой необходимости возвращалась в start - переходила в функцию расчета лота .mqh та возвращала результат в start и после чего start с этим расчетом шел обратно в функцию открытия ордера .mqh ? Бред какой-то... Или нужно как-то по-другому объявить все имеющиеся функции для их совместного взаимодействия? Спасибо
Обращайтесь из функций не к файлам, а к функциям, если подключились через инклюд. Если я вас правильно понял, конечно.