Ищу индикатор индекса валют.

 
Возьмем к примеру 3  пары: eurusd, gbpusd, eurgbp, они образуют единый кластер, в котором участвуют 3 валюты: usd,eur,gbp, можно ли выделить индексы валют по отдельности ТОЛЬКО из этого кластера? и представить их в виде отдельного графика.
 

Можно:

usd - используем eurusd, gbpusd

eur - используем eurusd, eurgbp

gbp - используем gbpusd, eurgbp

 
Integer >>:

Можно:

usd - используем eurusd, gbpusd

eur - используем eurusd, eurgbp

gbp - используем gbpusd, eurgbp


а формулы можно?
 
Integer >>:

Можно:

usd - используем eurusd, gbpusd

eur - используем eurusd, eurgbp

gbp - используем gbpusd, eurgbp


  пробовал искать в сети, но не нашёл подобного индюка, может есть ссылочка на сие чудо.
 
sergeev писал(а) >>

а формулы можно?

От полета фантазии - https://www.mql5.com/ru/forum/122056/page4

 

Вообще математика здесь не столь сложная: Берем за основу цены в какое-то время и диапазоны - можем выровнять цены по всем символам, потом - как угодно, хоть арифметическое среднее, хоть геометрическое.

 

Для арифметичекого среднего будет такая формула:

i=ko+k1*s1+k2*s2+k3*s3;

s1-s3 - значение цен.

k - постоянные коэффициенты.

Для геометрического из двух символов, что-то типа такого:

sqrt(k0+K1*s1*s2-k2*s1-k3*s2);

 
sergeev >>:


а формулы можно?

В качестве простейшего индекса можно посчитать отклонение цены от скользяйщей средней для каждой пары и сложить значения.

Для индикатора я бы записал так:

     USD[i] = -(iClose("EURUSD",NULL,i)-iMA("EURUSD",NULL,Period_MA,0,1,0,i))
              -(iClose("GBPUSD",NULL,i)-iMA("GBPUSD",NULL,Period_MA,0,1,0,i));
     EUR[i] = +(iClose("EURUSD",NULL,i)-iMA("EURUSD",NULL,Period_MA,0,1,0,i))
              +(iClose("EURGBP",NULL,i)-iMA("EURGBP",NULL,Period_MA,0,1,0,i));
     GBP[i] = +(iClose("GBPUSD",NULL,i)-iMA("GBPUSD",NULL,Period_MA,0,1,0,i))
              -(iClose("EURGBP",NULL,i)-iMA("EURGBP",NULL,Period_MA,0,1,0,i));

где Period_MA - период той самой средней )))

 
chepikds >>:
Возьмем к примеру 3 пары: eurusd, gbpusd, eurgbp, они образуют единый кластер, в котором участвуют 3 валюты: usd,eur,gbp, можно ли выделить индексы валют по отдельности ТОЛЬКО из этого кластера? и представить их в виде отдельного графика.

Вот посмотрите, что-то когда-то пытался сделать, он чуть касячный, неперерисовывает линию, но так рабочий

Файлы:
usd.mq4  4 kb
 

Ого, столько всего, спасибо, попытаюсь переварить, хотелось бы, конечно, чтоб создавался отдельный чарт индекса, на который можно набросать всевозможных индюков...

 

Вот что-то получилось 3 кривые в одном окне 

белая - доллар 

зеленая - евро

красная фунт

Вот код индикатора

//+------------------------------------------------------------------+
//|                                                 for chepikds.mq4 |
//|                                                    Strukov Roman |
//|                                                   srb-78@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Strukov Roman"
#property link      "srb-78@mail.ru"

#property indicator_separate_window
#property  indicator_buffers 3
#property  indicator_color1  Red
#property  indicator_color2  Green
#property  indicator_color3  White

extern int Period_MA = 55;
extern int History   = 5000;

double GBP[],EUR[],USD[]; 

int init()
  {
   SetIndexBuffer(0, GBP);
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(1, EUR);    
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(2, USD);
   SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,2);
   IndicatorShortName("for chepikds");
   return;
  }
int start()
  {
  int i, Counted_bars;
      Counted_bars = IndicatorCounted(); 
      i = Bars-Counted_bars-1; 
  
  while(i>=0) 
    {
     USD[i] = -(iClose("EURUSD",NULL,i)-iMA("EURUSD",NULL,Period_MA,0,1,0,i))
              -(iClose("GBPUSD",NULL,i)-iMA("GBPUSD",NULL,Period_MA,0,1,0,i));
     EUR[i] = +(iClose("EURUSD",NULL,i)-iMA("EURUSD",NULL,Period_MA,0,1,0,i))
              +(iClose("EURGBP",NULL,i)-iMA("EURGBP",NULL,Period_MA,0,1,0,i));
     GBP[i] = +(iClose("GBPUSD",NULL,i)-iMA("GBPUSD",NULL,Period_MA,0,1,0,i))
              -(iClose("EURGBP",NULL,i)-iMA("EURGBP",NULL,Period_MA,0,1,0,i));
     i--;
    }
   return;
  }
Причина обращения: