Индикаторы: MT4R_Forecast

 

MT4R_Forecast:

Индикатор делает прогноз на указанное число шагов вперед

Author: alex

 
Не пойму смысла в таких инструментах. Идет постоянная перерисовка на каждом тике. Чем больше баров выбрать для анализа, тем неопределеннее "предсказания". Могу только предполагать, что программа и индикатор созданы только для демонстрации возможностей метода. Для анализа текущей ситуации и принятия решений абсолютно бесполезен, имхо.
 
Hog_21:
Не пойму смысла в таких инструментах. Идет постоянная перерисовка на каждом тике. Чем больше баров выбрать для анализа, тем неопределеннее "предсказания". Могу только предполагать, что программа и индикатор созданы только для демонстрации возможностей метода. Для анализа текущей ситуации и принятия решений абсолютно бесполезен, имхо.

Не умеете готовить кошек.

Это перерисовывающийся индикатор. В эконометрике не признают не перерисовывающиеся индикаторы. Для большинства на этом сайте - это жуткая крамола и не знание азов. Тем не менее.

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

В действительности выложил индикатор для демонстрации доступа к статистической системе R. Думаю, что пользоваться отдельно этим индикатором не возможно - надо задействовать арсенал R, а это возможно если Вы понимаете в эконометрике, статистике и временных рядах. Знания в техническом анализе здесь вообще не нужны.

 

Кошек не готовлю. Ем сырыми - так они вкуснее )))

Лень разбираться в описании проги на английском. Просветите в двух словах, в чем основа работы проги ? Нейронная сеть или архисложные вычисления вероятностей по сотне алгоритмов ?

Повторюсь, индикатор переписывает значения на каждом ТИКЕ. Бары ему не интересны )))

 
Hog_21:

Кошек не готовлю. Ем сырыми - так они вкуснее )))

Лень разбираться в описании проги на английском. Просветите в двух словах, в чем основа работы проги ? Нейронная сеть или архисложные вычисления вероятностей по сотне алгоритмов ?

Повторюсь, индикатор переписывает значения на каждом ТИКЕ. Бары ему не интересны )))


В общем ничего сложного. Регрессия, оцененная скорее всего по МНК и продлена вперед. То что написал буквально соответствует реальности и одновременно не соответствует вообще, так как за этим стоит достаточно большая теория, а это жалкий ошметок из нее. Убежден, что использовать индикатор без знания теории (эконометрики и статистики) нельзя. Так что есть кошек сырыми не получится.
 
Hog_21:

Кошек не готовлю. Ем сырыми - так они вкуснее )))

Лень разбираться в описании проги на английском. Просветите в двух словах, в чем основа работы проги ? Нейронная сеть или архисложные вычисления вероятностей по сотне алгоритмов ?

Повторюсь, индикатор переписывает значения на каждом ТИКЕ. Бары ему не интересны )))


Сделал правку индикатора. Рисует два прогноза: зеленый рисуется при запуске индикатора и не меняется, а красный пересчитывается. По идее котир должен пойти по зеленому прогнозу. Просто визуально посмотреть качество прогноза.
#property copyright "© 2010 Bernd Kreuss"
// http://www.forexfactory.com/showthread.php?t=260422
// Здесь исходный текст
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_width1 2
#property indicator_color2 Green
#property indicator_width2 1
#include <mt4R.mqh>
extern   int      order    =  200;
extern   int      back     =  500;
extern   int      ahead    =  20;
         bool     First    =  true;
         int      R;
double buf_prediction[];
double buf_prediction_const[];
// шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш
int init()
{
   SetIndexBuffer (0, buf_prediction);
   SetIndexStyle  (0, DRAW_LINE);
   SetIndexShift  (0, ahead);
   SetIndexBuffer (1, buf_prediction_const);
   SetIndexStyle  (1, DRAW_LINE);
   SetIndexShift  (1, ahead);
   R     = RInit("G:/Program Files/R-2.15.0/bin/x64/Rterm.exe --no-save", 2);
   Comment("history: " + back + " bars, method: OLS, order: " + order);
}
// шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш
int deinit()
{
   RExecute(R, "q");
   RDeinit(R);
}
// шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш
int start()
{
   double      hist[];
   double      pred[];
   int         i;
   
   if (RIsBusy(R))
   {
      // last RExecuteAsync() is still not finished, do nothing.
      return(0);
   }
   
   if (RGetInteger   (R, "as.integer(exists('model'))") == 1)
   {
      // there exists a model (the variable is set). 
      // This means a previously started RExecuteAsync() has finished. 
      // we can now predict from this model and plot it.
      RAssignInteger (R, "ahead", ahead);
      RExecute       (R, "pred <- predict(model, n.ahead=ahead)$pred");
      ArrayResize    (pred, ahead);
      RGetVector     (R, "rev(pred)", pred, ahead);
// Фиксация первого прогноза при загрузке индикатора
      if (First)
      {
         for (i=0; i<ahead; i++)
         {
            buf_prediction_const[i] = pred[i];
         }      
         First       =  false;
      }
      for (i=0; i<ahead; i++)
      {
         buf_prediction[i] = pred[i];
      }
   }
   
   // make a (new) prediction
   // move some history over to R   
   ArrayResize       (hist, back);
   for (i=0; i<back; i++)
   {
      hist[i]     =  Close[i];
   }
   RAssignVector     (R, "hist", hist, ArraySize(hist));
   RExecute          (R, "hist <- rev(hist)");
   
   // crunch the numbers in the background and return from the start() function
   // RIsBusy() in the next ticks will tell us when it is finished.
   RAssignInteger    (R, "ord", order);
   RExecuteAsync     (R, "model <- ar(hist, aic=FALSE, order=ord, method='ols')");
   return(0);   
}
//    шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш
 

Для использования индикатора необходимо:

1. Установить R-систему. У меня это - G:/Program Files/R-2.15.0/


А, где взять R-систему, чтобы установить в Program Files/?

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