Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Знаете ли вы, что MQL5 является объектно-ориентированным языком?
Automated-Trading
Админ
99085
Automated-Trading 2015.04.28 13:36 

DXY (USDX):

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

DXY (USDX) dollar index

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

Awl Writer
528
Awl Writer 2015.04.28 14:57  

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

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

 

Vladimir Zubov
4302
Vladimir Zubov 2015.04.28 15:01  
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

Andrey Khatimlianskii
56132
Andrey Khatimlianskii 2015.04.29 03:08  

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

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

Awl Writer
528
Awl Writer 2015.04.29 05:55  
если по какому-то инструменту пропустится хотя бы один бар, все расчеты съедут.

Не во всех методах расчёта это имеет значение. В данном методе для 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...
Andrey Khatimlianskii
56132
Andrey Khatimlianskii 2015.04.29 11:35  
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. С ними вообще весело получается ;) 

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

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

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

Михаил
1830
Михаил 2015.05.01 07:03  
Добавил синхронизацию инструментов по времени.
Andrey Khatimlianskii
56132
Andrey Khatimlianskii 2015.05.05 02:35  
Михаил:
Добавил синхронизацию инструментов по времени.
Куда?
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий