[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 212

 
Доброго всем дня.Две МА пересекаются много раз на графике.Можно ли подсчитать количество баров после КАЖДОГО пересечения МА.После последнего-получается,а вот после КАЖДОГО-нет!Может кто-нибудь знает,как это сделать?
 
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. Когда обратное пересечение, отсчёт другого счётчика пошёл.
 
alsu:

Не поняли друг друга, видимо

В общем, место локализации проблемы определилось - переменная static. 

Но вот почему функция с такой переменной, скомпилированная в одном файле с индикатором работает без проблем (переинициализация проходит успешно и все работает штатно), а при обращении к этой же функции, помещенной в библиотеку, возникают проблемы? 

Может быть, есть какие-то ограничения по использованию определенных типов в библиотечных функциях?

 
ау есть кто?
 
polycomp:

В общем, место локализации проблемы определилось - переменная static. 

Но вот почему функция с такой переменной, скомпилированная в одном файле с индикатором работает без проблем (переинициализация проходит успешно и все работает штатно), а при обращении к этой же функции, помещенной в библиотеку, возникают проблемы? 

Может быть, есть какие-то ограничения по использованию определенных типов в библиотечных функциях?



Я не разработчик, и могу только предполагать. Так вот, предполагаю, что при переинициализации после изменения параметров ex4 не выгружается из памяти, из-за чего при новом запуске мы попадаем в ту же самую копию библы, что и раньше, со всеми статиками и их старыми значениями.

По идее все статики программы должны инициализироваться перед вызовом init(). Но библиотека ex4 подгружается только непосредственно в момент первого вызова библиотечной функции, поэтому в общую кучу библиотечные статики не попадают.

Если так посмотреть на все это дело, то  получается объяснение вполне логичное.

 

Вот имеется функция StringGetChar https://docs.mql4.com/ru/objects/ObjectFind

 Зачем она нужна вообще?

Согласно учебника возвращает значение символа в виде цифры. Там символу "с" соответствует значение 99. Как это понять? Какое применение вообще у данной функции?

Ну возвратила она цифру... и что это даёт?

Хочу научиться работать со строками, вот попалась функция. Потому и спрашиваю.

 
alsu:

Я не разработчик, и могу только предполагать. Так вот, предполагаю, что при переинициализации после изменения параметров ex4 не выгружается из памяти, из-за чего при новом запуске мы попадаем в ту же самую копию библы, что и раньше, со всеми статиками и их старыми значениями.

По идее все статики программы должны инициализироваться перед вызовом init(). Но библиотека ex4 подгружается только непосредственно в момент первого вызова библиотечной функции, поэтому в общую кучу библиотечные статики не попадают.

Если так посмотреть на все это дело, то  получается объяснение вполне логичное.


Спасибо за разъяснение! Похоже, что статики лучше не использовать в библиотеках.
 

Имею в своей голове  массив из 3000 однотипных  значений .

Но не совсем понимаю как инициализировать этими значениями одномерный массив.

Не понимаю - неужели все 3000 значений я должен указать через запятую в операторе присваивания при инициализации массива

int Mas_i[3000]=    {    (Bid>1.2153)&&(Bid<1.2160) , (Bid>1.2156)&&(Bid<1.2163)  ...неужели нужно перечислять все 3000 выражений   };

Подскажите пожалуйста,или скажите где почитать.В учебнике С.Ковалева , как мне кажется,я не нашел ответа на этот вопрос.....или не понял.

Спасибо.

 
hoz:

Вот имеется функция StringGetChar https://docs.mql4.com/ru/objects/ObjectFind

 Зачем она нужна вообще?

Согласно учебника возвращает значение символа в виде цифры. Там символу "с" соответствует значение 99. Как это понять? Какое применение вообще у данной функции?

Ну возвратила она цифру... и что это даёт?

Хочу научиться работать со строками, вот попалась функция. Потому и спрашиваю.


Чтобы писать в чарте (не путать с комментом) должен кодировать цифровым кодом. Пропишешь 99, на чарте появится буква "с". Я ещё этим не занимался, но в Доке можно найти, как всё делать и с каким шрифтом, размером, с ориентировкой по осям X и Y в пикселях и т.д. Если тебе уже только этого не хватает, вперёд, но времени займёт немало! Успехов!
Причина обращения: