Доброго всем дня.Две МА пересекаются много раз на графике.Можно ли подсчитать количество баров после КАЖДОГО пересечения МА.После последнего-получается,а вот после КАЖДОГО-нет!Может кто-нибудь знает,как это сделать?
MK07: Доброго всем дня.Две МА пересекаются много раз на графике.Можно ли подсчитать количество баров после КАЖДОГО пересечения МА.После последнего-получается,а вот после КАЖДОГО-нет!Может кто-нибудь знает,как это сделать?
Смотря для чего нужно. Для советника - один алгоритм, для индикатора - другой.
Вообще, примерно так: Создайм переменную, в которой будем хранить количество пересечений. Можно две - для вверх и для вниз, например Intersection_UP и Intersection_DN.
Перед циклом инициализируем их нулями.
Делаем цикл от первого бара до Bars : for (int i=1; i<Bars; i++) { // тело цикла, где считаем пересечения ... }.
При каждом пересечении на баре i ма1 снизу вверх ма2 увеличиваем Intersection_UP, при каждом пересечении на баре i ма1 сверху вниз ма2 увеличиваем Intersection_DN.
По окончании цикла имеем в двух переменных количество пересечений вверх и вниз. Сложив их, получим общее количество пересечений
MK07: Доброго всем дня.Две МА пересекаются много раз на графике.Можно ли подсчитать количество баров после КАЖДОГО пересечения МА.После последнего-получается,а вот после КАЖДОГО-нет!Может кто-нибудь знает,как это сделать?
Оно ж просто. Фиксируешь пересечение, и создаёшь счётчик. Когда пересечение есть, счётчик каждый бар прибавляет по 1. Когда обратное пересечение, отсчёт другого счётчика пошёл.
В общем, место локализации проблемы определилось - переменная static.
Но вот почему функция с такой переменной, скомпилированная в одном файле с индикатором работает без проблем (переинициализация проходит успешно и все работает штатно), а при обращении к этой же функции, помещенной в библиотеку, возникают проблемы?
Может быть, есть какие-то ограничения по использованию определенных типов в библиотечных функциях?
В общем, место локализации проблемы определилось - переменная static.
Но вот почему функция с такой переменной, скомпилированная в одном файле с индикатором работает без проблем (переинициализация проходит успешно и все работает штатно), а при обращении к этой же функции, помещенной в библиотеку, возникают проблемы?
Может быть, есть какие-то ограничения по использованию определенных типов в библиотечных функциях?
Я не разработчик, и могу только предполагать. Так вот, предполагаю, что при переинициализации после изменения параметров ex4 не выгружается из памяти, из-за чего при новом запуске мы попадаем в ту же самую копию библы, что и раньше, со всеми статиками и их старыми значениями.
По идее все статики программы должны инициализироваться перед вызовом init(). Но библиотека ex4 подгружается только непосредственно в момент первого вызова библиотечной функции, поэтому в общую кучу библиотечные статики не попадают.
Если так посмотреть на все это дело, то получается объяснение вполне логичное.
Вот имеется функция StringGetCharhttps://docs.mql4.com/ru/objects/ObjectFind
Зачем она нужна вообще?
Согласно учебника возвращает значение символа в виде цифры. Там символу "с" соответствует значение 99. Как это понять? Какое применение вообще у данной функции?
Ну возвратила она цифру... и что это даёт?
Хочу научиться работать со строками, вот попалась функция. Потому и спрашиваю.
Я не разработчик, и могу только предполагать. Так вот, предполагаю, что при переинициализации после изменения параметров ex4 не выгружается из памяти, из-за чего при новом запуске мы попадаем в ту же самую копию библы, что и раньше, со всеми статиками и их старыми значениями.
По идее все статики программы должны инициализироваться перед вызовом init(). Но библиотека ex4 подгружается только непосредственно в момент первого вызова библиотечной функции, поэтому в общую кучу библиотечные статики не попадают.
Если так посмотреть на все это дело, то получается объяснение вполне логичное.
Спасибо за разъяснение! Похоже, что статики лучше не использовать в библиотеках.
Согласно учебника возвращает значение символа в виде цифры. Там символу "с" соответствует значение 99. Как это понять? Какое применение вообще у данной функции?
Ну возвратила она цифру... и что это даёт?
Хочу научиться работать со строками, вот попалась функция. Потому и спрашиваю.
Чтобы писать в чарте (не путать с комментом) должен кодировать цифровым кодом. Пропишешь 99, на чарте появится буква "с". Я ещё этим не занимался, но в Доке можно найти, как всё делать и с каким шрифтом, размером, с ориентировкой по осям X и Y в пикселях и т.д. Если тебе уже только этого не хватает, вперёд, но времени займёт немало! Успехов!
Доброго всем дня.Две МА пересекаются много раз на графике.Можно ли подсчитать количество баров после КАЖДОГО пересечения МА.После последнего-получается,а вот после КАЖДОГО-нет!Может кто-нибудь знает,как это сделать?
Смотря для чего нужно. Для советника - один алгоритм, для индикатора - другой.
Вообще, примерно так: Создайм переменную, в которой будем хранить количество пересечений. Можно две - для вверх и для вниз, например Intersection_UP и Intersection_DN.
Перед циклом инициализируем их нулями.
Делаем цикл от первого бара до Bars : for (int i=1; i<Bars; i++) { // тело цикла, где считаем пересечения ... }.
При каждом пересечении на баре i ма1 снизу вверх ма2 увеличиваем Intersection_UP, при каждом пересечении на баре i ма1 сверху вниз ма2 увеличиваем Intersection_DN.
По окончании цикла имеем в двух переменных количество пересечений вверх и вниз. Сложив их, получим общее количество пересечений
Доброго всем дня.Две МА пересекаются много раз на графике.Можно ли подсчитать количество баров после КАЖДОГО пересечения МА.После последнего-получается,а вот после КАЖДОГО-нет!Может кто-нибудь знает,как это сделать?
Оно ж просто. Фиксируешь пересечение, и создаёшь счётчик. Когда пересечение есть, счётчик каждый бар прибавляет по 1. Когда обратное пересечение, отсчёт другого счётчика пошёл.
Не поняли друг друга, видимо
В общем, место локализации проблемы определилось - переменная static.
Но вот почему функция с такой переменной, скомпилированная в одном файле с индикатором работает без проблем (переинициализация проходит успешно и все работает штатно), а при обращении к этой же функции, помещенной в библиотеку, возникают проблемы?
Может быть, есть какие-то ограничения по использованию определенных типов в библиотечных функциях?
В общем, место локализации проблемы определилось - переменная static.
Но вот почему функция с такой переменной, скомпилированная в одном файле с индикатором работает без проблем (переинициализация проходит успешно и все работает штатно), а при обращении к этой же функции, помещенной в библиотеку, возникают проблемы?
Может быть, есть какие-то ограничения по использованию определенных типов в библиотечных функциях?
Я не разработчик, и могу только предполагать. Так вот, предполагаю, что при переинициализации после изменения параметров ex4 не выгружается из памяти, из-за чего при новом запуске мы попадаем в ту же самую копию библы, что и раньше, со всеми статиками и их старыми значениями.
По идее все статики программы должны инициализироваться перед вызовом init(). Но библиотека ex4 подгружается только непосредственно в момент первого вызова библиотечной функции, поэтому в общую кучу библиотечные статики не попадают.
Если так посмотреть на все это дело, то получается объяснение вполне логичное.
Вот имеется функция StringGetChar https://docs.mql4.com/ru/objects/ObjectFind
Зачем она нужна вообще?
Согласно учебника возвращает значение символа в виде цифры. Там символу "с" соответствует значение 99. Как это понять? Какое применение вообще у данной функции?
Ну возвратила она цифру... и что это даёт?
Хочу научиться работать со строками, вот попалась функция. Потому и спрашиваю.
Я не разработчик, и могу только предполагать. Так вот, предполагаю, что при переинициализации после изменения параметров ex4 не выгружается из памяти, из-за чего при новом запуске мы попадаем в ту же самую копию библы, что и раньше, со всеми статиками и их старыми значениями.
По идее все статики программы должны инициализироваться перед вызовом init(). Но библиотека ex4 подгружается только непосредственно в момент первого вызова библиотечной функции, поэтому в общую кучу библиотечные статики не попадают.
Если так посмотреть на все это дело, то получается объяснение вполне логичное.
Имею в своей голове массив из 3000 однотипных значений .
Но не совсем понимаю как инициализировать этими значениями одномерный массив.
Не понимаю - неужели все 3000 значений я должен указать через запятую в операторе присваивания при инициализации массива
int Mas_i[3000]= { (Bid>1.2153)&&(Bid<1.2160) , (Bid>1.2156)&&(Bid<1.2163) ...неужели нужно перечислять все 3000 выражений };
Подскажите пожалуйста,или скажите где почитать.В учебнике С.Ковалева , как мне кажется,я не нашел ответа на этот вопрос.....или не понял.
Спасибо.
Вот имеется функция StringGetChar https://docs.mql4.com/ru/objects/ObjectFind
Зачем она нужна вообще?
Согласно учебника возвращает значение символа в виде цифры. Там символу "с" соответствует значение 99. Как это понять? Какое применение вообще у данной функции?
Ну возвратила она цифру... и что это даёт?
Хочу научиться работать со строками, вот попалась функция. Потому и спрашиваю.
Чтобы писать в чарте (не путать с комментом) должен кодировать цифровым кодом. Пропишешь 99, на чарте появится буква "с". Я ещё этим не занимался, но в Доке можно найти, как всё делать и с каким шрифтом, размером, с ориентировкой по осям X и Y в пикселях и т.д. Если тебе уже только этого не хватает, вперёд, но времени займёт немало! Успехов!