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

 
Vitaly Muzichenko:

Я может чего не понимаю, но вам нужно сюда long tml = (long)ObjectGetInteger(ChartID(),vlines_name[i],OBJPROP_TIME); подставлять имя линий, а не индекс, иначе не получите результат.

Да. Огромное спасибо. Добавил в цикл строчку и всё заработало )))

   for(int i = 0; i < vlines; i++)
   {
      vlines_name[i]    = ObjectName(ChartID(),i,0,OBJ_VLINE);
      long tml          = (long)ObjectGetInteger(ChartID(),vlines_name[i],OBJPROP_TIME);
      vlines_arr[i][0]  = tml;
      vlines_arr[i][1]  = (long)i;
   }
 

Здравствуйте! Задача: На графике отобразить свечи 2 инструментов, но на одном местами не хватает свечей. В цикле проходим по барам по инструменту со всеми данными сравнивая время баров 2 инструментов и когда натыкаемся на несоответствие надо чтобы по 1 инструменту цикл продолжался дальше, а по другому остановился до тех пор пока время баров не совпадет, чтобы на графике были пустые значения где не хватает баров. Как это сделать?

 
Как разместить на маркете Expert?
Проблема такая, при добавлении эксперта нужно выбрать тип эскперта. Мой эксперт относится к типу "нейросети", выбираю, добавляю и тут выясняется, что нельзя использовать внешний API для получения данных в эксперта.
А как может работать нейросеть на компе у конечного пользователя??? Или надо приложить инструкцию по установке Tensoflow + Keras + Ta-Lib+ пару скриптов на питоне?

Как этот вопрос решается на практике? Наверняка кто-то делал эксперты на нейросетях.
 

Доброго всем дня! Подскажите или поправьте, пожалуйста, код. Требуется на нулевом баре рисовать гистограмму, высота 500, цвет красный.

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots   1
#property indicator_type1   DRAW_COLOR_HISTOGRAM
#property indicator_color1  Red
#property indicator_style1  0
#property indicator_width1  1
#property indicator_minimum 0.0


double                    ExtBuffer[];
double                    ExtColorsBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//---- buffers   
   SetIndexBuffer(0,ExtBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,ExtColorsBuffer,INDICATOR_COLOR_INDEX);
   
//----
  }
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[])
  {
  
  ExtBuffer[0]=500;
  ExtColorsBuffer[0]=Red;
   
   return(rates_total);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
 
EfDim:

Доброго всем дня! Подскажите или поправьте, пожалуйста, код. Требуется на нулевом баре рисовать гистограмму, высота 500, цвет красный.

Нулевой бар, это самый левый бар. Текущий rates_total-1

 
Alexey Viktorov:

Нулевой бар, это самый левый бар. Текущий rates_total-1

Спасибо, Друг!
 

Здравствуйте!

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

//----------БЛОК 1---------
if(x)
 {
   func_1(a,b);
   ......
 }
//-----------БЛОК 2--------
if(z)
 {
  func(c,d);
  ....
 } 
//---------------------

Нужно, чтобы эти блоки работали в таких режимах:

 1)штатно, т.е, как написано, проверка условий блоков последовательно

 2)Блок 1 : проверка условия x отменяется и работа кода внутри отменяется; Блок 2: проверка условия z отменяется, а код внутри исполняется безусловно

3)Блок 1: проверка условия x отменяется, а код внутри исполняется безусловно; Блок 2 : проверка условия z отменяется и работа кода внутри отменяется

Переключать режимы надо вручную, в настройках советника.

(У меня фантазии хватило только на switch, три варианта исполнения, но тогда идет повтор кода, а хотелось бы избежать. Возможно?)

Торговые советники и собственные индикаторы - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Торговые советники и собственные индикаторы - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Среди программ для автоматического трейдинга можно выделить две большие категории: торговые роботы и индикаторы. Первые предназначены для совершения торговых операций на рынках, а вторые — для анализа котировок и выявления закономерностей в их изменении. При этом индикаторы могут использоваться непосредственно в роботах, образуя полноценную...
 

Добрый день.

Есть такой код:

         // Нормализация входных данных
         Print(TimeToString((datetime)vlines_arr[i][0]));
         Print("размер buf_Dsl = ",ArraySize(buf_Dsl));
         ArrayPrint(buf_Dsl);
         double d1         = 0.0;
         double d2         = 1.0;
         double x_min      = buf_Dsl[ArrayMinimum(buf_Dsl)];
         double x_max      = buf_Dsl[ArrayMaximum(buf_Dsl)];
         for(int n = 0; n < ArraySize(buf_Dsl); n++)
         {
            inp_Dsl[n]=(((buf_Dsl[n]-x_min)*(d2-d1))/(x_max-x_min))+d1; // array out of range
         }

Почему ругается не пойму...

2019.09.04 06:00
размер buf_Dsl = 6
 -7.25207 -12.75148 -14.52521 -13.95145 -12.49837  -3.17857
array out of range in '.....' (143,20)
Как можно выйти за пределы массива?
 
Сергей Таболин:

Добрый день.

Есть такой код:

Почему ругается не пойму...

Как можно выйти за пределы массива?

Вообще-то ругается на inp_Dsl[n]

 
Vladimir Karputov:

Вообще-то ругается на inp_Dsl[n]

Точно. Не задал размер... Спасибо.

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