75000 вариантов - 4GB оперативки и 4GB дискового кэша мало??? - страница 5

 
У нас нет визуализации, пока не было нужды.
Но в ближайшей версии наверное сделаем.

Покажу что смогу.
Эксперт на 100% перенести невозможно,
сделаю нечто приближенное, тут ведь суть не в эксперте,
а в возможности оптимизатора?
 
Mak:
У нас нет визуализации, пока не было нужды.
Но в ближайшей версии наверное сделаем.

Покажу что смогу.
Эксперт на 100% перенести невозможно,
сделаю нечто приближенное, тут ведь суть не в эксперте,
а в возможности оптимизатора?
Ни в коем случае не так. Суть именно во всем комплексе отображения и удобства использования, что и влечет за собой большие затраты ресурсов.

Одно дело заставлять программистов перепахивать весь свой код для встраивания связи с внешним оптимизатором, потом запускать оптимизатор, который там что-то насчитает. И это за деньги. А другое дело выставить штатную галочку "Генетическая оптимизация" у любого эксперта, выбрать нормальные пределы (не десятки миллиардов), получить результаты и прямо тут же без дополнительных программ просматривать результаты прямо во время работы оптимизатора. И это бесплатно.

Мы последовательно раз за разом делаем свои системы максимально простыми, удобными и цельными. Кто-то заявляет "мой тестер быстрее в 10-100 раз", но не доказывает это. Кто-то говорит о вымышленных задачах с "конем в сферическом вакууме". А мы делаем рабочие системы, которые массово работают для сотен тысяч трейдеров, кто использует MetaTrader. И мы в огромном отрыве от любых конкурентов также и из-за своей идеологии построения систем.

ps: кстати, а почему дистрибутив Вашего генетического оптимизатора больше дистрибутива МетаТрейдера? Неэкономно как то пишете?
 
 
Ну вот прогнал.

Валют в Омеге у меня нет, прогонял на том, что есть в дистрибутиве
- IBM (D1) за 31 год (> 11 тыс. баров).

1000 прогонов заняла ~10 мин на Athlon XP 1500+

Диапазоны параметров расширил, так как на акциях волатильность больше

TakeProfit = (10, 10000, 1)
TralingStop = (10, 10000, 1)
Lots = (1, 1000, 1) - у меня это число акций
MACDOpenLevel = (1, 100, 1)
MACDCloseLevel = (1, 100, 1)
MATrendPeriod = (2, 100, 1)

Итого получается пространство параметров ~ 10^14 состояний.

Ниже код на EasyLanguage и ScreenShot.
Так же вложил код сигнала и отчеты из Омеги в Zip файле.

(вставка кода не сработала)
========================================================================
Inputs: Gen(1);
Vars: TakeProfit(50),
TralingStop(30),
Lots(0.1),
MACDOpenLevel(3),
MACDCloseLevel(2),
MATrendPeriod(26);

Vars: R(0),K(0);
If CurrentBar = 1 Then Begin
R = TS.GO.Start("MACD");
If Gen = 1 Then Begin
R = TS.GO.Mode(0);
R = TS.GO.Popul(100);
R = TS.GO.Var("Gen");
R = TS.GO.Var("Trades");

R = TS.GO.Method(1);
R = TS.GO.Criterion("NetProfit",1);
R = TS.GO.Criterion("MaxDD",1);
R = TS.GO.Criterion("PF",1);

K = TS.GO.Chrom("Stops");
R = TS.GO.Gen("TakeProfit", K, 10, 10000, 1);
R = TS.GO.Gen("TralingStop", K, 10, 10000, 1);

K = TS.GO.Chrom("Lots");
R = TS.GO.Gen("Lots", K, 1, 1000, 1);

K = TS.GO.Chrom("MACD");
R = TS.GO.Gen("MACDOpenLevel", K, 1, 100, 1);
R = TS.GO.Gen("MACDCloseLevel", K, 1, 100, 1);
R = TS.GO.Gen("MATrendPeriod", K, 2, 100, 1);
End;

R = TS.GO.Next(Gen);
R = TS.GO.Set("Gen",Gen);
R = TS.GO.ShowViewer;

TakeProfit = TS.GO.Get("TakeProfit", 0);
TralingStop = TS.GO.Get("TralingStop", 0);
Lots = TS.GO. Get("Lots", 0);
MACDOpenLevel = TS.GO.Get("MACDOpenLevel",0);
MACDCloseLevel = TS.GO.Get("MACDCloseLevel",0);
MATrendPeriod = TS.GO.Get("MATrendPeriod",0);
End;

Vars: MacdCurrent(0), MacdPrevious(0), SignalCurrent(0),
SignalPrevious(0), MaCurrent(0), MaPrevious(0);

MacdCurrent = MACD(Close,12,26);
MacdPrevious = MACD(Close,12,26)[1];
SignalCurrent = XAverage(MacdCurrent,9);
SignalPrevious = XAverage(MacdCurrent,9)[1];
MaCurrent = XAverage(Close,MATrendPeriod);
MaPrevious = XAverage(Close,MATrendPeriod)[1];

Vars: StopLoss(0);
If MarketPosition = 0 Then Begin
If MacdCurrent < 0
and MacdCurrent > SignalCurrent
and MacdPrevious < SignalPrevious
and AbsValue(MacdCurrent) > (MACDOpenLevel Point)
and MaCurrent > MaPrevious
Then Begin
Buy Lots shares this bar on close;
end;

If MacdCurrent > 0
and MacdCurrent < SignalCurrent
and MacdPrevious > SignalPrevious
and AbsValue(MacdCurrent) > (MACDOpenLevel Point)
and MaCurrent < MaPrevious
Then Begin
Sell Lots shares this bar on close;
end;
end;

If MarketPosition > 0 Then Begin
If MacdCurrent > 0
and MacdCurrent < SignalCurrent
and MacdPrevious > SignalPrevious
and AbsValue(MacdCurrent) > (MACDCloseLevel Point)
Then Begin
ExitLong ("CloseLong") this bar on close;
end;

If StopLoss = 0 Then StopLoss = EntryPrice - TralingStop Points;
StopLoss = MaxList(StopLoss,High - TralingStop Points);

ExitLong ("TakeLong") Next Bar at EntryPrice + TakeProfit Points Limit;
ExitLong ("StopLong") Next Bar at StopLoss Stop;
end;

If MarketPosition < 0 Then Begin
If MacdCurrent < 0
and MacdCurrent > SignalCurrent
and MacdPrevious < SignalPrevious
and AbsValue(MacdCurrent) > (MACDCloseLevel Point)
Then Begin
ExitShort ("CloseShort") this bar on close;
end;

If StopLoss = 0 Then StopLoss = EntryPrice + TralingStop Points;
StopLoss = MinList(StopLoss,Low + TralingStop Points);

ExitLong ("TakeShort") Next Bar at EntryPrice - TakeProfit Points Limit;
ExitLong ("StopShort") Next Bar at StopLoss Stop;
end;


IF LastBarOnChart Then Begin
R = TS.GO.Set("Trades",TotalTrades);
R = TS.GO.Set("NetProfit",NetProfit);
R = TS.GO.Set("MaxDD",MaxIDDrawDown);
R = TS.GO.Set("PF",GrossProfit/(0.001-GrossLoss));
R = TS.GO.Fitness(0);
End;
========================================================================


Файлы:
macd_test.zip  32 kb
 
Renat:
Mak:
У нас нет визуализации, пока не было нужды.
Но в ближайшей версии наверное сделаем.

Покажу что смогу.
Эксперт на 100% перенести невозможно,
сделаю нечто приближенное, тут ведь суть не в эксперте,
а в возможности оптимизатора?
Ни в коем случае не так. Суть именно во всем комплексе отображения и удобства использования, что и влечет за собой большие затраты ресурсов.

Одно дело заставлять программистов перепахивать весь свой код для встраивания связи с внешним оптимизатором, потом запускать оптимизатор, который там что-то насчитает. И это за деньги. А другое дело выставить штатную галочку "Генетическая оптимизация" у любого эксперта, выбрать нормальные пределы (не десятки миллиардов), получить результаты и прямо тут же без дополнительных программ просматривать результаты прямо во время работы оптимизатора. И это бесплатно.

Мы последовательно раз за разом делаем свои системы максимально простыми, удобными и цельными. Кто-то заявляет "мой тестер быстрее в 10-100 раз", но не доказывает это. Кто-то говорит о вымышленных задачах с "конем в сферическом вакууме". А мы делаем рабочие системы, которые массово работают для сотен тысяч трейдеров, кто использует MetaTrader. И мы в огромном отрыве от любых конкурентов также и из-за своей идеологии построения систем.

ps: кстати, а почему дистрибутив Вашего генетического оптимизатора больше дистрибутива МетаТрейдера? Неэкономно как то пишете?

Ренат, вы сами ПОТРЕБОВАЛИ чтобы я вам это показал.
Я вас неоднократно переспрашивал что ЭТО ...
Если бы вы написали предыдущий пост когда я вас об этом спрашивал,
разговор пошел бы по другому, и не нужно было бы мне переписывать этот MACD под Омегу.
Мне пришлось отложить другие дела, чтобы заняться доказательством "что я не верблюд".

По сути.
Вы говорите какую хорошую штуку вы сделали и за бесплатно ...
Я разве с вами по этому поводу спорил (я с вами вообще ни о чем не спорил)?

Я всего лишь обратил ваше внимание на то, что ваш оптимизатор кушает слишком много памяти.
Считаю что это наследие от старой версии вашего оптимизатора, когда ГО у вас еще не было.
Это несложно исправить, и от этого ваш оптимизатор станет еще лучше.

Замедте, никакой критики с моей стороны.
Я просто хотел вам помочь.
 
Совсем другое дело, когда с деталями отстаиваете свою позицию. Правда вот почему всего 1000 переборов при столь большом пространстве? Очень уж грубо получается. Я прогнал этого эксперта в МТ4 по области в 1.5 млрд значений и получилось 4400 чистых переборов за 4 минуты на истории в 18000 баров EURUSD H1.

Задача конечно же из области сферического коня в вакууме и мы в МТ4 на самом деле неправильно пытаемся зарезервировать определенный объем памяти из-за огромной области возможных значений (наследие механизмов полного перебора). Этот момент поправим.

Cпасибо за настойчивость - Вы заставили нас поглубже залезть в тестер.
 
Renat писал (а):

.... Правда вот почему всего 1000 переборов при столь большом пространстве? Очень уж грубо получается. Я прогнал этого эксперта в МТ4 по области в 1.5 млрд значений и получилось 4400 чистых переборов за 4 минуты на истории в 18000 баров EURUSD H1. ....
А в генетике скорость поиска независит от размера пространства параметров.
Она зависит от качества целевой функции (фитнеса).

Кроме того мы используем оригинальный алгоритм, который на порядок быстрее других известных нам алгоритмов.
1000 прогонов это уже немного перебор, для оценки решения я обычно использую 100-200 прогонов (при любом числе параметров).
 
Renat писал (а):
Да, на самом деле этот эксперт в тесте потребляет чрезмерно много памяти и падает. Будем разбираться.
Спасибо за предоставленный код.


Ренат, нет новостей пока?
 

sane, новости есть. Нашли утечку памяти. Компилятор не вставил в нужном месте команду освобождения строки.

 
stringo писал (а):

sane, новости есть. Нашли утечку памяти. Компилятор не вставил в нужном месте команду освобождения строки.


ok, ждем новый билд
 
sane:
stringo:

sane, новости есть. Нашли утечку памяти. Компилятор не вставил в нужном месте команду освобождения строки.


ok, ждем новый билд

Я запустил Ваш пример на новом билде 198 эксперта:







Больше нет чрезмерного потребления памяти, при включенной генетической оптимизации было произведено 1088 переборов из 21600 и расчеты заняли 8 минут 31 секунду.

О самом эксперте - его ни в коем случае нельзя использовать из-за серьезных ошибок:
  • неправильные уровни стопов и все логи забиты сообщениями об этом
  • за функцию SetOrder можно получить жестокий запрет торговли экспертами от брокера

    В этой функции происходит пятикратная попытка торговать по устаревшим ценам, автор эксперта вообще не понимает, что он делает (пытается использовать RefreshRates, хотя все равно подсовывает устаревшую цену). И вообще нет осмысленной обработки ошибок.