Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 573
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Попробую разобраться. Спасибо.
Не за что. Просто сохраняются в массив все high, а потом в цикле распечатываются в журнале все сохранённые в массиве данные.
Вовсе не обязательно, что этот скрипт делает именно то, что вам нужно. Просто показан принцип сохранения данных в массиве.
Не за что. Просто сохраняются в массив все high, а потом в цикле распечатываются в журнале все сохранённые в массиве данные.
Вовсе не обязательно, что этот скрипт делает именно то, что вам нужно. Просто показан принцип сохранения данных в массиве.
я именно это и искал. Мне нужно, было чтобы как-то сохранить данные в массив за тот период, который я выбираю. Эту часть я у вас понял.
Теперь у меня стоит вопрос, КАК обратиться к записанным данным в массиве и сравнить их между собой?
Тут получается, что поехали итерации, записали пошагово массив. Это хорошо. Но теперь нужно сравнить элементы между собой.
Нужно объявить новый счет итераций? и уже как-то извлекать данные и сравнивать их? Но это опять куда-то записывать результаты и ... все в итоге повторяется.
Грубо, если период сравнения 5-7 свечей, то у нас 1я должна быть сравнена с другими 6ю, потом 2я и т.д.... И если из них две или более имеют равную величину High, то нужно во-первых, вычислить этот High, во вторых, их этих свечек найти ту, у которой минимальный Low. Т.е. нужно обращение к конкретным свечам в итоге, чтобы все их параметры извлечь.
Можно ли вообще такое сделать.
я именно это и искал. Мне нужно, было чтобы как-то сохранить данные в массив за тот период, который я выбираю. Эту часть я у вас понял.
Теперь у меня стоит вопрос, КАК обратиться к записанным данным в массиве и сравнить их между собой?
Тут получается, что поехали итерации, записали пошагово массив. Это хорошо. Но теперь нужно сравнить элементы между собой.
Нужно объявить новый счет итераций? и уже как-то извлекать данные и сравнивать их? Но это опять куда-то записывать результаты и ... все в итоге повторяется.
Грубо, если период сравнения 5-7 свечей, то у нас 1я должна быть сравнена с другими 6ю, потом 2я и т.д.... И если из них две или более имеют равную величину High, то нужно во-первых, вычислить этот High, во вторых, их этих свечек найти ту, у которой минимальный Low. Т.е. нужно обращение к конкретным свечам в итоге, чтобы все их параметры извлечь.
Можно ли вообще такое сделать.
Вот тут как раз опрос сохранённого массива, и вывод всех сохранённых данных в журнал:
Давайте конкретизируем задачу:
Нужно в сохранённом массиве найти ... что конкретно?
Вот тут как раз опрос сохранённого массива, и вывод всех сохранённых данных в журнал:
Давайте конкретизируем задачу:
Нужно в сохранённом массиве найти ... что конкретно?
Мне нужно, записать массив из данных для всех закрытых свечей (т.е. текущую не считаем) - Хай, Лоу, Опен, Клоуз свечей (4 параметра) за период, который указывается в настройках. - это есть.
Далее, мне нужно сравнить параметры. Пусть период поиска равен 10 свечам. Вот нужно проверить все High за период 10 свечей. Если есть два или более совпадений, то нужно вернуть:
1. Флаг - "Совпадения есть".
1. Значение High, на котором нашлись одинаковые значения у свечек.
2. Номера этих свечей, чтобы можно было к ним обратиться и выяснить для них параметры Low, Close, Open.
В целом понятно многое из этого как сделать.
Не понятно как обратиться именно к тем свечкам, которые образуют уровень. По идее можно было бы при пересчете запоминать номер итерации (i), но у нас же сначала идет пересчет по которому идет запись в журнал, его не применишь.
А в том варианте, как идет вывод записей журнала - тут тоже не то, что требуется.
Я примерно понимаю, что мне нужно сначала взять свечу 1 и сравнить ее с 9ю другими, если найдется совпадение, то вычленить номера этих свечей и их параметры, включить флажок. Далее проверить свечу 2 с остальными и так до середины выборки, т.к. потом пойдут уже дубли сравнений только с другой стороны.
НО!! Если бы число свечей было фиксированным, я бы так и написал - грубо 5 циклов сравнений. Но вот как сделать возможность такого пересчета для любого размера выборки - вот вопрос.
Мне нужно, записать массив из данных для всех закрытых свечей (т.е. текущую не считаем) - Хай, Лоу, Опен, Клоуз свечей (4 параметра) за период, который указывается в настройках. - это есть.
Далее, мне нужно сравнить параметры. Пусть период поиска равен 10 свечам. Вот нужно проверить все High за период 10 свечей. Если есть два или более совпадений, то нужно вернуть:
1. Флаг - "Совпадения есть".
1. Значение High, на котором нашлись одинаковые значения у свечек.
2. Номера этих свечей, чтобы можно было к ним обратиться и выяснить для них параметры Low, Close, Open.
В целом понятно многое из этого как сделать.
Не понятно как обратиться именно к тем свечкам, которые образуют уровень. По идее можно было бы при пересчете запоминать номер итерации (i), но у нас же сначала идет пересчет по которому идет запись в журнал, его не применишь.
А в том варианте, как идет вывод записей журнала - тут тоже не то, что требуется.
Я примерно понимаю, что мне нужно сначала взять свечу 1 и сравнить ее с 9ю другими, если найдется совпадение, то вычленить номера этих свечей и их параметры, включить флажок. Далее проверить свечу 2 с остальными и так до середины выборки, т.к. потом пойдут уже дубли сравнений только с другой стороны.
НО!! Если бы число свечей было фиксированным, я бы так и написал - грубо 5 циклов сравнений. Но вот как сделать возможность такого пересчета для любого размера выборки - вот вопрос.
И, кстати, точное совпадение значений цен вряд ли будет частым. Нужно задать некую дельту, и считать совпадением значений если цены различаются не более этого значения.
Мне нужно, записать массив из данных для всех закрытых свечей (т.е. текущую не считаем) - Хай, Лоу, Опен, Клоуз свечей (4 параметра) за период, который указывается в настройках. - это есть.
Далее, мне нужно сравнить параметры. Пусть период поиска равен 10 свечам. Вот нужно проверить все High за период 10 свечей. Если есть два или более совпадений, то нужно вернуть:
1. Флаг - "Совпадения есть".
1. Значение High, на котором нашлись одинаковые значения у свечек.
2. Номера этих свечей, чтобы можно было к ним обратиться и выяснить для них параметры Low, Close, Open.
В целом понятно многое из этого как сделать.
Не понятно как обратиться именно к тем свечкам, которые образуют уровень. По идее можно было бы при пересчете запоминать номер итерации (i), но у нас же сначала идет пересчет по которому идет запись в журнал, его не применишь.
А в том варианте, как идет вывод записей журнала - тут тоже не то, что требуется.
Я примерно понимаю, что мне нужно сначала взять свечу 1 и сравнить ее с 9ю другими, если найдется совпадение, то вычленить номера этих свечей и их параметры, включить флажок. Далее проверить свечу 2 с остальными и так до середины выборки, т.к. потом пойдут уже дубли сравнений только с другой стороны.
НО!! Если бы число свечей было фиксированным, я бы так и написал - грубо 5 циклов сравнений. Но вот как сделать возможность такого пересчета для любого размера выборки - вот вопрос.
Вместо флага "совпадений" поставьте счетчик, на значении high где счетчик найбольший , есть уровень
Значения high можно округлить , например значение 1.23456 округляем до 1.2346
и значение 1.23462 округляем до 1.2346
потому что маловероятно что из 10 свечей , 2 будут иметь high равный 1.23456
т.е танцуйте от уровня
и число свечей у вас фиксированно, вы же записываете в структуру определенное количество данных
т.е сколько свечей записано в структуре столько и итераций
Мне нужно, записать массив из данных для всех закрытых свечей (т.е. текущую не считаем) - Хай, Лоу, Опен, Клоуз свечей (4 параметра) за период, который указывается в настройках. - это есть.
Далее, мне нужно сравнить параметры. Пусть период поиска равен 10 свечам. Вот нужно проверить все High за период 10 свечей. Если есть два или более совпадений, то нужно вернуть:
1. Флаг - "Совпадения есть".
1. Значение High, на котором нашлись одинаковые значения у свечек.
2. Номера этих свечей, чтобы можно было к ним обратиться и выяснить для них параметры Low, Close, Open.
В целом понятно многое из этого как сделать.
Не понятно как обратиться именно к тем свечкам, которые образуют уровень. По идее можно было бы при пересчете запоминать номер итерации (i), но у нас же сначала идет пересчет по которому идет запись в журнал, его не применишь.
А в том варианте, как идет вывод записей журнала - тут тоже не то, что требуется.
Я примерно понимаю, что мне нужно сначала взять свечу 1 и сравнить ее с 9ю другими, если найдется совпадение, то вычленить номера этих свечей и их параметры, включить флажок. Далее проверить свечу 2 с остальными и так до середины выборки, т.к. потом пойдут уже дубли сравнений только с другой стороны.
НО!! Если бы число свечей было фиксированным, я бы так и написал - грубо 5 циклов сравнений. Но вот как сделать возможность такого пересчета для любого размера выборки - вот вопрос.
Задача интересная, но понимание, как решить эту проблему у Вас неверное, т.к. знаний в программирование пока не так много.
Смотрите: у Вас есть некий набор котировок. Ваша задача сводится к тому, что бы из этого набора отобрать только те бары, которые удовлетворяют определенным условиям. Например, вы хотите получить коллекцию баров, чьи High совпадают друг с другом. В действительности, условий отбора может быть множество и они со временем могут добавляться. Получив коллекцию баров, Вы без проблем сможете проанализировать любые их прочие параметры.
Значит для Вашей задачи требуется написать функцию, которая бы возвращала массив баров удовлетворяющих определенному условию (псевдокод):
Т.е. в действительности нет никаких проблем с запоминанием и итерацицией каких-то данных и индексов. Вам нужны не сами индексы баров, а конкретная коллекция, удовлетворяющая заданному условию. Получив ее, Вы решите кучу проблем одним махом.Значит, если нужно, чтобы для каждой из свечей диапазона соответствовал свой список совпадающих свечей, то я бы попробовал использовать массив структур. Подумаю - отпишусь.
Подумал. Отписываюсь скриптом проверочным:
Постарался описать все действия.
После заполнения в цикле всех совпадений, имеем массив, содержащий все свечи и их совпадающие свечи. Далее уже в нём можно искать low. А можно прямо в цикле поиска это организовать. Как вам удобнее.
Ну вот можно ещё так: тут для каждой свечи диапазона записываются совпадения. В прошлой версии совпадения писались только для одной свечи - т.е., для той, которая совпадает с этой, уже совпадение не писалось.