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

 

Подготовимся: 

enum ENUM_case
  {
   M=1,// Больше A
   L=2,// Меньше A
   ML=3,//Больше А и меньше Б
   LM=4 //Меньше А или больше Б
  };

struct param
  {
   int               cas; //Case
   double            a; // A
   double            b; //B  
  };
param params[];
double data[3]; //Массив для записи текущих параметров

Зададим переменные 

sinput string atata0; //Параметры пробитие 
sinput string atata1; //Объем
input ENUM_case bc1=1; //Логика
input double ba1=1;//A
input double bb1=1;//B
sinput string atata2; //Сделки
input ENUM_case bc2=1;//Логика
input double ba2=1;//A
input double bb2=1;//B
sinput string atata3; //Заявки
input ENUM_case bc3=1;//Логика
input double ba3=1;//A
input double bb3=1;//B

 В OnInit идиотизм вот такого вида:

   ArrayResize(params,3);
   params[0].cas=bc1;
   params[0].a=ba1;
   params[0].b=bb1;
   params[1].cas=bc2;
...

 Не понимаю, почему нельзя записывать input переменные сразу в массив или инициализировать массив переменными :(

Где-то внутри советника заполняем массив data и запускаем функцию проверки:

bool Conditions()
{
int num=ArraySize(params);
for (int i=0;i<num;i++)
{
switch(params[i].cas) 
{
case 1 : if (!(data[i]>=params[i].a)){return(false);break;}
case 2 : if (!(data[i]<=params[i].a)){return(false);break;}
case 3 : if (!(data[i]>=params[i].a && data[i]<=params[i].b)){return(false);break;}
case 4 : if (!(data[i]<=params[i].a || data[i]>=params[i].b)){return(false);break;}
}
}
return(true);
}

 Пока как-то так. Существуют варианты получше?

 

Добрый день! 

У меня не получается купить понравившуюся програмку из маркета (МТ4).

Вроде бы делал все правильно:

впервые пополнил счет аккауунта MQL5.community (через WM),

потом зарегил аккаунт в МТ4..


Но нажимая "купить" или "арендовать" (на 1 год хочу)

-мне не снимают с пополненного счета,

а предлагают вновь снять с WM, подставляя форму заполнения WM

(и, соответственно, предлагая указать и пароль от Вебмани)..


Мне показалось это несколько странным..

-И зачем тогда я пополнял счет аккауунта MQL5.community?..


Подскажите, кто в курсе, -может чего-то здесь я не догоняю?..


заранее благодарю


============

спасибо, недождался ответа и разобрался сам. _все нормально

 
Антон:

Подготовимся: 

Зададим переменные 

 В OnInit идиотизм вот такого вида:

 Не понимаю, почему нельзя записывать input переменные сразу в массив или инициализировать массив переменными :(

Где-то внутри советника заполняем массив data и запускаем функцию проверки:

 Пока как-то так. Существуют варианты получше?

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

Не понимаю, почему нельзя записывать input переменные сразу в массив или инициализировать массив переменными :( 
Массив можно инициализировать только константами, так как код инициализации создается на этапе компиляции, а в этот момент значения переменных неизвестны.

Еще придирки чисто по дизайну. У вас же есть ENUM_case, а все равно используете числовые значения. 

 
Alexey Volchanskiy:

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

Не понимаю, почему нельзя записывать input переменные сразу в массив или инициализировать массив переменными :( 
Массив можно инициализировать только константами, так как код инициализации создается на этапе компиляции, а в этот момент значения переменных неизвестны.

Еще придирки чисто по дизайну. У вас же есть ENUM_case, а все равно используете числовые значения. 

Раз нормально, буду дорабатывать. Спасибо!
С утра немного переклинило, подумал, врдуг есть какой-то хитрый оператор для такого. 

 
vaso55555:

Добрый день! 

У меня не получается купить понравившуюся програмку из маркета (МТ4).

Вроде бы делал все правильно:

впервые пополнил счет аккауунта MQL5.community (через WM),

потом зарегил аккаунт в МТ4..


Но нажимая "купить" или "арендовать" (на 1 год хочу)

-мне не снимают с пополненного счета,

а предлагают вновь снять с WM, подставляя форму заполнения WM

(и, соответственно, предлагая указать и пароль от Вебмани)..


Мне показалось это несколько странным..

-И зачем тогда я пополнял счет аккауунта MQL5.community?..


Подскажите, кто в курсе, -может чего-то здесь я не догоняю?..


заранее благодарю

Должно сниматься с внутреннего счета, во всяком случае у меня так было всегда, когда на сигналы подписывался, но что маркет что сигнал суть оплаты одинаковая. На внутреннем счете достаточно средств для оплаты в маркете ?
 
Антон:

Раз нормально, буду дорабатывать. Спасибо!
С утра немного переклинило, подумал, врдуг есть какой-то хитрый оператор для такого. 

Я всегда говорил, не надо оптимизировать программу в процессе разработки, не надо тратить на это время. Сначала напишите четкий, понятный и прибыльный алгоритм, а уже потом, если надо, оптимизируйте узкие места.
 
Vladimir Zubov:
Должно сниматься с внутреннего счета, во всяком случае у меня так было всегда, когда на сигналы подписывался, но что маркет что сигнал суть оплаты одинаковая. На внутреннем счете достаточно средств для оплаты в маркете ?
спасибо, все нормально -уже разобрался
 

Здравствуйте, можно ли как то определить режим работы тестера в отношении цен:

- по ценам открытия,
- ohlc
- все тики?


 
elibrarius:

Здравствуйте, можно ли как то определить режим работы тестера в отношении цен:

- по ценам открытия,
- ohlc
- все тики?


Там же есть соответствующие выпадающие окна с режимами.
 
Alexey Volchanskiy:
Там же есть соответствующие выпадающие окна с режимами.

Задать то режим я могу, надо, чтобы эксперт узнал, в каком режиме (по ценам) при тестировании, он запущен.

Мне приходит в голову только 1 вариант,

если в течении бара был только 1 тик, то - по ценам открытия,
если было 4 тика на 0, 20,40,59 секундах - ohlc
иначе - все тики.

Но боюсь, что могут быть варианты, которые совпадут с чужим условием для определения типа
Может попроще есть вариант?