[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 183

 

Здравствуйте.

Подкажите, пожалуйста, можно ли рассчитать расстояние в пунктах между двумя машками.

Мой вариант приведён ниже, но он не работает так, как изначально задумывалось.

Заранее благодарю.

  int g;
  double maHX_fast=iMA(NULL,fast_maHX_timeframe,fast_maHX_period,0,fast_maHX_method,fast_maHX_price,0);
  double maHX_slow=iMA(NULL,slow_maHX_timeframe,slow_maHX_period,0,slow_maHX_method,slow_maHX_price,0);
  g = maHX_slow - maHX_fast;
  Alert (g);
 
nemo811:

Мой вариант приведён ниже, но он не работает так, как изначально задумывалось.

Нашёл ошибку. Вот рабочий вариант:

  double g;
  double maHX_fast=iMA(NULL,fast_maHX_timeframe,fast_maHX_period,0,fast_maHX_method,fast_maHX_price,0);
  double maHX_slow=iMA(NULL,slow_maHX_timeframe,slow_maHX_period,0,slow_maHX_method,slow_maHX_price,0);
  g = (maHX_slow - maHX_fast)/Point;
  Alert (g);
 

Доброго времени суток....

Как передать значение цены закрытия ордера с одного терминала на другой, торгующих на одной валютной паре ?

 
TANKER:

Доброго времени суток....

Как передать значение цены закрытия ордера с одного терминала на другой, торгующих на одной валютной паре ?


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

Всем добрый вечер!

Возник следующий вопрос по массивам.

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

Ниже привел небольшой код, думаю по комментариям будет все понятно.

Логика следующая:

1. Задаем необходимое количество баров.

2. Прокручиваем всё это дело в цикле.

3. Ищем отработку заданного условия (close_1>close_2&&close_2<close_3).

4. Если условие выполняется, то считаем разность diff между ценой закрытия close_1 и close_2.

А дальше собственно сами вопросы:

1. Как правильно сформировать массив и записать туда полученные значения diff (само собой размерность массива определяется в зависимости от количества полученных значений) ???

2. Посчитать и вывести количество элементов в массиве ???

3. Выбрать например 3, 6, 7 элемент и посчитать их сумму ???

4. И последнее, непосредственно вывести например в Print/Alert весь полученный массив, а не только отдельно взятый элемент ???

#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
   //определяем переменные
   int i, bars;
   double close_1, close_2, close_3;//цена закрытия
   double diff;//вычисление разности close_1 и close_2
   double Mas[];//массив куда надо заносить данные
   
   
   //устанавливаем значения переменных
   bars=60;//количество баров для анализа
   
   for(i=1;i<=bars;i++)
   {
      close_1=iClose(NULL,PERIOD_M1,i);
      close_2=iClose(NULL,PERIOD_M1,i+1);
      close_3=iClose(NULL,PERIOD_M1,i+2);
      
      //условие для отбора в массив
      if(close_1>close_2&&close_2<close_3)//если выполняется это условие, тогда
      {
         diff=close_1-close_2; //считаем разность и записываем это дело в массив 
         
         /*
         Собственно вопросы:
         1. Как правильно сформировать массив и записать туда полученные значения diff ???
         2. Посчитать и вывести количество элементов в массиве ???
         3. Выбрать например 3, 6, 7 элемент и посчитать их сумму ???
         4. И последнее, непосредственно вывести например в Print/Alert весь полученный массив, а не только отдельно взятый элемент ???
         */
         
         //Это просто вывод, чтобы удостовериться что наше условие работает, можно потереть... 
         Alert("i ",i," diff: ",DoubleToStr(diff,5));
         
      }
   }


   return(0);
  }
//+------------------------------------------------------------------+
Ну и картинка для наглядности, какое условие обрабатываем. : ))

Всем заранее спасибо!

 
NickXXX:

Всем добрый вечер!

Возник следующий вопрос по массивам.

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

Смеяться после слова индикатор.

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

В принт/алерт весь массив это несколько нечитабельно, но через перебор и создание длинной строки в цикле вполне возможно.

3. Выбрать например 3, 6, 7 элемент и посчитать их сумму ???

Либо так не шутим, либо читаем документацию.

double Summa=Mas[3]+Mas[6]+Mas[7];

Рекомендуется к прочтению https://book.mql4.com/ru/variables/arrays

https://docs.mql4.com/ru/array

 
splxgf:

Смеяться после слова индикатор.

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

В принт/алерт весь массив это несколько нечитабельно, но через перебор и создание длинной строки в цикле вполне возможно.

Либо так не шутим, либо читаем документацию.

double Summa=Mas[3]+Mas[6]+Mas[7];

Рекомендуется к прочтению https://book.mql4.com/ru/variables/arrays

https://docs.mql4.com/ru/array

Да, насчет суммы можно было не спрашивать.) И про индикатор здесь речь не идет. Это скорее пример, чтобы мог нормально разобраться с массивами.

Рекомендуемую к прочтению статью я уже видел, с данным вопрос справиться она мне не помогла.

Поэтому, вопрос остается актуальным... Каким образом формировать массив в данном примере??? Буду очень признателен, если приведете код для наглядности. Так проще понимается о чем речь.

 

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

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

 
splxgf:

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

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

Хорошо, про индикатор понятно, лучше всё в нем считать и в эксперт уже значения отправлять.

Но здесь вопрос немного в другом, я не могу массив забить данными, он мне нули выводит. Хочу понять именно это.

Опять же на данном примере... Привязка к барам у меня есть, просто последовательно идем по i и отрабатываем нужное условие close_1>close_2&&close_2<close_3 (чисто для примера взял).

И вот теперь самое интересное мы посчитали diff=close_1-close_2. Как теперь это значение diff поместить в массив???

С размерностью я так думаю, что можно сделать дополнительную переменную int n и в условие if увеличивать на 1 (n++), как раз получим сколько раз сработало условие и возьмем это число за размерность.

Но все же, как поместить значение diff в массив???

 
NickXXX:

Хорошо, про индикатор понятно, лучше всё в нем считать и в эксперт уже значения отправлять.

Но здесь вопрос немного в другом, я не могу массив забить данными, он мне нули выводит. Хочу понять именно это.

Опять же на данном примере... Привязка к барам у меня есть, просто последовательно идем по i и отрабатываем нужное условие close_1>close_2&&close_2<close_3 (чисто для примера взял).

И вот теперь самое интересное мы посчитали diff=close_1-close_2. Как теперь это значение diff поместить в массив???

С размерностью я так думаю, что можно сделать дополнительную переменную int n и в условие if увеличивать на 1 (n++), как раз получим сколько раз сработало условие и возьмем это число за размерность.

Но все же, как поместить значение diff в массив???

Слушай, я щас наверно кэп-очевидность, но я так понимаю тебя коробит, что я в этом примере использую скрипт. Ты это имел в виду, когда про индикатор писал? Если да, то само собой все динамические расчете в индикаторе делаю или в эксперте напрямую. Здесь это тупо для теста, запустил один раз, посмотрел и дальше код править.)))

Предыдущий вопрос все равно актуален. Тема массива не раскрыта.)

Причина обращения: