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

 

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

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

//----------БЛОК 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]

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

[Удален]  

Ещё вопрос.

Есть структура

struct Fann
{
   int      answer;
   double   v_main_up;
   double   v_add_up;
   double   v_main_dn;
   double   v_add_dn;
   double   data_1[];
   double   data_2[];
   double   data_3[];
};
Fann vfann;

Я её заполнил и хочу сохранить в файл.

FileWriteStruct(filehandle,vfann);

Компилятор ругается - 'vfann' - structures or classes containing objects are not allowed

Я так понимаю, ему не нравятся массивы. А как можно сохранить эту структуру?
 
Сергей Таболин:

Ещё вопрос.

Есть структура

Я её заполнил и хочу сохранить в файл.

Компилятор ругается - 'vfann' - structures or classes containing objects are not allowed

Я так понимаю, ему не нравятся массивы. А как можно сохранить эту структуру?

Да, массивов не должно быть. FileWriteStruct

... Структура не должна содержать строки, динамические массивы, виртуальные функции, а также указатели на объекты и функции.

Документация по MQL5: Файловые операции / FileWriteStruct
Документация по MQL5: Файловые операции / FileWriteStruct
  • www.mql5.com
//|                                          Demo_FileWiteStruct.mq5 | //|                        Copyright 2013, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Структура для хранения данных свечи                              |...
 
Сергей Таболин:

Ещё вопрос.

Есть структура

Я её заполнил и хочу сохранить в файл.

Компилятор ругается - 'vfann' - structures or classes containing objects are not allowed

Я так понимаю, ему не нравятся массивы. А как можно сохранить эту структуру?
Создать структуру, в которой вместо массивов будет структура. Сначала каждый массив упаковать в свою структуру. Затем полученную структуру упаковать в результирующую структуру. Распаковывать в обратном порядке.
 
Сергей Таболин:

Я так понимаю, ему не нравятся массивы. А как можно сохранить эту структуру?

переводить в текст, сохранять поэлементно.

[Удален]  
Artyom Trishkin:
Создать структуру, в которой вместо массивов будет структура. Сначала каждый массив упаковать в свою структуру. Затем полученную структуру упаковать в результирующую структуру. Распаковывать в обратном порядке.
Igor Zakharov:

переводить в текст, сохранять поэлементно.

Спасибо.

А если сделать так:

struct Fann
{
   int      answer;
   double   v_main_up;
   double   v_add_up;
   double   v_main_dn;
   double   v_add_dn;
};
Fann vfann;

   double   data_1[];
   double   data_2[];
   double   data_3[];
...........................
      FileWriteStruct(filehandle,vfann);
      FileWriteArray(filehandle,data_1);
      FileWriteArray(filehandle,data_2);
      FileWriteArray(filehandle,data_3);

FILE_BIN 

Потом так же по порядку это всё можно будет считать в структуру и массивы?

А если таких записей несколько?

 
Сергей Таболин:

Спасибо.

А если сделать так:

FILE_BIN 

Потом так же по порядку это всё можно будет считать в структуру и массивы?

А если таких записей несколько?

Ну да. В том совете я тоже не смог влёт разобраться. Если вообще никак, то можно и так сделать. Но всё-же лучше разобраться как сделать структуру внутри структуры. Достаточно спросить как это сделать. Заодно и я чего-то ещё узнаю...