"Относительное преобразование" цены одной валюты в другую

 

Добрый день, уважаемые коллеги.

Затеял недавно некоторое статистическое исследование по ЗигЗагам, но так как от mql заметно поотвык, хотел бы обратиться к профессионалам.

//-------------------------------------------------------------------------------------------------------

Задача у меня поставлена так:

необходимо в окне некоторой валютной пары (например в окне котировок EURUSD) вывести ЗигЗаг, построенный на котировках другой валютной пары (например, GBPUSD).

Пример такого индикатора находится во вложении.

НО, данная задача упирается в проблему "преобразования цены второй пары в относительную цену к первой котировке" (если котировки сильно отличаются друг от друга, например 1.4532 и 0.8564, то ЗигЗаг будет "скакать" по монитору)

//-------------------------------------------------------------------------------------------------------

подскажите, пожалуйста, как такое относительное преобразование цены выполнить.

//-------------------------------------------------------------------------------------------------------

Заранее большое спасибо.

Файлы:
 

А зачем делать преобразования цен, если исходя из Вашей логики нужно наложить зиг-заг одной валютной пары на график движения другой пары? Есть решение проще - проходимся по свечкам одной валютной пары и записываем в массив те номера свеч, на которых стоят точки экстремума зиг-зага. Затем обращаемся к другой валютной паре и отрисовываем линии зигзага именно по тем номерам свеч, которые лежат в нашем массиве. Наносим на хай/лоу этих свечек. Если нужны исходные цены точек экстремума, то их можно сунуть в другой массив. И для этого не нужно запускать советников на разных влютных парах, так как название нужной валютной пары можно указать явно, например в том же  iCustom().

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

Как вариант: можно работать через коэффициент. Например, пишем скрипт, который выведет на экран текущие биды этих двух валютных пар.  Пусть это указаннный Вами 1.4532 и 0.8564. Почему скриптом - потому, чтоб уменьшить погрешность - нужны цены именно двух последних тиков.

Вычисляем коэффициент.  К = 1.4532 / 0.8564 = 1,696870621205044371788883699206 = 1,6969.

Теперь весь поток цен экстремумов второго торгового инструмента умножаем на "К" и получаем цены первого торгового инструмента. Например, 0,8563*1,6969 = 1,4475. Только вот экстремумы наложенного зиг-зага могут в этом случае оказаться далеко отстоящими от свечек.

 

Навалял от руки в виде примера...

//+------------------------------------------------------------------+
//|                                                     Multy_ZZ.mq4 |
//|                      Copyright © 2010, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_SECTION);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexEmptyValue(0,0.0);
//----
   return(0);
  }
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//----
   for(int i = 0; i < limit; i++){
     double up = iCustom("GBPUSD", 0, "Zigzag2_R_", 12, 5, 3, 0, i);
     double dn = iCustom("GBPUSD", 0, "Zigzag2_R_", 12, 5, 3, 1, i);
     if(up != 0){ExtMapBuffer1[i]=High[i];}
     if(dn != 0){ExtMapBuffer1[i]=Low[i];}
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

drknn, xrust, большущее вам спасибо!!!

Дополнил индикатор пересчетом цен - теперь всё рисуется симпатично :)

 

Сюда загляните https://www.mql5.com/ru/forum/127547 там Nen запостил один из своих ЗЗ

 

xrust, спасибо большое за ссылку.

//===================================================================================

Подскажите, плз, когда у вас будет возможность:

встречали ли вы ЗигЗаг, который на графике котировок рисуется сразу с нескольких ТаймФреймов?

(Например, открыт график валютной пары с таймфреймом H1, и на нем рисуется ЗигЗаг с H1 и H4)

//===================================================================================

Заранее большое спасибо.

 

Есть такие ЗЗ в кодбез - несколько штук, сам писал парочку...

 
Morzh09:

drknn, xrust, большущее вам спасибо!!!

Дополнил индикатор пересчетом цен - теперь всё рисуется симпатично :)

картинку хоть вставьте, как выглядит теперь это чудо...
Причина обращения: