Тестирование Систем прогнозирования в реальном времени - страница 73

 

небольшое уточнение по золоту:


Наиболее вероятная траектория - нижняя (вычесть 30 мин от времени публикации будет начало прогноза). Но доверять прогнозу особо нельзя, поскольку для повышения точности требуется запуск процедуры для выявления некоторых характеристик ряда, этого пока не делал (процедурка разовая, но работает дня два)

 
grasn >>:

PS: я бы добавил все траектории, но вот только не могу с текста переложить 2 мерную матрицу :о). А как вы это делаете - я как то не понял, вернее не до конца понял. Сейчас у меня вот такой код (по крайне мере я его понимаю), кроторый подозреваю можно еще упростить:

Я для вывода нескольих траекторий просто добавлял несколько экземпляров своего индюка в окно, потому что не хотел особо связываться с отображением сразу нескольких буферов, тем более что их количество ограничено 8 в МТ4. В вашем коде я не особо понял, зачем туда-сюда копировать данные через динамические массивы - не проще ли сразу считывать в индикаторный буфер? Из-за отсутствия в MQL понятия массива массивов, для заполнения нескольких буферов приходится писать многосложный if. ;-/ Что-то вроде такого:

  // ViewCount - количество используемых буферов (1 - 8)
  // F1 ... F8 - индексные буфера
  for(int p = ForecastBars; p >= 0; p--)
  {
    if(ViewCount > 0)
      F1[p] = GetData(0, p);
    if(ViewCount > 1)
      F2[p] = GetData(1, p);
    ...
    if(ViewCount > 7)
      F8[p] = GetData(7, p);
  }
 
marketeer >>:

Я для вывода нескольих траекторий просто добавлял несколько экземпляров своего индюка в окно, потому что не хотел особо связываться с отображением сразу нескольких буферов, тем более что их количество ограничено 8 в МТ4. В вашем коде я не особо понял, зачем туда-сюда копировать данные через динамические массивы - не проще ли сразу считывать в индикаторный буфер? Из-за отсутствия в MQL понятия массива массивов, для заполнения нескольких буферов приходится писать многосложный if. ;-/ Что-то вроде такого:


это на перспективу, просто хочу в MQL доделывать прогноз, т.е. вычислять уровни и зоны. Просто в качестве эксперимента, пока разбираюсь.


идею с буферами я понял, спасибо.

 
ЗОЛОТО таки упало (прогноз выше) Совсем немного :о( Надо будет разобраться с критерием, может действительно, не нужно выбирать экстремальное значение :0( Ладно, буду разбираться
 
mpeugep >>:

Сложно, потому что данные для скрипта, который рисует прогнозные кривые, я получаю каждым утром в Deductor'e. Поэтому - только ручками =)

Вот, когда-то маялся с экспертом под дедуктор v.5.0 Lite :)

Его даже можно в виз.тестере прогнать, правда надо поточнее подобрать время задержки

Файлы:
 
Piboli >>:

Вот, когда-то маялся с экспертом под дедуктор v.5.0 Lite :)

Его даже можно в виз.тестере прогнать, правда надо поточнее подобрать время задержки

Ооо, спасибо, посмотрю на выходных =))

 

Доброго всем дня!

На сегодня картина по инструменту FDAXZ9 (H1) такова:

Продажа по открытию рынка, цель - 5714, стоп в область - 5799.

Торговля ведется 0,1 лотом.

Счет: 642842
Инвест пароль: 1fisfwv
Сервер: BroCo-Demo

 

Позиция закрылась по тэйку:

 

 

Я таки написал скрипт формирования массива вероятных реализаций (очень простой получился):

#property copyright ""
#property link      ""

#property show_inputs

extern int timeShift = 3;
extern int N = 101;

int start()
{
   int i;
   int idCount;

   int Handle;
   
   double realisation;
   
   string FILE="FORECAST.csv";
   string COUNT;

   Handle=FileOpen(FILE, FILE_CSV|FILE_READ,",");

   if(Handle<0)
   {
      if(GetLastError()==4103)
      {
         Alert("Нет файла с именем ",FILE);
      }
      else
      {
         Alert("Ошибка при открытии файла ",FILE);
      }

      return;
   }

   Handle=FileOpen(FILE, FILE_CSV|FILE_READ,",");
   
   ObjectsDeleteAll();

   idCount=0;
   i=0;

   while(FileIsEnding(Handle)==false)
   {
      if(i>=N)
      {
         i=0;
      }

      COUNT=FileReadString(Handle);
      realisation=NormalizeDouble(StrToDouble(COUNT), 5);

      ObjectCreate(DoubleToStr(idCount, 10), OBJ_ARROW, 0,
 (Time[0]-timeShift*15*60)+(i)*Period()*60+1, realisation);
      ObjectSet(DoubleToStr(idCount, 10), OBJPROP_ARROWCODE, 250);
      
      
      i=i+1;
      idCount=idCount+1;

      if(FileIsEnding(Handle)==true)
      {
         break;
      }
   }

   FileClose(Handle);

   return(0);
}

Вот работа скрипта:

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

 
Можно посмотреть файл forecast.csv
Причина обращения: