Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1426
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
К сожалению, ближайшие два дня лишён возможности проверить, но примите мою благодарность!
Спасибо, но только учтите, что это не готовый код, а только направление хода моей мысли. Возможно оно не правильное. Нужно проверять. Можно рассмотреть ещё другой вариант - убрать OnTimer и попробовать этот же код в OnTick(). Короче говоря, пробуйте.
С уважением, Владимир.
Если от текущей цены отнять цену двадцатисекундной давности и сравнить с некой константой с последующим открытием ордера, - то как это записать?
Запомнить текущую цена и время. Сравнивать время с текущим на каждом тике, если больше 20 секунд запомнить вторую цену. Вычислить разницу между первой ценой и второй. Полученный результат сравнить с константой и принять решение по открытию ордера.
Запомнить текущую цена и время. Сравнивать время с текущим на каждом тике, если больше 20 секунд запомнить вторую цену. Вычислить разницу между первой ценой и второй. Полученный результат сравнить с константой и принять решение по открытию ордера.
Я правильно вас понял: надо ежесекундно запоминать текущую цену, чтобы при удалении каждого значения этого ряда на 20 сек. сравнивать с текущей?
Сравнение должно проходить непрерывно.
Я правильно вас понял: надо ежесекундно запоминать текущую цену, чтобы при удалении каждого значения этого ряда на 20 сек. сравнивать с текущей?
Сравнение должно проходить непрерывно.
тики идут не равномерно, вопрос в алгоритме тогда, если нужно все тики проверить, значит все и запоминать и сравнивать. Если можно реже по алгоритму, то таймер и через секунду запоминать цену и через 20 секунд тоже запоминать и сравнивать. Вернее нужно помнить все цены или цены через секунду в течении 20 секунд и сравнивать с новым тиком.
В секунду может быть и 1 тик, может быть один в 5 секунд, и может быть 100 за одну секунду. Надо Вам решить, как действовать когда тик в 5 секунд один, и когда 100 тиков в секунду.
тики идут не равномерно, вопрос в алгоритме тогда, если нужно все тики проверить, значит все и запоминать и сравнивать. Если можно реже по алгоритму, то таймер и через секунду запоминать цену и через 20 секунд тоже запоминать и сравнивать. Вернее нужно помнить все цены или цены через секунду в течении 20 секунд и сравнивать с новым тиком.
В секунду может быть и 1 тик, может быть один в 5 секунд, и может быть 100 за одну секунду. Надо Вам решить, как действовать когда тик в 5 секунд один, и когда 100 тиков в секунду.
Да вопрос не в выборе варианта, а в сложности для меня это записать... Я сегодня здесь впервые. Абсолютный дилетант.
Просто хочу опробовать свою идею...
Да вопрос не в выборе варианта, а в сложности для меня это записать... Я сегодня здесь впервые. Абсолютный дилетант.
Просто хочу опробовать свою идею...
Алгоритм должен быть точным, и понимание условий его применения. По другому не написать код. Код это реализация всего одного алгоритма действий, не точным он быть не может.
И здесь лучше сперва самому написать, и возможно ошибки поправят.
Вы же понимаете знаки равно, больше меньше.
Кольцевой буфер:
Берём буфер - достаточно большой статический массив структур "цена, время" (или два отдельных массива).
Берём две переменных - "указатели" (индексы) на голову и хвост буфера.
На каждом тике добавляем элемент в голову и продвигаем указатель.
Сравниваем время с элементом в хвосте, если надо - продвигаем указатель.
Сравниваем цену с элементом в хвосте.
Если какой-то указатель достиг конца массива - обнуляем этот указатель.
Кольцевой буфер:
Берём буфер - достаточно большой статический массив структур "цена, время" (или два отдельных массива).
Берём две переменных - "указатели" (индексы) на голову и хвост буфера.
На каждом тике добавляем элемент в голову и продвигаем указатель.
Сравниваем время с элементом в хвосте, если надо - продвигаем указатель.
Сравниваем цену с элементом в хвосте.
Если какой-то указатель достиг конца массива - обнуляем этот указатель.
Алгоритм должен быть точным, и понимание условий его применения. По другому не написать код. Код это реализация всего одного алгоритма действий, не точным он быть не может.
И здесь лучше сперва самому написать, и возможно ошибки поправят.
Вы же понимаете знаки равно, больше меньше.
Здравствуйте, Валерий! Полностью с Вами согласен. Для написания корректного кода необходимо точное условие для открытия позиции. Такой код тоже работает:
но весь вопрос в том, а так ли он должен работать, как задумал Виталий? Честно говоря, не совсем понимаю зачем один раз в 20 секунд (да хоть раз в 10, в 5 или в 1 секунду), проверять разницу в цене. Что это даст в плане определения направления дальнейшего движения цены?
С уважением, Владимир.
Здравствуйте, Валерий! Полностью с Вами согласен. Для написания корректного кода необходимо точное условие для открытия позиции. Такой код тоже работает:
но весь вопрос в том, а так ли он должен работать, как задумал Виталий? Честно говоря, не совсем понимаю зачем один раз в 20 секунд (да хоть раз в 10, в 5 или в 1 секунду), проверять разницу в цене. Что это даст в плане определения направления дальнейшего движения цены?
С уважением, Владимир.
Здравствуйте, Валерий! Полностью с Вами согласен. Для написания корректного кода необходимо точное условие для открытия позиции. Такой код тоже работает:
но весь вопрос в том, а так ли он должен работать, как задумал Виталий? Честно говоря, не совсем понимаю зачем один раз в 20 секунд (да хоть раз в 10, в 5 или в 1 секунду), проверять разницу в цене. Что это даст в плане определения направления дальнейшего движения цены?
С уважением, Владимир.
Не правильно описываете задачу! Не "один раз в 20 секунд", а ежесекундно сверяться с прошедшими какое-то время назад показателями. Что касается "зачем" - это вопрос не для данной дискуссии. (А 20 секунд - просто как пример).
Это как скользящая средняя, где первая свеча сравнивается со второй. Только у меня все должно рассчитываться внутри текущей (нулевой) минутной свечи.(А ещё лучше - на линейном графике. Ведь 20 секунд могут перетечь на первую свечу).