Время баров

 

Хочу выписать параметры колебания на М5, делаю

int handle;
bool Change_Direction = False;

int init()
{
  Last_Time = iTime(Symbol(), Period(), 1);
  
  handle = FileOpen("my_data.csv",FILE_CSV | FILE_WRITE, ",");

  return(0);
}


int deinit()
{
  FileClose(handle);

  return(0);
}

int start()
{  
  datetime Time_Now = iTime(Symbol(), Period(), 1);
  int Shift = iBarShift(Symbol(), Period(), Last_Time);
  
  if (Direction == False && iClose(Symbol(), Period(), 1) > iOpen(Symbol(), Period(), 1) && iClose(Symbol(), Period(), 2))
  {
    Change_Direction = True;
    Last_Time = Time_Now;
  } else if (Direction == True && iClose(Symbol(), Period(), 1) < iOpen(Symbol(), Period(), 1)) {
    Change_Direction = True;
    Last_Time = Time_Now;
  }
  
  if (Change_Direction == True)
  {
    if(handle > 0)
    {
      FileWrite(handle, TimeToStr(Last_Time), iClose(Symbol(), Period(), Shift), iClose(Symbol(), Period(), 1));
    }
    
    Change_Direction = False;
  }
}

В итоге тестируя стратегию на M5, получаю

2009.01.02 05:01,1.3936,1.3871
2009.01.02 05:07,1.3871,1.387
2009.01.02 05:09,1.387,1.3873
2009.01.02 05:16,1.3873,1.3882

Что собсно поидее бред...... ведь при M5 должны быть чёткие тики = 05:00, 05:05, 05:10

Т.е. получается нада самому парсить М1 и составлять М5, чтобы добавиться нормальных тиков?

 
Никто не сталкивался?
 
!Up
 
В коде Вашем не разбирался, но Вам должно быть известно, что время начала бара редко бывает кратно его периоду.
 

Ну так прикол ещё в том что не только время начала бара, но и промежуток формирования бара не соответствует 5ми минутам...... т.е. смысла в разделении на периоды пропадает

 

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

код какой-то сумбурный и условия чудные, вроде как историю сохраняете на пятиминутках..

int handle;

int init(){  
  handle = FileOpen("my_data.csv",FILE_CSV | FILE_WRITE, ",");
  return(0);
}

int deinit(){
  FileClose(handle);
  return(0);
}

int start(){    
  
    if(handle > 0 && isTime(Period()*60)){
      FileWrite(handle, TimeToStr(Last_Time), iClose(Symbol(), Period(), Shift), iClose(Symbol(), Period(), 1));
    }    
  
}

bool isTime(int sec){
   bool res = false;
   static datetime time = 0;
   double min = 0; 
   if (TimeCurrent() >= time){
      min = MathFloor(sec / 60);
      if (min==0) min = 1.0;          
      time = iTime(NULL,PERIOD_H1,0) + (MathFloor(Minute()/min) + 1) * min * 60;
      res = true;
   }  
   return(res);
}

а вообще не проще ли выгрузить историю штатными средствами МТ4 ?

 

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

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

п.с. т.к. массивы баров не выдерживают временные рамки периодов, зачем тогда они нужны?

 

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

Тоже удивило хотя я чайник, только присматриваюсь. Сделал вывод, что время не имеет постоянной велечены. Действительно бред.

На минутах попробуйте

Меня также интересует выборочно колебания и поведение больших свечей.

Спасибо за сходство мыслей.

 
andreiuser писал(а) >>

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

Сделал вывод, что время не имеет постоянной велечены. Действительно бред.

FireFenix писал(а) >>

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

Народ, мне кажется вы оба немного бредите, у одного чёткие 5ти минутные тики, у другого время не имеет постоянной величины... Вы себе физику процесса хоть в общих чертах представляете? Что тик это изменение цены, что оно может зависить от целого ряда факторов, да и сама цена, это есть некий индикатив получаемый из спроса, предложения и заключаемых сделок....
 

Ну дык.... формирование массива по 5ти минутным интервалам должно иметь 5ти минутный интервал, а не 4,3,2,5,6,7

да и физика проста...... на каждый период срабатывает по времени и процедура продвигает массив на 1 вперёд

но т.к. обрабатываются тики, почему нельзя выдержать определённые временные рамки? естесно +- погрешность тика....

 

А если втечении 10 минут не было ни одного тика? Или были, но только два, - тогда где будет начало и конец бара?

Изначально свечи и все правила работы с ними были придуманы для дневного графика - там где есть реальное открытие рынка и его реальное закрытие. Переложение их на форексовские 5-минутки - это попытка срестить ежа и ужа.

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