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

 
Vladimir Karputov:


Используйте функции Copyxxx:

в которых задавайте нужный таймфрейм. Также полезные ссылки: Организация доступа к данным 


спасибо)
 

Здравствуйте, уважаемые форумчане! Столкнулся со следующей проблемой в Metatrader 5. При вставке ресурса командой

#resource "<путь_к_файлу_ресурса>"


теряется качество BMP изображения. Появляются всякие точки на изображении при вставке оного как объект OBJ_BIYMAP_LABEL.

Кто сталкивался с подобным, а главное как решили проблему?

 
Комментарии, не относящиеся к этой теме, были перенесены в "Вопросы от начинающих MQL4 MT4 MetaTrader 4".
[Удален]  

В mq4 PERIOD_H1 возвращает 60,как быть в mq5 ?

SL=SL_Start*(PERIOD_H4/P);
 
Nikolay Gaylis:

В mq4 PERIOD_H1 возвращает 60,как быть в mq5 ?


PeriodSeconds

PeriodSeconds Возвращает количество секунд в периоде. int  PeriodSeconds ( ENUM_TIMEFRAMES   period=PERIOD_CURRENT   // период графика ); Параметры period=PERIOD_CURRENT [in] Значение периода графика из перечисления ENUM_TIMEFRAMES. Если параметр не указан, то возвращается количество секунд текущего периода графика, на котором запущена программа. Возвращаемое значение Количество секунд в указанном периоде. Смотри также _Period, Периоды графиков, Дата и время, Видимость объектов https://www.mql5.com/ru/docs/common/periodseconds

[Удален]  
Vladimir Karputov:


PeriodSeconds

PeriodSeconds Возвращает количество секунд в периоде. int  PeriodSeconds ( ENUM_TIMEFRAMES   period=PERIOD_CURRENT   // период графика ); Параметры period=PERIOD_CURRENT [in] Значение периода графика из перечисления ENUM_TIMEFRAMES. Если параметр не указан, то возвращается количество секунд текущего периода графика, на котором запущена программа. Возвращаемое значение Количество секунд в указанном периоде. Смотри также _Period, Периоды графиков, Дата и время, Видимость объектов https://www.mql5.com/ru/docs/common/periodseconds


Спасибо!А как обратно получить значение периода по полученным секундам?

ENUM_TIMEFRAMES P;
P_sec=PeriodSeconds(P);
if(NEWBAR(S,P_sec)==true)
  {
  }

bool NEWBAR(string Sy,int Pe)
  {
   if(progon==false && time_bar[s_s]<TimeCurrent()-Pe)
     {
      CopyTime(Sy,Pe,0,1,time_bar_x);
      time_bar[s_s]=time_bar_x[0];
      progon=true;
        }else {progon=false;
     }
   return(progon);
  }

переменную Pe нужно преобразовать как-то в CopyTime

[Удален]  

хотя ладно...буду сразу использовать P до отправки в функцию которая

ENUM_TIMEFRAMES P;
P_sec=PeriodSeconds(P);
if(NEWBAR(S,P_sec)==true)
  {
  }

bool NEWBAR(string Sy,int Pe)
  {
   if(progon==false && time_bar[s_s]<TimeCurrent()-Pe)
     {
      CopyTime(Sy,P,0,1,time_bar_x);
      time_bar[s_s]=time_bar_x[0];
      progon=true;
        }else {progon=false;
     }
   return(progon);
[Удален]  

Ребят,переделываю из mq4 в mq5- результаты совершенно разные не пойму- сравните пожалуйста одинаково я получаю значения индикатора?

MQ4

         RSI1=iRSI(S,P,rsi_p,PRICE_MEDIAN,i_RSI);
         RSI2=iRSI(S,P,rsi_p,PRICE_MEDIAN,i_RSI+1);
         if(RSI2>50&&RSI1<50){}

MQ5

RSI_handle=iRSI(S,P,rsi_p,PRICE_CLOSE);
CopyBuffer(RSI_handle,0,0,100,RSI);
ArraySetAsSeries(RSI,true);
if(RSI[1+i_RSI]>50&&RSI[i_RSI]<50){}
Пока писал сам увидел что PRICE_MEDIAN и PRICE_CLOSE ,а помимо этого?
 

Продублирую вопрос сюда, в индикаторах никто не отзывается..

Начал изучать MQL5. Опыта в программировании нет, потому возникают некоторые вопросы и непонятки. Часть из них решается самостоятельно, на анализе примеров и частично методом тыка, но отдельные моменты не понять вот так сразу. Начал изучение с простого - получить вывод на главное окно графика две линии инструментов. Построение по Close текущего и дополнительного (родственного, примечание будет далее) инструмента по текущему таймфрейму на 1000 баров назад. Родственный инструмент - фьючерс следующей серии, он малоликвиден и всегда имеет некоторые пробелы в данных, т.е. количество сделок не такое частое, как в основной серии фьючерса. Задача казалось бы выполнена, но есть ошибки. О том, пригодится ли мне сглаживание сказать не могу, поэтому использовал iMA с периодом 1, чтобы в случае необходимости можно было сгладить без переделок.

Вот вопросы:

1. при компиляции, когда я копирую буффер iMA в массив, вижу предупреждение "possible loss of data due to type conversion". Что это такое и почему, о какой конвертации типов речь? Линии же отрисовались нормально и вроде ничего не пропало.

2. После отработки индикатора и появления линий двух инструментов на главном окне графика я вижу, что они не синхронизированы. Т.е. первый инструмент в норме и соответствует свечному графику основного окна. Второй (менее ликвидный) с пробелами, и поэтому он постепенно "поджимается" вызывая рассинхрон. А нужно, чтобы он синхронизировался по времени как-то. Это для меня пока непосильно. Надо увидеть правку наглядно, чтобы понять чего не хватает.

Вот скрин, как это выглядит. Желтая линия - то, что нужно синхронизировать относительно зеленой. Чтобы в желтой линии, где пробелы по датам просто были "соединения" предыдущий значений со следующими, а не поджатие с пропуском дат. Код в приложении.

Файлы:
 
ottenand:

Продублирую вопрос сюда, в индикаторах никто не отзывается..

Начал изучать MQL5. Опыта в программировании нет, потому возникают некоторые вопросы и непонятки. Часть из них решается самостоятельно, на анализе примеров и частично методом тыка, но отдельные моменты не понять вот так сразу. Начал изучение с простого - получить вывод на главное окно графика две линии инструментов. Построение по Close текущего и дополнительного (родственного, примечание будет далее) инструмента по текущему таймфрейму на 1000 баров назад. Родственный инструмент - фьючерс следующей серии, он малоликвиден и всегда имеет некоторые пробелы в данных, т.е. количество сделок не такое частое, как в основной серии фьючерса. Задача казалось бы выполнена, но есть ошибки. О том, пригодится ли мне сглаживание сказать не могу, поэтому использовал iMA с периодом 1, чтобы в случае необходимости можно было сгладить без переделок.

Вот вопросы:

1. при компиляции, когда я копирую буффер iMA в массив, вижу предупреждение "possible loss of data due to type conversion". Что это такое и почему, о какой конвертации типов речь? Линии же отрисовались нормально и вроде ничего не пропало.

2. После отработки индикатора и появления линий двух инструментов на главном окне графика я вижу, что они не синхронизированы. Т.е. первый инструмент в норме и соответствует свечному графику основного окна. Второй (менее ликвидный) с пробелами, и поэтому он постепенно "поджимается" вызывая рассинхрон. А нужно, чтобы он синхронизировался по времени как-то. Это для меня пока непосильно. Надо увидеть правку наглядно, чтобы понять чего не хватает.

Вот скрин, как это выглядит. Желтая линия - то, что нужно синхронизировать относительно зеленой. Чтобы в желтой линии, где пробелы по датам просто были "соединения" предыдущий значений со следующими, а не поджатие с пропуском дат. Код в приложении.


1. Хендл индикатора должен иметь тип int. Пример смотреть тут: CopyBuffer

int  CopyBuffer( 
   int       indicator_handle,     // handle индикатора 
   int       buffer_num,           // номер буфера индикатора 
   int       start_pos,            // откуда начнем  
   int       count,                // сколько копируем 
   double    buffer[]              // массив, куда будут скопированы данные 
   );