А можете пояснить, почему только эти пары? И из чего вы исходили в расчёте коэффициентов?
пары по которым ведётся расчет - EURUSD, USDJPY, GPBUSD, USDCAD, USDSEK, USDCHF.
вообще, мне кажется, среднее геометрическое взвешенное - хороший метод (по крайней мере, самый очевидный в мультивалютном анализе). У меня было немного не так, я исходил из предположения, что произведение всех индексов в степенях-весах равно 1. Если сопоставить всем валютам, в т.ч. доллару (i=1), веса Wi от 0 до 1, причём сумма всех весов равна 1, то получается такое выражение для индекса доллара:
Ind1 = (Ind1/Ind2)^W2 * (Ind1/Ind3)^W3 *** (Ind1/Indn)^Wn
здесь Ind1/Ind2 - цена пары "USD/валюта №2" и т.д. Для проверки ставим в начале ряда множитель (Ind1/Ind1)^W1, получается тождество.
А можете пояснить, почему только эти пары? И из чего вы исходили в расчёте коэффициентов?
вообще, мне кажется, среднее геометрическое взвешенное - хороший метод (по крайней мере, самый очевидный в мультивалютном анализе). У меня было немного не так, я исходил из предположения, что произведение всех индексов равно 1. Если сопоставить всем валютам, в т.ч. доллару (i=1), веса Wi от 0 до 1, причём сумма всех весов равна 1, то получается такое выражение для индекса доллара:
Потому что это общеизвестная принятая во всем мире формула расчета индекса USD.
Тут намного важнее синхронизировать инструменты между собой, а этого в индикаторе нет.
На мелких ТФ работать вообще не советую, а на крупных советую быть внимательными - если по какому-то инструменту пропустится хотя бы один бар, все расчеты съедут.
Не во всех методах расчёта это имеет значение. В данном методе для USDX - нет.
Здесь https://en.wikipedia.org/wiki/Trade-weighted_US_dollar_index - при неизменных во времени весах и постоянной точке отсчёта - нет.
Здесь https://www.mql5.com/ru/articles/83 - нет
Здесь https://www.mql5.com/ru/forum/117367/page7 (пост 2) - пропущенные бары имеют значение.
- en.wikipedia.org
Не во всех методах расчёта это имеет значение. В данном методе для USDX - нет.
Ну как это - нет?
Если работать со всеми инструментами по одному индексу бара (i), то при пропуске хотя бы одного бара на любом из них появится ошибка.
Немного утрированный пример с Д1 и одним пропущенным баров:
i | Время бара №i EURUSD | Время бара №i GBPUSD | Время бара №i USDCHF | Время бара №i USDCAD | Время бара №i USDJPY | Считаем индекс |
0 | 2015.04.24 | 2015.04.24 | 2015.04.24 | 2015.04.24 | 2015.04.24 | Все данные с 2015.04.24 |
1 | 2015.04.23 | 2015.04.23 | 2015.04.22 | 2015.04.23 | 2015.04.23 | Что на что умножаем??? |
2 | 2015.04.22 | 2015.04.22 | 2015.04.21 | 2015.04.22 | 2015.04.22 | Что на что умножаем??? |
3 | 2015.04.21 | 2015.04.21 | 2015.04.20 | 2015.04.21 | 2015.04.21 | Что на что умножаем??? |
Вот что случится, если будет пропущен один бар (23.04.2015) на USDCHF - дальнейшие расчеты будут использовать не синхронизированную информацию.
Т.е. если бы запустили этот же индикатор 22.04.2015 (когда все бары были), картинка была бы другой.
Все потому что расчет ведется по одному индексу баров (в этом коде - shift):
double dxyshift(int shift) { ResetLastError(); double xs = 1, ys = 1; double exs,gxs,euros,jpys,gbps,cads,seks,chfs,dxs; exs=gxs=euros=jpys=gbps=cads=seks=chfs=dxs=0.0; exs = iClose("EURUSD", 0, shift); gxs = iClose("GBPUSD", 0, shift); if (exs != 0.0) xs /= exs; if (gxs != 0.0) ys /= gxs; euros = MathPow(xs, 0.576); jpys = MathPow(iClose("USDJPY", 0, shift), 0.136); gbps = MathPow(ys, 0.119); cads = MathPow(iClose("USDCAD", 0, shift), 0.091); seks = MathPow(iClose("USDSEK", 0, shift), 0.042); chfs = MathPow(iClose("USDCHF", 0, shift), 0.036); dxs = NormalizeDouble(50.14348112 * euros * jpys * gbps * cads * seks * chfs, 2); Print(GetLastError()); return(dxs); }
На старших ТФ в большинстве случаев все будет ок, а на младших при перезагрузке индикатора будет перерисовка из-за смещения на одном или нескольких инструментах.
Линии будут отличаться даже если просто переключать инструмент графика, на котором индикатор работает - потому что на разных инструментах будут разные пропуски.
И это еще хорошо, что не используются Low и High. С ними вообще весело получается ;)

- голосов: 18
- 2010.12.24
- Konstantin Gruzdev
- www.mql5.com
Ну да, виноват, что не посмотрел сам код. Я имел в виду не конкретный индикатор, а сам метод вычисления, предполагая, что данные синхронизируются по времени, а не по номеру бара. Пожалуй, только этот - https://www.mql5.com/ru/code/242 - сделан правильно и синхронизирован по времени.
Ну да, виноват, что не посмотрел сам код. Я имел в виду не конкретный индикатор, а сам метод вычисления, предполагая, что данные синхронизируются по времени, а не по номеру бара. Пожалуй, только этот - https://www.mql5.com/ru/code/242 - сделан правильно и синхронизирован по времени.
Есть еще мой, но он платный )
Я, собственно, поэтому и знаю о проблеме, что сталкивался с ней сам.
Добавил синхронизацию инструментов по времени.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
DXY (USDX):
Индикатор рассчитывает индекс доллара DXY (USDX) и строит его график.
Автор: Михаил