Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 777

 
Aleksey Vyazmikin:

А Вы можете написать кернел для OpenCL? Я знаю только одного тут человека, который утверждает, что использует OpenCL для оптимизации налету - во время работы советника. Других примеров не знаю.

Сам бы хотел посмотреть. Даже просил статью выпустить на эту тему, но администрация не знает как это применять в реальной торговле.

просто удивительно, поддержка opencl уже как 5 лет, а конкретных рабочих примеров для торговли и статей нет.. ну раз сами разработчики не знаю как применить это, то тогда сосредоточимся на облачной оптимизации
 
ax237b:
просто удивительно, поддержка opencl уже как 5 лет, а конкретных рабочих примеров для торговли и статей нет.. ну раз сами разработчики не знаю как применить это, то тогда сосредоточимся на облачной оптимизации
А что удивительного? Терминал работает с достаточной скоростью, задержка с ответом брокера. Так что opencl пока отдыхает. Что будет дальше - посмотрим
 

Прошу помощи!

Переделываю индикатор, вот код для рисования

#property indicator_separate_window
#property indicator_buffers 3
#property indicator_plots   3
//--- plot Label1
#property indicator_label1  "High";
#property indicator_type1   DRAW_LINE;
#property indicator_color1  clrRed;
#property indicator_style1  STYLE_DOT;
#property indicator_width1  1;
//--- plot Label2
#property indicator_label2  "Low";
#property indicator_type2   DRAW_LINE;
#property indicator_color2  clrRed;
#property indicator_style2  STYLE_DOT;
#property indicator_width2  1;
//--- plot Label3
#property indicator_label3  "Close";
#property indicator_type3   DRAW_LINE;
#property indicator_color3  clrAquamarine;
#property indicator_style3  STYLE_SOLID;
#property indicator_width3  1;


//--- input parameters
input int InpChannelPeriod=48; // Period
//--- indicator buffers
double ExtHighBuffer[];
double ExtLowBuffer[];
double ExtCloseBuffer[];
//---
int i,limit,start;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,ExtHighBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,ExtLowBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,ExtCloseBuffer,INDICATOR_DATA);   
//--- set accuracy
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
//--- set first bar from what index will be drawn
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,InpChannelPeriod);
   PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,InpChannelPeriod);
   PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,InpChannelPeriod);   
//---
   return(0);
  }

//+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- check for rates if(rates_total<InpChannelPeriod) return(0); //--- preliminary calculations if(prev_calculated==0) limit=InpChannelPeriod; else limit=prev_calculated; //--- the main loop of calculations for(i=limit;i<rates_total && !IsStopped();i++) { ExtHighBuffer[i]=100.0; ExtLowBuffer[i]=0.0; ExtCloseBuffer[i]=50.0; } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+

Стиль #property indicator_style2  STYLE_DOT; - не рисует вообще на графике

Стиль #property indicator_style2  STYLE_SOLID; - рисует на графике в стеле STYLE_DOT

Что это за аномалия, или руки у меня кривые?

 

Как лучше рассчитать скользящее среднее из графического массива - тут же в индикаторе?

Может есть какие функции готовые или библиотеки рекомендованные разработчиками?

 
Aleksey Vyazmikin:

Как лучше рассчитать скользящее среднее из графического массива - тут же в индикаторе?

Может есть какие функции готовые или библиотеки рекомендованные разработчиками?


Или даже простой вариант - отрисовать МА в подвале из iMA - у меня ерунда получается :(

Вызываю через функцию

double MA_TF(int index)
  {
   double MA[1];
   ResetLastError();
   if(CopyBuffer(handle_MA_TF,0,index,1,MA)<0)
     {
      PrintFormat("Failed to copy data from the handle_MA_TF indicator, error code %d",GetLastError());
      return(0.0);
     }
   return NormalizeDouble(MA[0],Digits());
  }

Но, получается как то не правильно - наизнанку чтоль...

 

С машкой сделал вызов наизнанку MA_TF(rates_total-i) - вроде как помогло, но смотрю на историю и иногда наблюдается расхождение с встроенным индикатором (даже с убранной нормализацией), может ли такое быть?

И, как заставить индикатор выводить десятичные значения?

 
Aleksey Vyazmikin:

Как лучше рассчитать скользящее среднее из графического массива - тут же в индикаторе?

Может есть какие функции готовые или библиотеки рекомендованные разработчиками?

Так в папке Include лежит MovingAverages.mqh в котором всё есть...
 
Alexey Viktorov:
Так в папке Include лежит MovingAverages.mqh в котором всё есть...

Спасибо, я не знал, а можно пример где работы с ним увидеть?

 
Aleksey Vyazmikin:

Спасибо, я не знал, а можно пример где работы с ним увидеть?

Алексей, поиск уже не работает?

Справа вверху есть поиск по файлам. Настраивается зона поиска нажатием на шестерню.


и вот результат


 
Alexey Viktorov:

Алексей, поиск уже не работает?

Справа вверху есть поиск по файлам. Настраивается зона поиска нажатием на шестерню.


и вот результат



Действительно, а почему бы не поискать у себя - спасибо!

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