Здравствуйте!
Имеется индикатор (осцилятор), значения которого, разные в зависимости от инструмента. Возможно ли програмно привести их к общему виду для разных инструментов. ?
Индикатор использует OHLC цены и простые математические операции с ними.
Приведен рисунок для наглядности. Красным показан желаемый результат.
Логически понимаю что надо делать, но реализовать не получается.
Подскажите пожалуйста в каком напрвалении искать, если такое вообще возможно.
Спасибо
Это называется нормализация. Например результат этих простых математических операций разделить на 100 и закрепить минимум и максимум например от -1 до 1.
Это называется нормализация. Например результат этих простых математических операций разделить на 100 и закрепить минимум и максимум например от -1 до 1.
Спасибо за ответ, но к сожалению это не совсем то. что мне нужно. Мне нужно произвести смещение значений индикатора относительно запятой (точки) вправо или влево, в зависимости от выбранного инструмента на чарте. На рисунке видно, что красным укакзаны те же значения, что показывает индикатор, только смещенные.
Спасибо за ответ, но к сожалению это не совсем то. что мне нужно. Мне нужно произвести смещение значений индикатора относительно запятой (точки) вправо или влево, в зависимости от выбранного инструмента на чарте. На рисунке видно, что красным укакзаны те же значения, что показывает индикатор, только смещенные.
Тогда не знаю не вижу ни каких общих зависимостей. В случае с йеной достаточно NormalizeDouble(Значение,1). В случае с евро надо умножить на 10 и опять же NormalizeDouble(Значение,1), а золото надо делить на 10 и NormalizeDouble(Значение,1). Но это только если смотреть картинку для других инструментов может быть все по другому. Кроме этого на евро у вас временной интервал М15, а на других М30 это тоже возможно как то оказывает влияние на значение индикатора.
Тогда не знаю не вижу ни каких общих зависимостей. В случае с йеной достаточно NormalizeDouble(Значение,1). В случае с евро надо умножить на 10 и опять же NormalizeDouble(Значение,1), а золото надо делить на 10 и NormalizeDouble(Значение,1). Но это только если смотреть картинку для других инструментов может быть все по другому. Кроме этого на евро у вас временной интервал М15, а на других М30 это тоже возможно как то оказывает влияние на значение индикатора.
Временной интервал особо не влияет на значение индикатора. Вы правильно сказали, что в случае с Евро надо умножать, а в случае с золотом - делить. Но как это сделать программно, чтоб индикатор сам определял когда и что делать.
Это как в случае использования Crosshair на панели инструментов. Если его выбрать и на графике кликнуть и удерживая провести линия, то в вспомогательном окошке показывает количесто пунктов от точки"А" до точки "Б". На разных парах показывает одинакого.
Может как то использовать _Point в расчетах?
Временной интервал особо не влияет на значение индикатора. Вы правильно сказали, что в случае с Евро надо умножать, а в случае с золотом - делить. Но как это сделать программно, чтоб индикатор сам определял когда и что делать.
Это как в случае использования Crosshair на панели инструментов. Если его выбрать и на графике кликнуть и удерживая провести линия, то в вспомогательном окошке показывает количесто пунктов от точки"А" до точки "Б". На разных парах показывает одинакого.
Может как то использовать _Point в расчетах?
Не, думаю, Point() не подойдет, он показывает значение одного пункта. Делить на Point() надо если вам нужно получить значение индикатора в пунктах. Но тогда надо цены (если они участвуют в расчетах индикатора) тоже переводить в пункты. Иначе получится как будто вы километры делите на килограммы. Попробуйте значение минимального изменение цены TickSize().
Здравствуйте!
Имеется индикатор (осцилятор), значения которого, разные в зависимости от инструмента. Возможно ли програмно привести их к общему виду для разных инструментов. ?
Индикатор использует OHLC цены и простые математические операции с ними.
Приведен рисунок для наглядности. Красным показан желаемый результат.
Логически понимаю что надо делать, но реализовать не получается.
Подскажите пожалуйста в каком напрвалении искать, если такое вообще возможно.
Спасибо
формулы какие ? В чём измеряется индикатор
НЁХ привести к обобщённому виду нельзя ну никак..
если формулы известны, можно например выразить/привести к одной валютной паре. Или ещё как-то. В любом случае нужна арифметика вычислений и физика явлений чтобы привести к общему виду
формулы какие ? В чём измеряется индикатор
НЁХ привести к обобщённому виду нельзя ну никак..
если формулы известны, можно например выразить/привести к одной валютной паре. Или ещё как-то. В любом случае нужна арифметика вычислений и физика явлений чтобы привести к общему виду
Совершенно точно. Два основных варианта - все расчеты перевести в проценты или в валюту депозита.
Спасибо всем откликнувшимся. Вроде разобрался. Прошелся по вычислениям вручную и нашел где происходил сбой. Как писал Vitalii Anane, у меня получалось, что я километры делил на килограммы.
Добавил в расчеты
double tSize = SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_SIZE)*10;
и все встало на свои места.
С золотом и серебром возникла другая проблема. Индикатор не обнуляется в конце дня как на других парах, но это уже другая тема. Буду сам разбираться с таймером.
Еще раз всем спасибо. Думаю тему можно закрывать.
Добавил в расчеты
double tSize = SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_SIZE)*10;
и все встало на свои места.
Это очень плохой подход - что за магическая константа 10? 100% сломается на каком-нибудь другом инструменте. Должны браться данные из спецификаций с помощью MQL.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте!
Имеется индикатор (осцилятор), значения которого, разные в зависимости от инструмента. Возможно ли програмно привести их к общему виду для разных инструментов. ?
Индикатор использует OHLC цены и простые математические операции с ними.
Приведен рисунок для наглядности. Красным показан желаемый результат.
Логически понимаю что надо делать, но реализовать не получается.
Подскажите пожалуйста в каком напрвалении искать, если такое вообще возможно.
Спасибо