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

 
Yevhenii Levchenko:
В папке tester/history хранятся котировки?

Нет.

\history\downloads\символ\*.dat - архив котировок.

\history\сервер\*.hst - котировки.

\tester\history\*.fxt - генерируются из файлов *.hst каждый раз заново при запуске теста или оптимизации.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Вопрос к разработчикам MT4: Файлы тестера

Sergey Basov, 2016.01.14 07:25

Я не разработчик MT4, но могу ответить из личного опыта.

Их удаление ни на что не повлияет. Они просто снова сгенерируются при следующем тестировании или оптимизации.

Котировки хранятся в файлах *.hst, из них тестер генерирует файлы *.fxt, причем каждый раз заново.


 
Sergey Basov:

Нет.

\history\downloads\символ\*.dat - архив котировок.

\history\сервер\*.hst - котировки.

\tester\history\*.fxt - генерируются из файлов *.hst каждый раз заново при запуске теста или оптимизации.


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

 
Nauris Zukas:

Здравствуйте!  Хотел получить время открытия бара текущего месяца но получил ошибку 4074 (ERR_NO_MEMORY_FOR_HISTORY). Интересно и то что если начать тестировать с 1 июня, то все правильно выдаёт, но уже с 2 июня начинает выдавать ошибку. Как решит проблему текущего месяца?

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

Столкнулся с появлением такой же ошибки 4074 (ERR_NO_MEMORY_FOR_HISTORY) при тестировании на подгруженных котировках другого брокера. Причём это не первые сторонние котировки что я использую. С другими такая ошибка не появлялась. В чём причина ошибки, и как её пофиксить, может кто то уже разбирался?

 

Почему в мт5 самый простой код работает совершенно не так как в мт4? Например, следующий код, считающий среднее значение буфера мувинга в мт4:

for (int i=0; i<nLimit; i++){
         double value;
         for(int k=i; k<i+AveragePeriod; k++){
            value+=Buffer1[k];
         }
         AverageBuffer[i]=value/AveragePeriod;
      }

...в мт5 не работает. Чтобы работал более-менее похожим образом (методом тыка определил) так нужно:

 for (int i=0; i<nLimit; i++){
         double value;
         for(int k=i; k<i+AveragePeriod; k++){
            value+=Buffer1[k];
         }
         value/=(AveragePeriod+1);
         AverageBuffer[i]=value;
      }

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

Подскажите как решить это правильно?

 

Добавил Comment между расчетами и все нахрен перерисовалось :D

 for (int i=0; i<nLimit; i++){
         double value;
         for(int k=i; k<i+AveragePeriod; k++){
            value+=Buffer1[k];
         }
         if(i==2)
           

  Comment(value); // вот это добавил

         value/=(AveragePeriod+1);          AverageBuffer[i]=value;                }
В чем прикол?
 
Не могу сообразить , как при помощи iFractal записать такое условие? Если:
Первый Fractal_up<Второго Fractal_up то.....
И то же самое с down фракталом
 
Vladimir Baskakov:
Не могу сообразить , как при помощи iFractal записать такое условие? Если:
Первый Fractal_up<Второго Fractal_up то.....
И то же самое с down фракталом

Выходные. Дурака валяем... 

 
Vladimir Baskakov:
Не могу сообразить , как при помощи iFractal записать такое условие? Если:
Первый Fractal_up<Второго Fractal_up то.....
И то же самое с down фракталом

из готового, вот так ищу фракталы:

//_______________________________________________________________________
int GetLastFractals(int bar,int mode) // bar - с какого бара начинать поиск, mode = MODE_UPPER или MODE_LOWER , результат № бара где найден фрактал
  {
   int i=bar; 
   while(i<Bars && iFractals(NULL,0,mode,i)<_Point) i++;
   return(i);
  }
//_______________________________________________________________________

вызывать Вам нужно 2 раза, чтобы найти первый фрактал и последующий Up, примерно так:

int barfrup_1 = GetLastFractals(1,MODE_UPPER);
int barfrup_2 = GetLastFractals(barfrup_1+1,MODE_UPPER);
 
Yevhenii Levchenko:

Добавил Comment между расчетами и все нахрен перерисовалось :D

В чем прикол?

ArraySetAsSeries(true) для буферов индикатора.

 
Igor Makanu:

из готового, вот так ищу фракталы:

вызывать Вам нужно 2 раза, чтобы найти первый фрактал и последующий Up, примерно так:

Спасибо, работает, только выполняется одно условие:

        if(barfrup_1<barfrup_2 && barfrdown_1<barfrdown_2)

А мне нужно

        if(barfrup_1<barfrup_2 && barfrdown_1>barfrdown_2)

А с ним позиции не открывает почему-то

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