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

 

Здравствуйте всем. я торгую арбитражем на мировых рынках индексами. И при изучении истории данных Столкнулся с проблемой с пропуском свечей и их повторением. Не знаю ДЦ это делают специально или Еще что но факт это мешает изучению истории.Так вот я написал свои простенькие индикаторы спреда, Да и другие пробовал и все они показывают искаженные Данные. это происходит из за того что свечи Вычисляются каждая с своей например – ( iClose(esm1,0,0) вычисления iClose(nqm1,0,0) потом iClose(esm1,0,1) вычисления iClose(nqm1,0,1) и т.д) и вот что получается расхождения графиков по датам, и изо этого получается искаженный спред как нестранно но он идеальный подходит для торговли рис1,2.

Я взял данные инструментов и в ручную отредактировал Их, поставил каждою свечу по датам.Так вот что получилось не столь уж радужная картина, Но достоверная рис3,4.

Так вот каждый инструмент редактировать в ручную трудоемко, можно ли создать такой индикатор который Будит делать вычисления по датам, свеча одной даты будит вычисляца со свечей такой же даты, и если какой то свечи нет по одному инструменту а на другом есть то на эту дату Вычисления не производить вообще и с повторяющими тоже самое.Если кто поможет или у кого есть какие идеи жду ответа?

Заранее Спосибо!


Файлы:
odzwov2_0.mq4  2 kb
 
  1. Поскольку у вас Daily-данные, то лучше используйте более надежные источники данных (там и объемы торгов будут не тиковые, а реальные).
  2. Из п.1. проблема отпадет сама собой. Но если спред строить для более коротких таймфрэймов, то лучше дыры заполнять предыдущими ценами, нежели выбрасывать из анализа.
 
Ну а вообще можно создать таккой как я описываю?
 

Конечно, можно! Вы строите спред без синхронизации по времени - "бежите" по номерам баров. Попробуйте "передвигаться" по времени (функция iBarShift).

Загляните в ветку Торговля спредами в Meta Trader-е, там есть нечто подобное.

 
ugeen:
Ну а вообще можно создать таккой как я описываю?

Есть функция iBarShift() - позволяет получить номер бара по времени.
 

Я знаю что есть такая функция iBarShift() но у меня не получается Вставлять туда разные инструменты и чтоб на ошибках не вычислял.

 
ugeen:

Я знаю что есть такая функция iBarShift() но у меня не получается Вставлять туда разные инструменты и чтоб на ошибках не вычислял.


покажите как делаете, подправят.
 
Здесь пример, как это делается. Вообще, вам лучше со всех точек зрения обратиться за помощью именно в вышеобозначенную ветку.
 
hrenfx:
Здесь пример, как это делается. Вообще, вам лучше со всех точек зрения обратиться за помощью именно в вышеобозначенную ветку.
Спасибо внимательно изучу ветку
 
ugeen:
Спасибо внимательно изучу ветку


Чето у меня индикатор этот не работает

double CalculateAvarageSpread(string Symbol_1, string Symbol_2,
                              int Timeframe, int NBars)
{
   int k;
   double N = 0;
   double Sum = 0;
   for(k = 0; k < iBars(Symbol_1,Timeframe); k++)
   {
      if(N == NBars)
         break;

      int symb2Shift = iBarShift(Symbol_2,Timeframe,iTime(Symbol_1,Timeframe,k),true);
      if(symb2Shift != -1)
      {
         Sum += iClose(Symbol_1,Timeframe,k) - iClose(Symbol_2,Timeframe,symb2Shift);
         N++;
      }
   }
   double avarageSpread = Sum / N;
   return(avarageSpread);
}
 

Вы, видимо, на форуме недавно. Хорошим тоном считается не плодить новые темы и не разбрасывать вопросы по форуму. Такой подход полезен будет не только всем, но и вам.

Обратитесь со своим вопросом в специализированную ветку, откуда и взяли этот кусок кода.

Причина обращения: