Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
mql5 это хорошо, не будет проблем с совместимостью, и читаемостью кода
А как они присылаются, мы же не знаем, какой тип данных вы взяли за основу.
Поток, слепок, Json.
Если распределение по уровням сделано в цикле for, я бы отказался от циклов.
Любые циклы имеют время на обработку, а это задержка.
В стакане всего примерно 40 уровней цен, вверх вниз.
По этому я бы для каждого уровня прописал бы свою переменную с нужным значением, исключив цикл.
mql5 это хорошо, не будет проблем с совместимостью, и читаемостью кода
А как они присылаются, мы же не знаем, какой тип данных вы взяли за основу.
Поток, слепок, Json.
Если распределение по уровням сделано в цикле for, я бы отказался от циклов.
Любые циклы имеют время на обработку, а это задержка.
В стакане всего примерно 40 уровней цен, вверх вниз.
По этому я бы для каждого уровня прописал бы свою переменную с нужным значением, исключив цикл.
Посмотрите код на предыдущей странице.
Я централизую приходящие данные относительно центральной ячейки стакана. Наиближайшая цена к аск ставится в ячейку в центре и далее наверх остальные цены в порядке увеличения. Тоже самое с ценой бид и их заявками.
mql5 это хорошо, не будет проблем с совместимостью, и читаемостью кода
А как они присылаются, мы же не знаем, какой тип данных вы взяли за основу.
Поток, слепок, Json.
Если распределение по уровням сделано в цикле for, я бы отказался от циклов.
Любые циклы имеют время на обработку, а это задержка.
В стакане всего примерно 40 уровней цен, вверх вниз.
По этому я бы для каждого уровня прописал бы свою переменную с нужным значением, исключив цикл.
Я не знаю, как можно решить задачу распределения приходящих данных без цикла. Может подскажите?
Иногда приходит более 40 уровней цен. Некоторые не влазят в стакан. Поэтому, я сделал массив приемник в 100 ячеек. Хотя отобразить все в стакане нельзя, но затребовать из движка можно.
...
По этому я бы для каждого уровня прописал бы свою переменную с нужным значением, исключив цикл.
Данные приходят в массив в порядке от самой высокой цены до самой низкой. При этом, количество данных не ограничено. Может прийти 60 цен с заявками, по 30 для каждой стороны, а может прийти 30 цен и все с ценами выше аск или ниже бид. Поэтому, без цикла проблему не решить.
Данные приходят в массив в порядке от самой высокой цены до самой низкой. При этом, количество данных не ограничено. Может прийти 60 цен с заявками, по 30 для каждой стороны, а может прийти 30 цен и все с ценами выше аск или ниже бид. Поэтому, без цикла проблему не решить.
Если в массиве не нарушается индексация пришедших элементов, то из массива брать каждый элемент без цикла и присваивать в свою переменную.
И уже каждую переменную с содержащим значением присваивать уровню ячейки.
А можно сразу каждый элемент массива присваивать уровню.
Тогда исключаем еще и переменные, но не инициализированные данные плохой тон в кодинге.
Ещё мысль пришла.
Реализовав два способа, потом можно замерить скорость обработки.Пришедший массив разделить на два массива Bid и Ask
И подумать как задействовать функцию CopyArray()
И какой способ покажет лучший результат, тот и оставить.
Если в массиве не нарушается индексация пришедших элементов, то из массива брать каждый элемент без цикла и присваивать в свою переменную.
И уже каждую переменную с содержащим значением присваивать уровню ячейки.
А можно сразу каждый элемент массива присваивать уровню.
Тогда исключаем еще и переменные, но не инициализированные данные плохой тон в кодинге.
Увы, в массиве нет упорядоченных цен и его индексация не указывает на конкретные ячейки стакана. Данные приходят от большей цены к меньшей, но на этом порядок заканчивается. Между ценами может быть один пункт, а может быть 10 или 153. Стакан показывает последние измененные объемы заявок на всем диапазоне на котором они находятся. Если на цену за 150 пунктов сверху от аск изменилось количество лимитных заявок, то она окажется в массиве. Поэтому, в массиве никакого порядка, кроме от большего к меньшему, нет и иначе как в цикле, данные не упорядочить.
Увы, в массиве нет индексации. Данные приходят от большей цены к меньшей, но на этом порядок заканчивается. Между ценами может быть один пункт, а может быть 10 или 153. Стакан показывает последние измененные объемы заявок на всем диапазоне на котором они находятся. Если на цену за 150 пунктов сверху от аск изменилось количество лимитных заявок, то она окажется в массиве. Поэтому, в массиве никакого порядка, кроме от большего к меньшему, нет и иначе как в цикле, данные не упорядочить.
Индексация по элементам массива есть в принимающем массиве.
Данные приходят от большей цены к меньшей, они же всегда упорядочены последовательно?
Вот и выбирайте любой нужный элемент из принимающего массива по индексу, но без цикла.
А если таким способом не возможно выловить лучший Bid/Ask из за меняющегося размера приходящих данных,
то наверно тогда надо подумать о CopyArray()
Индексация по элементам массива есть в принимающем массиве.
Данные приходят от большей цены к меньшей, они же всегда упорядочены последовательно?
Вот и выбирайте любой нужный элемент из принимающего массива по индексу, но без цикла.
Упорядочены последовательно. Но:
Упорядочены последовательно. Но:
Откуда вы берёте такие кривые данные? ))
1. Определиться с чётким диапазоном выбирающих данных, к примеру 20 вверх, 20 вниз
и выбираем только этот диапазон, а все что придёт больше нам не важно.
2. Вы же говорите что цены приходят от большего к меньшему и они упорядочены по убыванию.
Ну и что, что может прийти выше или ниже, это не важно, смотрите не на цены а на индексы в массиве.
2. Если вы имеете ввиду порядок по расстоянию между уровнями пришедших цен, это расстояние вообще не важно, у нас есть индексация в принимающем массиве.