Вопрос к знающим mql

 

Добрый день всем!

Я, к сожалению, не очень знаком с mql, помогите разобраться в чем проблема.

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


Для теста попробовал вывести 5 периодную MA, но результаты на выходе не совпадают ни с чем вообще, даже если в экселе сравнивать (СРЗНАЧ пяти последних значений). я просто не понимаю откуда берутся эти значения для скользящей средней, но и не понимаю, что еще можно изменить.

Посмотрите, пожалуйста, в чем проблема?


Вывод в файл работает прекрасно, я просто взял рабочий кусок кода откуда-то, он отличается только добавленным к выводу OHLC еще

iMA(Symbol(),0,5,0,0,MODE_CLOSE,i)

вот код полностью:


#property indicator_chart_window
extern int length = 100;   // Количество баров, отправляемых на обработку
double ExtMap[];           // Буфер графика
string nameData;
int init()
{
   nameData = Symbol()+".txt";         // имя отправляемого файла данных
   return(0);
}
int start()
{
   static int old_bars = 0;   // запомним число известных баров   
   if (old_bars != Bars)      // если получен новый бар 
   {
      write_data();                             // записать файл данных                              
   }      
   old_bars = Bars;              // запомним, сколько баров известно
   return(0);
}
//+------------------------------------------------------------------+
void write_data()
{
    
   int MaMetod  = 0;
   int MaPeriod = 5;
   int MaMetod2  = 0;
   int MaPeriod2 = 8;

  int handle;
  handle = FileOpen(nameData, FILE_CSV|FILE_WRITE,';');
  if(handle < 1)
  {
    Comment("Не удалось создать "+nameData+". Ошибка #", GetLastError());
    return(0);
  }
  FileWrite(handle, ServerAddress(), Symbol(), Period());                  // заголовок
  FileWrite(handle, "DATE","TIME","HIGH","LOW","CLOSE","OPEN","ima");   // заголовок
  int i;
  for (i=length-1; i>=0; i--)
  {

    FileWrite(handle, TimeToStr(Time[i], TIME_DATE), TimeToStr(Time[i], TIME_SECONDS),
                      High[i], Low[i], Close[i], Open[i],iMA(Symbol(),0,5,0,0,MODE_CLOSE,i));
  }
  FileClose(handle);
  Comment("Файл "+nameData+" создан. "+TimeToStr(TimeCurrent(), TIME_SECONDS) );
  return(0);
}
 

PRICE_CLOSE  а не MODE_CLOSE

 

sergeev, спасибо, заработало!


А что на выходе дает MODE_CLOSE для скользящей средней?

 
the_login писал(а) >>

sergeev, спасибо, заработало!

А что на выходе дает MODE_CLOSE для скользящей средней?

Кто ж знает?) Скорее просто 0. Выведите результат на Print, заодно и нам расскажите.

 
the_login писал(а) >>

sergeev, спасибо, заработало!

А что на выходе дает MODE_CLOSE для скользящей средней?

MODE_CLOSE равно PRICE_LOW

 
Integer >>:

MODE_CLOSE равно PRICE_LOW

Понятнее будет в рублях.

Константа Значение Описание
MODE_OPEN 0 Цена открытия
MODE_LOW 1 Минимальная цена
MODE_HIGH 2 Максимальная цена
MODE_CLOSE 3 Цена закрытия
MODE_VOLUME 4 Объем (количество тиков, сформировавших бар)
MODE_TIME 5 Время открытия бара
 

не очень понял что объясняет табличка, если MODE_CLOSE, например - цену закрытия не дает..


Опытным путем

MODE_CLOSE = PRICE_LOW
MODE_LOW = PRICE_OPEN
MODE_OPEN = PRICE_CLOSE
MODE_HIGH = PRICE_HIGH

а может кто-то объяснить логику этого всего?


вопрос не праздный, поскольку в индикаторах я видел именно с заданием цен в формате MODE, теперь непонятно зачем

 
например здесь: https://www.mql5.com/ru/code/7930
 
the_login писал(а) >>

не очень понял что объясняет табличка, если MODE_CLOSE, например - цену закрытия не дает..

Опытным путем

MODE_CLOSE = PRICE_LOW
MODE_LOW = PRICE_OPEN
MODE_OPEN = PRICE_CLOSE
MODE_HIGH = PRICE_HIGH

а может кто-то объяснить логику этого всего?

вопрос не праздный, поскольку в индикаторах я видел именно с заданием цен в формате MODE, теперь непонятно зачем

MODE_CLOSE, PRICE_LOW, MODE_LOW, PRICE_OPEN, MODE_OPEN, PRICE_CLOSE, MODE_HIGH, PRICE_HIGH - это имена констант, почти тоже самое, что имена переменых, у них есть значения:

Константа Значение Описание
MODE_OPEN 0 Цена открытия
MODE_LOW 1 Минимальная цена
MODE_HIGH 2 Максимальная цена
MODE_CLOSE 3 Цена закрытия
MODE_VOLUME 4 Объем (количество тиков, сформировавших бар)
MODE_TIME 5 Время открытия бара

Можно использовать не константу, а ее значение. Вместо MODE_OPEN использовать число 0 и т.д.

 
the_login >>:

не очень понял что объясняет табличка...

Виноват, отвлекся, думал, что стало понятно.
 

Теперь все ясно, спасибо.


это просто int, я не понял сразу)

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