Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я не понял, что не так. Это линия минимумов.
На всякий пожарный, скопируйте код по-новой, я там менял периодически, возможно, у Вас старая версия
Да да версию надо менять при правке кода.
AUDUSD вроде норм
Пройдусь по EURUSD за паять лет. Будет долго
Можно сразу добавить неделю и месяц если не сложно ? и сразу сдвиг лейблов как на примере , чтоб глаза не съехали.
Чтоб десять раз не смотреть этот график. ( и так на на зубок знаю всю историю)
Думаю за месяц управлюсь 8 пар нужно протестить.
Сам пока в ваш код не полезу ( буду разбирается в процессе по тихонько с Классами . тд.на вашем примере)
Чуть не забыл (сделать аллерт типа предупреждение если нет истории или линия не изменила свои значения)
Новая версия. Здесь рисует три периода: день, неделя и месяц. Есть одно но, ниже напишу.
Нюанс заключается в том, что в одном случае мы сравниваем предыдущий день с историей, а в другом предыдущую неделю. Получается, что вчера у нас может принадлежать текущей неделе, но его максимум может быть больше максимума предыдущей недели.
И поскольку мы сравниваем дни с днями, а недели с неделями, может оказаться, что линии максимумов дней окажутся выше недельных. Как здесь:
Но это Ваша логика, думайте, надо оно или нет.
кстати вот и ошибка выхода за пределы массива нашлась:
Цикл проходит по массиву дневных баров, а выбираем элементы из массива недельных.
Выражаю благодарность Dmitry Fedoseev за идею получения номера недели в году.
Которую подсмотрел в этой статье: https://www.mql5.com/ru/articles/599
Ну прямо молодец, Дима!кстати вот и ошибка выхода за пределы массива нашлась:
Цикл проходит по массиву дневных баров, а выбираем элементы из массива недельных.
Да тут явная ошибка, эту строку добавили в процессе обсуждения и копи-паст сыграл свою рол .
Изначально было так , и выход за пределы массива по прежнему актуален.
Хотя казалось бы можно забыть об ошибки array out of range in , в связи тем что вы не поленились и предоставили намного продвинутый код ( за это Вам отдельное огромное спасибо )
Но всё-таки хочется разобраться в чем собственно проблема ( так как обращение к этому массиву есть и с других мест советника и что там происходит остаётся загадкой)
Было замечание ( А куда сохраняется возвращаемое значение типа int? Вы все данные в функцию передали, но ни хрена из неё не получили.) добавил .
Было так:
ArrayCopyRates(Bar_data_D1,_Symbol,PERIOD_D1); // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров
ArrayCopyRates(Bar_data_W1,_Symbol,PERIOD_W1); // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров
ArrayCopyRates(Bar_data_MN1,_Symbol,PERIOD_MN1); // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров
Стало так:
ACR_D1 = ArrayCopyRates(Bar_data_D1,_Symbol,PERIOD_D1); // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров
ACR_W1 = ArrayCopyRates(Bar_data_W1,_Symbol,PERIOD_W1); // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров
ACR_MN1 = ArrayCopyRates(Bar_data_MN1,_Symbol,PERIOD_MN1); // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров
Вывел значение в сомент
2020.12.12 16:51:31.536 2020.02.10 00:05:00 _Test AUDUSD,H1: i = 1001 Bar_data_D1 [i][2] = 0.7633799999999999
2020.12.12 16:51:31.536 2020.02.10 00:05:00 _Test AUDUSD,H1: i = 1002 Bar_data_D1 [i][2] = 0.76147
2020.12.12 16:51:31.536 2020.02.10 00:05:00 _Test AUDUSD,H1: i = 1003 Bar_data_D1 [i][2] = 0.75097
2020.12.12 16:51:31.536 2020.02.10 00:05:00 _Test AUDUSD,H1: array out of range in '_Test.mq4' (150,59)
2020.12.12 16:51:31.537 2020.02.10 00:05:00 Testing pass stopped due to a critical error in the EA
2020.12.12 16:51:31.537 AUDUSD,H1: 65147 tick events (73 bars, 9291875 bar states) processed in 0:00:02.407 (total time 0:00:05.672)
Почему так мало истории копирует в массив ?
И вообще от куда и как берутся эти значения ?
кстати вот и ошибка выхода за пределы массива нашлась:
Цикл проходит по массиву дневных баров, а выбираем элементы из массива недельных.
А сразу понять размер массива дневного ТФ и засечь время и за время не выходить.
Я бы наверное по другому решал с недельными. Получил бы на надельных уровни цен с датами, если они нужны и закинул бы их в отдельный массив и уже с этим массивом бы сравнивал. Вернее я так и делаю. Для каждого ТФ свой массив экстремумов.
ЗЫ сравнения не делаю, про массивы речь
А сразу понять размер массива дневного ТФ и засечь время и за время не выходить.
Я бы наверное по другому решал с недельными. Получил бы на надельных уровни цен с датами, если они нужны и закинул бы их в отдельный массив и уже с этим массивом бы сравнивал. Вернее я так и делаю. Для каждого ТФ свой массив экстремумов.
ЗЫ сравнения не делаю, про массивы речь
(Получил бы на надельных уровни цен с датами, если они нужны и закинул бы их в отдельный массив и уже с этим массивом бы сравнивал)
Мы не знаем какие нам будет нужны а какие нет, нужна вся возможная история все бары.
ArrayCopyRates
Копирует в массив данные баров указанного графика и возвращает количество скопированных баров.
int ArrayCopyRates(
MqlRates& rates_array[], // массив MqlRates, переданный по ссылке
string symbol=NULL, // инструмент
int timeframe=0 // таймфрейм
);
откуда не понятно ?
связь понять не могу
Видит 323 месяца это где-то приблизительно почти 27 лет , 1403 недель,7015 дней
История по AUDUSD c 1993 , 2020-1993= 27
(Получил бы на надельных уровни цен с датами, если они нужны и закинул бы их в отдельный массив и уже с этим массивом бы сравнивал)
Мы не знаем какие нам будет нужны а какие нет, нужна вся возможная история все бары.
ArrayCopyRates
Копирует в массив данные баров указанного графика и возвращает количество скопированных баров.
int ArrayCopyRates(
MqlRates& rates_array[], // массив MqlRates, переданный по ссылке
string symbol=NULL, // инструмент
int timeframe=0 // таймфрейм
);
откуда не понятно ?
связь понять не могу
Видит 323 месяца это где-то приблизительно почти 27 лет , 1403 недель,7015 дней
История по AUDUSD c 1993 , 2020-1993= 27
Нет понятия не знаем в том что можно измерить или определить. Сперва замеряем диапазон и знаем.
И если за 27 лет на дневных все экстремумы записать и выявить равные их будет слишком много. Задача аналогична выявлению копий на диске, только проще.