Вопрос по синтаксису MQL4.Помогите пжлста.

 

Ребята! Я в программировании - "чайник", но....хочу научиться(=очень надо!).Вопросы у меня в следующем.


1. Есть три условия: a = 0; b = 0; c = 0. Как написать код, чтобы выполнение операторов начиналось только тогда, когда все они одновременно имеют значение "0"?

Например, если я напишу так: 1. if (a = 0 && b = 0)

2. if (c = 0)

3. { v = 1; f = 1; Alert ("Приступить к выполнению") }

Это правильно?(=догадываюсь, что здесь ошибка!) Подскажите, как в MQL4 решаются "такие вопросы", когда с помощью оператора if требуется проверить 3(три) и более условия...хотя, вернее сказать так, какую конструкцию синтаксиса необходимо использовать, если выполнение операторов должно начинаться при наличии одновременно 3(Трёх) и более условий?


2. Можно ли в операторе if в качестве составного оператора использоваль операторы цикла( for, while) и switch ? Напомню, что синтаксис

оператора if такой: 1. if ( условие-выражение)

2. { оператор; оператор; .....и т.д } //-- вот, здесь(2-я стр.) можно вставлять операторы for, while и switch ?

ПОМОГИТЕ! ОЧЕНЬ НАДО!


 
if(a==0&&b==0&&c==0)

2. можно

ЗЫ: Вы посмотрите образцы из учебника, будет понятнее

 
Robot_al:

int a, b, c, v, f;


if ((a==0) && (b==0) && (c==0))
   { v = 1; f = 1; Alert ("Приступить к выполнению") }

 
Robot_al:

   


2. Можно ли в операторе if в качестве составного оператора использоваль операторы цикла( for, while) и switch ? Напомню, что синтаксис

оператора if такой: 1. if ( условие-выражение)

2. { оператор; оператор; .....и т.д } //-- вот, здесь(2-я стр.) можно вставлять операторы for, while и switch ?

ПОМОГИТЕ! ОЧЕНЬ НАДО!




if (условие)

 { оператор1; оператор2; .. оператор N;

 можно вставлять операторы for, while и switch!!!

 } 

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

 
Chasow:


Выбрал вас почему-то для вопроса...хе-хе-хе...вот, вы (a==0); (b==0); (c==0) в скобки взяли-выделили. А выше, парень

пишет (a==0&&b==0&&c==0). Вопрос, как MQL4 "видит" пробелы, он их игнорирует при написании кода и "пробелы" в программе предусмотрены иключительно для удобства программиста? Ответьте кто-нибудь, если точно знаете.

 
Robot_al:

Скобки имеют наивысший приоритет. Я много лет программирую на делфи и уже сформировались кое-какие принципы по отношению к синтаксису и написанию программ. Когда осваивал MQL4 частенько были проблемы с условиями, при которых условие верное, ошибок компилятор не выдает,а блок не выполняется. Особенно много проблем на подобие if (a==0 && b==0 || c!=0). А скобки помогают: if (((a==0) && (b==0)) || c!=0) и я уверен, что все будет выполнено именно так, как я этого хочу. А пробелы в данном языке действительно выбор каждого, но все же удобнее для себя же, и тем более для других использовать их.
 
Chasow:
Скобки имеют наивысший приоритет. Я много лет программирую на делфи и уже сформировались кое-какие принципы по отношению к синтаксису и написанию программ. Когда осваивал MQL4 частенько были проблемы с условиями, при которых условие верное, ошибок компилятор не выдает,а блок не выполняется. Особенно много проблем на подобие if (a==0 && b==0 || c!=0). А скобки помогают: if (((a==0) && (b==0)) || c!=0) и я уверен, что все будет выполнено именно так, как я этого хочу. А пробелы в данном языке действительно выбор каждого, но все же удобнее для себя же, и тем более для других использовать их.

1.Спасибо, Chasow! Ваши ответы доходчивы и просты(=понятны).(поясняя) Я пробовал до обращения на форум писать код по схеме, как предложено было выше, но...что-то у меня не получилось...наверное, вы правы насчёт скобок...попытаюсь.

2.(стесняясь) Рискну ещё задать вам вопрос...можете проигнорировать...хе-хе-хе...не обижусь.Вопрос, может даже и не из области программирования, а "комп.железа".Смотрите, есть процессоры с разной тактовой частотой, например, 533 МНz, 933 MHz, 3200 MHz ....Скажите, если мне надо обработать большой массив исторических данных котировок, то работа быстроты выполнения программы будет зависеть от частоты центрального процессора компа? Или же нет, или разница будет оч-ч-чень незначительной? Вот, в MQL4 программа из какого кол-ва строк считается наиболее оптимальной?

3. Не подскажете, а как в MQL4 отлаживаются программы...сейчас, попробую пояснить.Например, в том же Excel в VBA(бейсик) есть режим "Шаг с заходом", для таких "чайников", как я это оч-ч-ч-чень удобно! Но здесь как мне видеть, что переменным присваиваются значения на том или ином этапе программы? (пожимая плечами) Что пользоваться стандартной фукцией Alert ?

 
Robot_al:

Да, я также задавался вопросом железа. Сам код, какой бы он не был, выполняется быстрее, чем произойдет следующий тик, то есть быстрее чем будет следующее выполнение функции start советника. Думаю, даже несколько сотен строк. Конечно, торговые операции, пока не получат ответ от сервера несколько тормозят процесс, то есть, пока выполняется OredrSend или аналогичный запрос то программа просто ждет ответа от сервера и только по получению ответа (пложительного или же ошибка) передает выполнение на следующий оператор. Скорость процессора имеет значение при тестировании советников с различными входными параметрами. В терминале MT4 есть тестер, вызывается нажатием Ctrl+R, почитайте здесь на сайте о его использовании и возможностях. Я купил себе для ускорения расчетов i7 860. Но как оказалось, mt4 использует мощности всего лишь одного ядра и максимальная загрузка при запуске тестера стратегий составляла 13% от мощностей процессора. Конечно, если углубляться, i7 860 и 870 (так же как и i5) используют технологию TurboBoost, которая при использовании всего лишь одного ядра (как в нашем случае) с остальных ядер добавляет по 133Mhz к основному. Другое дело MT5 с языком программирования MQL5. Он уже использует все мощности компа и загружает процессор при тестировании на все 100%. Только пока что у моего брокера MT5 работает только с демо счетами. Скажу, что возможности MQL5 намного шире, для тех кто знает ООП, но вам советую изначально остановиться на MQL4. Для начала. А дальше сами примете решение. Подводя итог - хорошее железо не помешает, но это на сам процесс торговли, как таковой, не влияет. Лучше приобрести второй и третий монитор. Удобнее.

Что касается отладки программ, то вновь же, на сколько я знаю, в MQL4 ее просто нет. А вот уже в MQL5  присутствует. Я сам использую Print  а потом смотрю результаты во вкладке "журнал".

 

))) Посмотрите ветку https://forum.mql4.com/ru/25722/page51 - там эти вопросы исследовались в плане тестирования/оптимизации.

Но для авто-торговли, как правило, годится ЛЮБОЙ комп. Даже и лучше - нетбук. Не будет проблем с перебоями питания.

 
не нужны там никакие скобки в условиях, во втором посте самый верный ответ. Скобки ставятся когда условие очень сложное, тут же элементарщина.
 
Techno:
не нужны там никакие скобки в условиях, во втором посте самый верный ответ. Скобки ставятся когда условие очень сложное, тут же элементарщина.
да ладно пусть помучается, как говорится: "не доходит через глаза и уши, дойдет через руки и ноги". ))
Причина обращения: