Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нужен приватный мониторинг счета? В Сигналах есть такая возможность!
chemical
28
chemical 2011.12.26 16:07 

Привет всем!

 

Помогите справится с такой задачей:

Неоходим индюк, которий в DATA WINDOW рисует график с отношением двух инструментов по формуле: Symbol1/Symbol2.

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

int OnCalculate(const int rates_total,const int prev_calculated,const int begin,const double &price[])

 т.е. как получить такой же массив данных price[], тока для другого инструмента в пределах данного индюка?

 

Спасибо! 

Vladimir Gomonov
8235
Vladimir Gomonov 2011.12.26 20:19  
chemical:

Привет всем!

 

Помогите справится с такой задачей:

Неоходим индюк, которий в DATA WINDOW рисует график с отношением двух инструментов по формуле: Symbol1/Symbol2.

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

 т.е. как получить такой же массив данных price[], тока для другого инструмента в пределах данного индюка?

 

Спасибо! 

Используйте:


chemical
28
chemical 2011.12.27 11:40  

Спасибо!

 

Но ведь когда делаем  CopyRates, то там нет тиковой инфы! Возможно может из советника вызвать индикатор на нужный инструмент через iCustom? 

Тока както  iCustom по другому работает нежели как в MT4!

 Спасибо 

Dmitriy Skub
11282
Dmitriy Skub 2011.12.28 17:34  
chemical:

Спасибо!

 

Но ведь когда делаем  CopyRates, то там нет тиковой инфы! Возможно может из советника вызвать индикатор на нужный инструмент через iCustom? 

Тока както  iCustom по другому работает нежели как в MT4!

 Спасибо 

Вы тиковую историю никак не получите штатными средствами терминала. Только самому накапливать, хранить и считывать.
chemical
28
chemical 2011.12.28 18:12  
Dima_S:
Вы тиковую историю никак не получите штатными средствами терминала. Только самому накапливать, хранить и считывать.

Спс!

 

А что тогда нам возвращает price[] в функяции int OnCalculate(const int rates_total,const int prev_calculated,const int begin,const double &price[]) 

разве не тиковую историю? или минутки? 

Dmitriy Skub
11282
Dmitriy Skub 2011.12.28 21:08  
chemical:

Спс!

 

А что тогда нам возвращает price[] в функяции int OnCalculate(const int rates_total,const int prev_calculated,const int begin,const double &price[]) 

разве не тиковую историю? или минутки? 

Передается массив баров текущего ТФ для текущего символа.

Конкретный тип цены (опен, клоуз и т.д.) задается на вкладке Параметры окна настроек индикатора.



chemical
28
chemical 2011.12.29 08:41  
Dima_S:

Передается массив баров текущего ТФ для текущего символа.

Конкретный тип цены (опен, клоуз и т.д.) задается на вкладке Параметры окна настроек индикатора.



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

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
#property indicator_type1   DRAW_LINE
#property indicator_color1  LightSeaGreen
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1

#property indicator_label1  "PriceHistorySymbol"
//#property indicator_label2  "MA"

//--- input parameters
input int DataPeriod=14; // Period
input string Symbol1="GBPUSD";
double DataBuffer[];
int ExtCountedBars;

void OnInit()
  {
   string short_name;
   SetIndexBuffer(0,DataBuffer);
   IndicatorSetInteger(INDICATOR_DIGITS,5);
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,DataPeriod<<1);
   short_name="PriceHistory("+Symbol1+")";
   IndicatorSetString(INDICATOR_SHORTNAME,short_name);
   PlotIndexSetString(0,PLOT_LABEL,short_name);


  }
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
   if(rates_total<2)
      return(0);
   int start=prev_calculated-1;
   if(start<1) start=1;
      CalculateDivirgence(start,rates_total,price);  
   return(rates_total);
  }
  
void CalculateDivirgence(const int nPosition,
                     const int nRatesCount,
                     const double &SrcBuffer[])
  {
   DataBuffer[0]=(double)SrcBuffer[0];
   
//---
   for(int i=nPosition;i<nRatesCount && !IsStopped();i++)
     {
      double dCurr=(double)SrcBuffer[i];
      DataBuffer[i]=dCurr;
//---
  }  
}  

 

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий