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

 
Artyom Trishkin #:

Вы, когда писали эту строку в Вашем коде

понимали о чём её пишете?

Нет, не понимал. Взял чужую функцию. Слишком много изменений в МТ5. Для НЕПРОФЕССИОНАЛЬНОГО программиста. Слишком много. Чтобы разобраться во всех хитросплетениях... Спасибо!

 
Александр #:

Нет, не понимал. Взял чужую функцию. Слишком много изменений в МТ5. Для НЕПРОФЕССИОНАЛЬНОГО программиста. Слишком много. Чтобы разобраться во всех хитросплетениях... Спасибо!

Ставите курсор на функцию CopyBuffer() в редакторе кода и нажимаете F1. Открывается справка по языку и конкретно по функции. И там всё разжёвано, и даже с примерами.

А есть ещё и онлайн-справка, где спокойно можно почитать на досуге вообще всё и обо всём. На заре знакомства с MQL5 я так и делал - открывал справку и читал всё подряд.

Запомнить всё, конечно, не получится, но и не нужно - справка всегда под рукой.

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
  • www.mql5.com
Получает в массив buffer данные указанного буфера указанного индикатора в указанном количестве. Отсчет элементов копируемых данных (индикаторный...
 

Приветствую!

Есть код мт4

  res = LinearWeightedMA(1, 50, High); //iMA(_Symbol, 0, 50, 0, MODE_LWMA, PRICE_HIGH, 1);

Применяем <MovingAverages.mqh>

double LinearWeightedMA(const int position,const int period,const double &price[])
{
//---
  double result=0.0,sum=0.0;
  int    i,wsum=0;
//--- calculate value
  if(position>=period-1 && period>0) {
    for(i=period; i>0; i--) {
      wsum+=i;
      sum+=price[position-i+1]*(period-i+1);
    }
    result=sum/wsum;
  }
//---
  return(result);
}

--

Жёлтым выделено то, что никогда не выполниться.

Что Я делаю не так?

 
Vitaly Muzichenko #:

Приветствую!

Есть код мт4

Применяем <MovingAverages.mqh>

--

Жёлтым выделено то, что никогда не выполниться.

Что Я делаю не так?

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

 
Vitaly Muzichenko #:
if(position>=period-1 && period>0) {
// подставим значения:
if(1>=50-1 && 50>0) {
 
trader6_1 #:

Это стандартная функция в библиотеке в поставке с терминалом


 
Vitaly Muzichenko #:

Это стандартная функция в библиотеке в поставке с терминалом

Это МТ5 поэтому:

Направление индексации в массивах и таймсериях

"Все массивы и индикаторные буферы по умолчанию имеют направление индексации слева направо. Индекс первого элемента всегда равен нулю. Таким образом, самый первый элемент массива или индикаторного буфера с индексом 0 по умолчанию находится на крайней левой позиции, последний элемент находится на крайней правой позиции."

Если хотите отправить первый бар то отправлять надо rates_total-2

res = LinearWeightedMA(rates_total-2, 50, High);
 
Vitaly Muzichenko #:

Это стандартная функция в библиотеке в поставке с терминалом


В стандартной иначе:

//+------------------------------------------------------------------+
//| Linear Weighted Moving Average                                   |
//+------------------------------------------------------------------+
double LinearWeightedMA(const int position,const int period,const double &price[])
  {
   double result=0.0;
//--- check period
   if(period>0 && period<=(position+1))
     {
      double sum =0.0;
      int    wsum=0;

      for(int i=period; i>0; i--)
        {
         wsum+=i;
         sum +=price[position-i+1]*(period-i+1);
        }

      result=sum/wsum;
     }

   return(result);
  }
 
Artyom Trishkin #:

В стандартной иначе:

Это с мт4 код?

 
Vitaly Muzichenko #:

Это с мт4 код?

нет конечно