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

 
CopyBuffer не нашел в мт4, только в мт5 В мт4 нет? есть простенько по номерам буферных массивов получить данные в мт4?
 
Valeriy Yastremskiy:
CopyBuffer не нашел в мт4, только в мт5 В мт4 нет? есть простенько по номерам буферных массивов получить данные в мт4?

нет

в МТ4 это iCustom() https://docs.mql4.com/ru/indicators/icustom

я проверял в прошлом году, вызов из ЕА iCustom() кэшируемый, т.е. если из ЕА вызовете на одном тике несколько раз  iCustom() для разных буферов или индексов, то сам индикатор будет пересчитан один раз на этот тик, т.е. с производительностью там все в порядке

ЗЫ: зачем МТ4 - если МТ5 уже "раскушали", производительности больше, тестер точнее... в целом нормальная штука для исследований, имхо

 
Igor Makanu:

нет

в МТ4 это iCustom() https://docs.mql4.com/ru/indicators/icustom

я проверял в прошлом году, вызов из ЕА iCustom() кэшируемый, т.е. если из ЕА вызовете на одном тике несколько раз  iCustom() для разных буферов или индексов, то сам индикатор будет пересчитан один раз на этот тик, т.е. с производительностью там все в порядке

ЗЫ: зачем МТ4 - если МТ5 уже "раскушали", производительности больше, тестер точнее... в целом нормальная штука для исследований, имхо

идеи легче отрабатывать на МТ4. Оболочка легче))) Нет так нет. Будем по дедовски в цикле в массив писать)))) В МТ5 масштабировать имеет смысл когда МТ4 перестает справляться)) а это либо медленно, либо слишком много данных. пока до этих этапов не дошел)))

добавлено. И когда идея отработана до допустимой ошибки.
 

Всем добрый день. Грааль машину практически-то закончил ваять, но у меня при компиляции около 50-60 предупреждений return value of 'OrderSend' should be checked        TREND+ _V_1,1.mq4   1626       11

Насколько я понял это от того, что я открытие ордеров пишу без всякой проверки- вот так

//--- АО БАЙ--

   /*УСЛОВИЕ 1*/
   if(flag_screen1==en_vbIkl_screen1 &&flag_screen2==en_vbIkl_screen2)
   { // НАЧАЛО УСЛОВИЕ 1
   if(ao_buy!=EMPTY_VALUE && count_orders_market_buy ==0)
   {
     OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_buy); // ОТКРЫВАЕМ БАЙ ОРДЕР
   }
   } // КОНЕЦ УСЛОВИЕ1
 
DanilaMactep:

Всем добрый день. Грааль машину практически-то закончил ваять, но у меня при компиляции около 50-60 предупреждений return value of 'OrderSend' should be checked        TREND+ _V_1,1.mq4   1626       11

Насколько я понял это от того, что я открытие ордеров пишу без всякой проверки- вот так

напиши так

if(OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_buy)) Print(Buy Open); // ОТКРЫВАЕМ БАЙ ОРДЕР
 
MakarFX:

напиши так

не фурычит данная строка кода:( сразу выдаёт 2 ошибки вот таких:

'Buy' - undeclared identifier    TREND+_1,1.mq4    860    98


'Open' - some operator expected    TREND+_V_1,1.mq4    860    102

а сам код вот такой

if(OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_market_buy)) Print(Buy Open); // ОТКРЫВАЕМ БАЙ ОРДЕР


Всё как и советовалось написал, с тем лишь отличием что изменил имя переменной для коммента, чтобы разделять коммент рыночных и отложенных ордеров. Что не так делаю?(((
 
Print("Buy Open");
 
DanilaMactep:

не фурычит данная строка кода:( сразу выдаёт 2 ошибки вот таких:

'Buy' - undeclared identifier    TREND+_1,1.mq4    860    98


'Open' - some operator expected    TREND+_V_1,1.mq4    860    102

а сам код вот такой


Всё как и советовалось написал, с тем лишь отличием что изменил имя переменной для коммента, чтобы разделять коммент рыночных и отложенных ордеров. Что не так делаю?(((

я пропустил ""

Vladislav Andruschenko:

Print("Buy Open");


 
С  первым стартом индикатора  в методе OnCalculate  не работает CopyRates
                MqlRates rates[];
                if (CopyRates(_Symbol, _Period, (datetime)SeriesInfoInteger(Symbol(), Period(), SERIES_SERVER_FIRSTDATE), 1, rates) == -1)
                {
                        return(0);
                }

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

 
BillionerClub:
С  первым стартом индикатора  в методе OnCalculate  не работает CopyRates

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

Справка: CopyRates

Примечание

Если интервал запрашиваемых данных полностью находится вне доступных данных на сервере, то функция возвращает -1. В случае если запрашиваются данные за пределами TERMINAL_MAXBARS (максимальное количество баров на графике), функция также вернет -1.

При запросе данных из индикатора, если запрашиваемые таймсерии еще не построены или их необходимо загрузить с сервера, то функция сразу же вернет -1, но при этом сам процесс загрузки/построения будет инициирован.

При запросе данных из эксперта или скрипта, будет инициирована загрузка с сервера, если локально этих данных у терминала нет, либо начнется построение нужной таймсерии, если данные можно построить из локальной истории, но они еще не готовы. Функция вернет то количество данных, которые будут готовы к моменту истечения таймаута, но загрузка истории будет продолжаться, и при следующем аналогичном запросе функция вернет уже больше данных.

При запросе данных по начальной дате и количеству требуемых элементов возвращаются только данные, дата которых меньше (раньше) или равна указанной. При этом интервал задается и учитывается с точностью до секунды. То есть дата открытия любого бара, для которого возвращается значение (объем, спред, значение в индикаторном буфере, цена Open, High, Low, Close или время открытия Time), всегда равна или меньше указанной.

При запросе данных в заданном диапазоне дат возвращаются только данные, попадающие в запрашиваемый интервал, при этом интервал задается и учитывается с точностью до секунды. То есть время открытия любого бара, для которого возвращается значение (объем, спред, значение в индикаторном буфере, цена Open, High, Low, Close или время открытия Time), всегда находится в запрошенном интервале.

Таким образом, если текущий день недели Суббота, то при попытке скопировать данные на недельном таймфрейме с указанием start_time=Последний_Вторник и stop_time=Последняя_Пятница функция вернет 0, так как время открытия на недельном таймфрейме всегда приходится на воскресенье, но ни один недельный бар не попадает в указанный диапазон.

Если необходимо получить значение, соответствующее текущему незавершенному бару, то можно использовать первую форму вызова с указанием start_pos=0 и count=1.

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
  • www.mql5.com
CopyRates - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Причина обращения: