Кому стратегию? Много и бесплатно) - страница 52

 
Miroslav_Popov писал(а) >>

Generator repaired. Replace your exe with this.


The generator sets sometimes Indicator Period + Shift > Bar Count;

Я уже запутался. :)

Новая версия

Но уменьшив количество бар до 300, генератор работает и его можно остановить кнопкой Stop

'

Старая версия (быстренько закачал с сайта)

Но, если количество бар < 1000, то генератор виснет.

'

ИМХО лучше привыкнуть к требованию по ограничению в 1000 бар для тестера, но удобство выбора интервала.

'

 
SergNF писал(а) >>

Я уже запутался. :)

'

Старая версия (быстренько закачал с сайта)

Но, если количество бар < 1000, то генератор виснет.

'

Радужные мысли относительно "старой версии" оказались ошибочными.

Т.е. картинка как и с новой версией. (Т.е. количество баров имеет больший приоритет, чем дата ДО!!!!)

'

'

Упс

if (bUseStartDate && aBar[iTempStartBar].Time < dtStartingDate)
{   // We need to cut out the oldest bars
 for (int iBar = iTempStartBar; iBar < iTempBars - MINIMUMBARS; iBar++)
 {

А разве правильно, что цикл идет до iTempBars - MINIMUMBARS, т.е. до максимально количетва бар iTempBars = iMaxBars; от начала истории ?

В моих файлах истории много больше 50 000 строк и в этом интервале от iTempStartBar = iBars - iMaxBars до iMaxBars- MINIMUMBARS может просто не оказаться заказанной даты?!

По логике дату Окончания и дату начала надо искать до конца всей истории, т.е. до iBars ???

А вот бар окончания находится корректно

int  iTempEndBar   = iBars - 1;
for (int iBar = iTempStartBar + MINIMUMBARS; iBar < iTempEndBar; iBar++
 
SergNF >>:

About your screen shots:

1. "Remove data older than September 1st 2008" is ignored since there are less then 300 bars till January 1st 2009

2. "Remove data newer than January 1st 2009" - it seams there is no data for January 1st FSB cuts out all bars from 01.01.08 including . That why FSB limits the bars till 31.12.08.


(Т.е. количество баров имеет больший приоритет, чем дата ДО!!!!)

Exactly.

 
Miroslav_Popov писал(а) >>

1. "Remove data older than September 1st 2008" is ignored since there are less then 300 bars till January 1st 2009

2. "Remove data newer than January 1st 2009" - it seams there is no data for January 1st. That why FSB limits the bars till 31.12.08.

Уже нет.

Сейчас я показываю часовки.

В файле 63291 (iBars) строки с 1999-01-04 до 2009-03-18

Дата 2008-09-01 это строка 59 973

Дата 2009-01-02 это строка 62 021

Т.е. когда программа ищет дату начала, то цикл "бежит" от бара 63 291 - 50 000 = 13 291 (iTempStartBar = iBars - iMaxBars;) до бара 50 000 - 300 = 49 700 (iTempBars - MINIMUMBARS) и не найдя мою дату "до" (бар 59 973), оставляет (iTempStartBar = iBars - iMaxBars;) стартовый бар = 63 290 - 50 000 = 13 290.

В моем файле это 2001-02-21 12:00 (+/- 300, что соответствует рисунку)

Файл во вложении.

Файлы:
eurusd60.rar  702 kb
 

iBars <= 50 000

FSB imports the newest 50000 bars from the data file.

So:

Дата 2008-09-01 это строка 59 973

Дата 2009-01-02 это строка 62 021

are outside of the loaded data. Data Horizon does not take them into account.



Ops. I'm wrong.

 
Miroslav_Popov писал(а) >>

iBars <= 50 000

FSB imports the newest 50000 bars from the data file.

So:

Дата 2008-09-01 это строка 59 973

Дата 2009-01-02 это строка 62 021

are outside of the loaded data. Data Horizont does not take them into account.

newest !!!!, т.е. от 13 291 до 63 291!!!!! а сейчас поиск идет от 0 до 50 000 (округленно ;) )

Не договорились. :( Жаль :(

Хотя мне кажется, что правильнее в for (int iBar = iTempStartBar; iBar < iTempBars - MINIMUMBARS; iBar++) вместо iTempBars - MINIMUMBARS вставить iTempEndBar. Да и весь блок "// Set the maximum nuber of bars" - лишний, если И bUseStartDate=True И bUseEndDate=True

'

Но я опять же не настаиваю. :( (Бум резать файл, хотя для минуток вполне можно захотеть оптимизировать стратегию на предыдущих 50 000 барах, а проверять на следующих 10 000 барах.

:(

ЗЫ. Все таки в коде ошибка и он не соответствует схеме!!!!! (мой интервал справа а не слева) :(

 

Давай подумаем..


Дай мне код тъй хочеш. Я поставлю в програме и протестираем.

 
Miroslav_Popov писал(а) >>

Давай подумаем..

Дай мне код тъй хочеш. Я поставлю в програме и протестираем.

Фрагмент твоего кода с предыдущих страниц

// Set the maximum nuber of bars
// if (iBars > iMaxBars && iMaxBars >= MINIMUMBARS)
// {   // We need to cut out the oldest bars
//  iTempBars     = iMaxBars;
//  iTempStartBar = iBars - iMaxBars;
//  bChange       = true;
// }
// Или оставить 
// только если && bUseStartDate=False && bUseEndDate=False 
// или && (bUseStartDate=False || bUseEndDate=False)
// сам не представляю, но весь блок "сбивает"



// Set the starting date
DateTime dtStartingDate = new DateTime(iStartYear, iStartMonth, iStartDay);
if (bUseStartDate && aBar[iTempStartBar].Time < dtStartingDate)
{   // We need to cut out the oldest bars
 for (int iBar = iTempStartBar; iBar < iTempEndBar; iBar++)
 {
  if (aBar[iBar].Time >= dtStartingDate)
  {
   iTempStartBar = iBar;
   iTempBars     = iTempEndBar - iTempStartBar + 1;
   bChange       = true;
   break;
  }
 }
}

Как вариант, после
// Set the maximum nuber of bars
if (iBars > iMaxBars && iMaxBars >= MINIMUMBARS)
{   // We need to cut out the oldest bars
 iTempBars     = iMaxBars;
 iTempStartBar = iBars - iMaxBars;
 bChange       = true;
}

добавить

if (bUseStartDate)
{   
 iTempStartBar = 0; 
}
Но для стартовой даты обнулить iTempStartBar надо!!!!
 
if (bUseStartDate)
{   
    iTempStartBar = 0; 
}
если dtStartingDate ранше чем iMaxBars надо игнорироватъ dtStartingDate и ограничит по iMaxBars
 
Miroslav_Popov писал(а) >>
если dtStartingDate ранше чем iMaxBars надо игнорироватъ dtStartingDate и ограничит по iMaxBars

А я считаю, что должно быть iMaxBars от dtStartingDate "вправо", чтобы можно было двигать окно размером iMaxBars по всему файлу!

А вот если направо dtStartingDate баров меньше iMaxBars. то приоритет должен иметь именно dtStartingDate, т.к. даты интуитивней, чем бары. ИМХО.

И вообще "галочку" пользователь ставит осознанно, а бары - по умолчанию, тем более зашитые в систему (iMaxBars)

'

ЗЫ. Самое смешное то, что я программой, скорее всего, пользоваться не буду :)

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