Индикаторы: DXY (USDX)

 

DXY (USDX):

Индикатор рассчитывает индекс доллара DXY (USDX) и строит его график.

DXY (USDX) dollar index

Автор: Михаил

 

 А можете пояснить, почему только эти пары? И из чего вы исходили в расчёте коэффициентов?

пары по которым ведётся расчет - 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, получается тождество.

 

 
Awl:

 А можете пояснить, почему только эти пары? И из чего вы исходили в расчёте коэффициентов?

 вообще, мне кажется, среднее геометрическое взвешенное - хороший метод (по крайней мере, самый очевидный в мультивалютном анализе). У меня было немного не так, я исходил из предположения, что произведение всех индексов равно 1. Если сопоставить всем валютам, в т.ч. доллару (i=1), веса Wi от 0 до 1, причём сумма всех весов равна 1, то получается такое выражение для индекса доллара:

Потому что это общеизвестная принятая во всем мире формула расчета индекса USD.

https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%B4%D0%B5%D0%BA%D1%81_%D0%B4%D0%BE%D0%BB%D0%BB%D0%B0%D1%80%D0%B0

 

Тут намного важнее синхронизировать инструменты между собой, а этого в индикаторе нет.

На мелких ТФ работать вообще не советую, а на крупных советую быть внимательными - если по какому-то инструменту пропустится хотя бы один бар, все расчеты съедут.

 
если по какому-то инструменту пропустится хотя бы один бар, все расчеты съедут.

Не во всех методах расчёта это имеет значение. В данном методе для 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) - пропущенные бары имеют значение. 

Trade-weighted US dollar index - Wikipedia, the free encyclopedia
  • en.wikipedia.org
The trade-weighted US dollar index, also known as the broad index, is a measure of the value of the United States dollar relative to other world currencies. It is similar to the U.S. Dollar Index in that its numerical value is determined as a weighted average of the price of various currencies relative to the dollar, but different currencies...
 
Awl:

Не во всех методах расчёта это имеет значение. В данном методе для USDX - нет.

Ну как это - нет?

Если работать со всеми инструментами по одному индексу бара (i), то при пропуске хотя бы одного бара на любом из них появится ошибка.

Немного утрированный пример с Д1 и одним пропущенным баров:

i
(итератор цикла по барам) 

Время бара №i
EURUSD
Время бара №i
GBPUSD
Время бара №i
USDCHF
Время бара №i
USDCAD
Время бара №i
USDJPY
Считаем индекс 
2015.04.242015.04.242015.04.242015.04.242015.04.24 Все данные с 2015.04.24
2015.04.232015.04.232015.04.222015.04.232015.04.23 Что на что умножаем???
2015.04.222015.04.222015.04.212015.04.222015.04.22 Что на что умножаем???
2015.04.212015.04.212015.04.202015.04.212015.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. С ними вообще весело получается ;) 

 
Ну да, виноват, что не посмотрел сам код. Я имел в виду не конкретный индикатор, а сам метод вычисления, предполагая, что данные синхронизируются по времени, а не по номеру бара. Пожалуй, только этот - https://www.mql5.com/ru/code/242 - сделан правильно и синхронизирован по времени.
Мультивалютный индикатор "Индекс доллара" iUSDx
Мультивалютный индикатор "Индекс доллара" iUSDx
  • голосов: 18
  • 2010.12.24
  • Konstantin Gruzdev
  • www.mql5.com
Пример использвания Панели управления мультивалютным режимом "Control panel MCM" для построения мультивалютных индикаторов. В качестве примера выбран мультивалютный индикатор "Индекс доллара".
 
Awl:
Ну да, виноват, что не посмотрел сам код. Я имел в виду не конкретный индикатор, а сам метод вычисления, предполагая, что данные синхронизируются по времени, а не по номеру бара. Пожалуй, только этот - https://www.mql5.com/ru/code/242 - сделан правильно и синхронизирован по времени.
По ссылке индикатор для МТ5.
 
Awl:
Ну да, виноват, что не посмотрел сам код. Я имел в виду не конкретный индикатор, а сам метод вычисления, предполагая, что данные синхронизируются по времени, а не по номеру бара. Пожалуй, только этот - https://www.mql5.com/ru/code/242 - сделан правильно и синхронизирован по времени.

Есть еще мой, но он платный )

Я, собственно, поэтому и знаю о проблеме, что сталкивался с ней сам.

 
Добавил синхронизацию инструментов по времени.
 
Михаил:
Добавил синхронизацию инструментов по времени.
Куда?
Причина обращения: