Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2212

 
Murod Shamuratov #:

Есть индикатор написанной на mql5, надо переводить на mql4.

Что Вы пытались сделать и что у Вас не получается?

Ветка создана не для "сделать за кого-то", а для "помочь и  подсказать как сделать правильно"

 
ANDREY #:

Как я понял , поэлементно - это при помощи функции OrderSelect () Тем не менее меня раздирает любопытство - есть у этого массива имя или нет ?

Нет
 
Sergey Gridnev #:
Нет

Спасибо. Значит делать с этим массивом какие либо операции, например,  сортировать, нельзя?

Или какие то операции , кроме поэлементного копирования, mql4 делать  разрешает ?

 
ANDREY #:

Спасибо. Значит делать с этим массивом какие либо операции, например,  сортировать, нельзя?

Или какие то операции , кроме поэлементного копирования, mql4 делать  разрешает ?

Копируете поэлементно в собственный массив и делаете с ним что душе угодно

 
Artyom Trishkin #:

Копируете поэлементно в собственный массив и делаете с ним что душе угодно

Спасибо за исчерпывающий ответ

 
Всем доброе время суток . Скажите есть ли возможность повесить хоткеи на несколько действий в Mt 5?  Например наводим мышку на область графика жмем комбинацию кнопок и появляется вертикальная линия или горизонтальная . Спасибо заранее
 

 Как совместить два индикатора в одной программе? Например, iBands и iStochastic. Делаю так (объединил примеры из Справки):

#property indicator_chart_window
#property indicator_buffers 5
#property indicator_plots   5

#property indicator_label1  "Upper"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrMediumSeaGreen
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1

#property indicator_label2  "Lower"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrMediumSeaGreen
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1

#property indicator_label3  "Middle"
#property indicator_type3   DRAW_LINE
#property indicator_color3  clrMediumSeaGreen
#property indicator_style3  STYLE_SOLID
#property indicator_width3  1

#property indicator_label4  "Stochastic"
#property indicator_type4   DRAW_LINE
#property indicator_color4  clrLightSeaGreen
#property indicator_style4  STYLE_SOLID
#property indicator_width4  1

#property indicator_label5  "Signal"
#property indicator_type5   DRAW_LINE
#property indicator_color5  clrRed
#property indicator_style5  STYLE_SOLID
#property indicator_width5  1

#property indicator_minimum 0
#property indicator_maximum 100

#property indicator_level1  -100.0
#property indicator_level2  100.0

double UpperBuffer[];
double LowerBuffer[];
double MiddleBuffer[];
double StochasticBuffer[];
double SignalBuffer[];
int    handleBB;
int    handleSt;
int    bars_calculated=0;

int OnInit()
{
   SetIndexBuffer(0,UpperBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,LowerBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,MiddleBuffer,INDICATOR_DATA);

   PlotIndexSetInteger(0,PLOT_SHIFT,0);
   PlotIndexSetInteger(1,PLOT_SHIFT,0);
   PlotIndexSetInteger(2,PLOT_SHIFT,0);

   SetIndexBuffer(3,StochasticBuffer,INDICATOR_DATA);
   SetIndexBuffer(4,SignalBuffer,INDICATOR_DATA);

   handleBB=iBands(_Symbol,PERIOD_CURRENT,20,0,2.0,PRICE_CLOSE);
   handleSt=iStochastic(_Symbol,PERIOD_CURRENT,5,3,3,MODE_SMA,STO_LOWHIGH);

   if(handleBB==INVALID_HANDLE)
      return(INIT_FAILED);
   if(handleSt==INVALID_HANDLE)
      return(INIT_FAILED);

   return(INIT_SUCCEEDED);
}

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[])
{
   int values_to_copy;
   int calculated=BarsCalculated(handleBB);

   if(calculated<=0)
      return(0);

   if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
      if(calculated>rates_total) values_to_copy=rates_total;
      else                       values_to_copy=calculated;
   else
      values_to_copy=(rates_total-prev_calculated)+1;

   if(!FillArraysFromBuffersBB(MiddleBuffer,UpperBuffer,LowerBuffer,0,handleBB,values_to_copy)) return(0);
   if(!FillArraysFromBuffersSt(StochasticBuffer,SignalBuffer,handleSt,values_to_copy)) return(0);

   bars_calculated=calculated;

   return(rates_total);
}

bool FillArraysFromBuffersBB(double &base_values[],
                             double &upper_values[],
                             double &lower_values[],
                             int shift,
                             int ind_handle,
                             int amount
                            )
{
   if(CopyBuffer(ind_handle,0,-shift,amount,base_values)<0)
      return(false);

   if(CopyBuffer(ind_handle,1,-shift,amount,upper_values)<0)
      return(false);

   if(CopyBuffer(ind_handle,2,-shift,amount,lower_values)<0)
      return(false);

   return(true);
}

bool FillArraysFromBuffersSt(double &main_buffer[],
                             double &signal_buffer[],
                             int ind_handle,
                             int amount
                            )
{
   if(CopyBuffer(ind_handle,MAIN_LINE,0,amount,main_buffer)<0)
      return(false);

   if(CopyBuffer(ind_handle,SIGNAL_LINE,0,amount,signal_buffer)<0)
      return(false);

   return(true);
}

void OnDeinit(const int reason)
{
   if(handleBB!=INVALID_HANDLE)
      IndicatorRelease(handleBB);
   if(handleSt!=INVALID_HANDLE)
      IndicatorRelease(handleSt);
}

 В таком виде отображается только Bollinger Bands, а при замене первой строки на

#property indicator_separate_window

исчезает Bollinger Bands и появляется только Stochastic. Необходимо отображение обоих индикаторов.

 
x572intraday #:

 Как совместить два индикатора в одной программе? Например, iBands и iStochastic. Делаю так (объединил примеры из Справки):

 В таком виде отображается только Bollinger Bands, а при замене первой строки на

исчезает Bollinger Bands и появляется только Stochastic. Необходимо отображение обоих индикаторов.

Индикатор может отображаться либо только в главном окне чарта, либо в подокне.

 
Artyom Trishkin #:

Индикатор может отображаться либо только в главном окне чарта, либо в подокне.

 Вот так незадача. А как же тогда снимать показания с нескольких разных индикаторов программно?

 
x572intraday #:

 Вот так незадача. А как же тогда снимать показания с нескольких индикаторов программно?

С каждого снимать отдельно. Зачем их в один-то паковать?