Про язык программирования MQL5 - страница 2

 

Есть же незавершенный файл. Зашел в терминал и сразу видно где нужный файл вместо того чтобы копатся в папке.

Не завершенный файл у вас в редакторе, который запоминает все открытые файлы.

Прост нажмите на F4 и увидите свой файл.

 
Renat:

Не завершенный файл у вас в редакторе, который запоминает все открытые файлы.

Прост нажмите на F4 и увидите свой файл.


Я про то и говорю. Вместо открытия файла в терминале нужно открыть другой файл или метаэдитор и открыть вкладку с файлами и там открыть нужный файл.

Опять теряется практичность. 

 
Renat:

Один раз, а не 10000 раз.

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


Нисколько не делает практичным. Делает медленным и ограниченным на самом деле.

Зачем вам вызывать ArraySetAsSeries? Используйте прямой метод доступа без переопределения направления.


...

Я имею ввиду практичность написания кода.

 ArraySetAsSeries

Потому что он без этого считает задом наперёд. 

 

После связывания динамический массив buffer[] будет иметь индексацию как в обычных массивах, даже если для связываемого массива будет предварительно установлена индексация как в таймсериях. Если необходимо изменить порядок доступа к элементам индикаторного массива, необходимо применить функцию ArraySetAsSeries() после связывания массива функцией SetIndexBuffer().

 

 Неважно, какое свойство имеет приемный массив - as_series=true или as_series=false, данные будут скопированы таким образом, что самый старый по времени элемент будет в начале физической памяти, отведенной под массив.

 

Это 100% не практично. 

//+------------------------------------------------------------------+
//|                                                      Volumes.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
//---- indicator settings
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
#property indicator_type1   DRAW_HISTOGRAM
#property indicator_color1  Green
#property indicator_style1  0
#property indicator_width1  1
#property indicator_minimum 0.0
//--- input data

//---- indicator buffers
double                    ExtVolumesBuffer[];

 int volumes;
   double H_V[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
   volumes=iVolumes(Symbol(),0,VOLUME_TICK);
  
//---- buffers   
   SetIndexBuffer(0,ExtVolumesBuffer,INDICATOR_DATA);
   ArraySetAsSeries(ExtVolumesBuffer,true);

//---- name for DataWindow and indicator subwindow label
   IndicatorSetString(INDICATOR_SHORTNAME,"Volumes hrumes");
//---- indicator digits
   IndicatorSetInteger(INDICATOR_DIGITS,0);
//----
  }
//+------------------------------------------------------------------+
//|  Volumes                                                         |
//+------------------------------------------------------------------+
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[])
  {

   
     
      //ArrayResize(H_V,ArraySize(volume));
      
     
       CalculateVolume();
//--- OnCalculate done. Return new prev_calculated.
   return(rates_total);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CalculateVolume()
  {
 int copied=CopyBuffer(volumes,0,0,30,H_V);
 ArraySetAsSeries(H_V,true);

//---
   for(int i=0;i<copied;i++)
     {
      //--- get some data from src buffer
 
      //Comment();
      //--- calculate indicator
      ExtVolumesBuffer[i]=double(H_V[i]);
      
      //Alert(ExtVolumesBuffer[i]);
      
   
     }
//---
  }
//+------------------------------------------------------------------+
 

Я понял про скорость mql5. 

Ладно. Это хорошо.

 

Но с порядком индексации это беда.

Что в Copy...

Что в индикаторных буферах

 

TimeDayOfWeek

Можно узнать только через структуру?

Неужели эта функция тоже намного тяжелее структурной? 

 
eevviill:

TimeDayOfWeek

Можно узнать только через структуру?

Неужели эта функция тоже намного тяжелее структурной? 

////////////////////////////////////////////////////////////////
int TimeDayOfWeek(datetime time_of_week)
{
MqlDateTime day_week_s;
TimeToStruct(time_of_week,day_week_s);

return(day_week_s.day_of_week);
}

При написании day_week_s.day_of_week 

в эдиторе не высвечиваются возможные варианты струткуты. 

 

ChartGetInteger

Почему тип long?

В свойствах нету типа лонг, максимум инт. 

 

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

const int rates_total,      // размер входных таймсерий
                 const int prev_calculated,  // обработано баров на предыдущем вызове
                 const datetime &time[],     // Time
                 const double &open[],       // Open
                 const double &high[],       // High
                 const double &low[],        // Low
                 const double &close[],      // Close
                 const long &tick_volume[],  // Tick Volume
                 const long &volume[],       // Real Volume
                 const int &spread[]         // Spread

 

Чтобы передать один из этих массивов нужно создавать буфер и туда копировать, а потом передавать? 

 

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

Его делали с умом и глубоким пониманием на основе предыдущих трех поколений MQL языков.

Просто используйте его, держа в уме, что то или иное решение там неспроста.

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