Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1690

 
Nikolay Ivanov #:

Немного поправлю.. Критической ошибки не будет, просто булевая OrderSelect вернет false.. и все.. Но конечно лучше избегать..  Ибо при некорректном использовании возможностей кода сложно предсказать возможные косяки..

Да, конечно. Но только при использовании штатных, терминальных массивов, которые никому не видны, и доступ к которым осуществляется штатными функциями, имеющих защиту от выхода за пределы и возвращающие флаги ошибок. Я же имел в виду работу со своими массивами, ведь:

Но как только человек поймёт, что надо бы кэшировать данные штатных массивов, и начнёт работать со своими - вот там-то и потребуются полученные знания и привычка к аккуратности при обращении к массивам.

А ведь всё, чем тут люди занимаются в последнее время, при использовании собственных кэшей данных (исторических и рыночных) делается куда проще и быстрее - там можно сортировать как хочешь и выбирать что хочешь, и получать новые массивы с только требуемыми данными, и их тоже сортировать как хочешь и выбирать из них что хочешь.

Но это уже следующий уровень использования возможностей терминала и его API - MQL.

 
Nerd Trader #:

Первому ордеру по умолчанию даётся маджик = 1. Далее включается в работу цикл:

Начало итерации magic = 1 unique = 0, в конце (когда уже есть один ордер с маджиком = 1 ) magic всё ещё 1, а unique = 0
Вторая итерация magic = 2 unique = 0, в конце, magic = 2, а unique = 1 (нет совпадения) и по реторну присваивается 2-му ордеру magic = 2.
С третим должно было быть также...

Хотел запринтовать весь процесс, но что-то пошло не так:

https://www.mql5.com/ru/articles/5687
Почитайте на досуге. И глупо Магик просто нумеровать. Его надо шифровать. В него можно засунуть номер, тип, тикет, даже время создания ордера
 
Valeriy Yastremskiy #:
https://www.mql5.com/ru/articles/5687
Почитайте на досуге. И глупо Магик просто нумеровать. Его надо шифровать. В него можно засунуть номер, тип, тикет, даже время создания ордера
Почитаем. Не знаю зачем магик надо шифровать, мне достаточно порядковой нумерации. Вариант с присвоением найбольшего магика + 1 вполне подходит, но мне нужно разобраться почему мой код не работает.
 
Ivan Butko #:
Подскажите, пожалуйста, приём (манёвр), как заставить терминал запомнить несколько значений? 

Например, задача:

Дано N свечей назад. Найти свечи размером >= X пунктов, запомнить их количество и размер каждого из них. Если текущая свеча после закрытия оказалась >= X пунктов, то сравнить её размер с общим кол-вом подсчитанных свечей и вывести результат - какое место она занимает по размеру среди всех найденных. 
MakarFX #:

Терминал и так все помнит...архив котировок!

А для советника или индикатора надо это

Макар, спасибо за ответ. К сожалению, не осилил пока указанную страницу. Как решить эту задачу через массивы, не понимаю. 

 
Ivan Butko #:

Макар, спасибо за ответ. К сожалению, не осилил пока указанную страницу. Как решить эту задачу через массивы, не понимаю. 

Я с массивами пока не дружу...

может кто-то из знатоков тебе поможет.

 
Maxim Kuznetsov #:

есть тьма бесплатных и неплохих курсов по C/C++.

Mql к ним близок и можно невозбранно учиться. Благо что глубоких познаний не потребуется. Но хотя-бы синтаксис языка и базовые основы алгоритмов. 

Иначе какая-то ерунда в топике получается, вместо консультаций по платформе и алгоритмам, диалоги на уровне начальной школы - где поставить ; что такое цикл и почему индексы с 0

есть например сайт intuit.ru - там есть курсы по C и алгоритмам, потратьте своё время, пару недель от силы. Заодно бумажку можно получить :-)

Лучшая мотивация изучать что-либо, когда есть необходимость. Я раньше пытался по учебникам учить Си, С++, только не знаю откуда должна появиться мотивация выполнять задания, например: перевести градусы Цельсия в Фаренгейта и т.д. А когда есть реальная потребность, как у меня, в написании советника - другое дело. Я вот узнал за неделю по мере необходимости больше чем когда-либо: классы, структуры и т.д. Паралельно с этим потребовалось ещё изучить и применять git. Сейчас смотрю в сторону овладевания каким-нибудь кошерным редактором vim или emacs.

З.Ы.
У меня есть видеокурс по mql4 но даже его не хватает сил смотреть, т.к. там пишут не те совы, что мне надо. Да, идеальный курс, это курс где пишут твой советник.
 
Nerd Trader #:

У меня есть видеокурс по mql4 но даже его не хватает сил смотреть, т.к. там пишут не те совы, что мне надо. Да, идеальный курс, это курс где пишут твой советник.

Какая жуть... А "те" совы - это какие? Не чернобыльские? Просто насколько мне известно, совы не умеют писать. Мало того, они вообще об этом понятия не имеют.

 
Artyom Trishkin #:

Какая жуть... А "те" совы - это какие? Не чернобыльские? Просто насколько мне известно, совы не умеют писать. Мало того, они вообще об этом понятия не имеют.

Угу, угу. Пишет филин.
 
Nerd Trader #:
Почитаем. Не знаю зачем магик надо шифровать, мне достаточно порядковой нумерации. Вариант с присвоением найбольшего магика + 1 вполне подходит, но мне нужно разобраться почему мой код не работает.
Глупо, потому что ордера и так пронумерованы. Они имеют номера порядковые и тикеты. И вы порядковые номера плюс 1 пишете в Магик. И делаете это даже без отличительного префикса, по которому могли бы отличить нужные вам ордера.

 

Добрый вечер,помогите участок кода в MQL4 переписать для компилятора MQL5 если не трудно,спасибо!

   FLU=iCustom(NULL,0,"FractalsLine",0,0);
   FLL=iCustom(NULL,0,"FractalsLine",1,0);
   MA_1_t=iMA(NULL,0,Period_MA_1,0,MODE_EMA,PRICE_TYPICAL,0);
   MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_EMA,PRICE_TYPICAL,0);
   MA_3_t=iMA(NULL,0,Period_MA_3,0,MODE_EMA,PRICE_TYPICAL,0);
   MA_4_t=iMA(NULL,0,Period_MA_4,0,MODE_EMA,PRICE_TYPICAL,0);
   Sig_c=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
   Sig_p=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
   Macd_c=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
   Macd_p=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
   RCI_t = iRSI(NULL,0,14,0,0) - 50;
   Atr=iATR(0,0,14,0);
   WPR=iWPR(NULL,PERIOD_H1,14,0);
   Vol=iVolume(NULL,0,0);
   Stoh_m=iStochastic(NULL,0,21,9,9,MODE_SMA,0,MODE_MAIN,0);
   Stoh_s=iStochastic(NULL,0,21,9,9,MODE_SMA,0,MODE_SIGNAL,0);
Причина обращения: