Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Но в ближайшей версии наверное сделаем.
Покажу что смогу.
Эксперт на 100% перенести невозможно,
сделаю нечто приближенное, тут ведь суть не в эксперте,
а в возможности оптимизатора?
У нас нет визуализации, пока не было нужды.
Но в ближайшей версии наверное сделаем.
Покажу что смогу.
Эксперт на 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;
========================================================================
У нас нет визуализации, пока не было нужды.
Но в ближайшей версии наверное сделаем.
Покажу что смогу.
Эксперт на 100% перенести невозможно,
сделаю нечто приближенное, тут ведь суть не в эксперте,
а в возможности оптимизатора?
Одно дело заставлять программистов перепахивать весь свой код для встраивания связи с внешним оптимизатором, потом запускать оптимизатор, который там что-то насчитает. И это за деньги. А другое дело выставить штатную галочку "Генетическая оптимизация" у любого эксперта, выбрать нормальные пределы (не десятки миллиардов), получить результаты и прямо тут же без дополнительных программ просматривать результаты прямо во время работы оптимизатора. И это бесплатно.
Мы последовательно раз за разом делаем свои системы максимально простыми, удобными и цельными. Кто-то заявляет "мой тестер быстрее в 10-100 раз", но не доказывает это. Кто-то говорит о вымышленных задачах с "конем в сферическом вакууме". А мы делаем рабочие системы, которые массово работают для сотен тысяч трейдеров, кто использует MetaTrader. И мы в огромном отрыве от любых конкурентов также и из-за своей идеологии построения систем.
ps: кстати, а почему дистрибутив Вашего генетического оптимизатора больше дистрибутива МетаТрейдера? Неэкономно как то пишете?
Ренат, вы сами ПОТРЕБОВАЛИ чтобы я вам это показал.
Я вас неоднократно переспрашивал что ЭТО ...
Если бы вы написали предыдущий пост когда я вас об этом спрашивал,
разговор пошел бы по другому, и не нужно было бы мне переписывать этот MACD под Омегу.
Мне пришлось отложить другие дела, чтобы заняться доказательством "что я не верблюд".
По сути.
Вы говорите какую хорошую штуку вы сделали и за бесплатно ...
Я разве с вами по этому поводу спорил (я с вами вообще ни о чем не спорил)?
Я всего лишь обратил ваше внимание на то, что ваш оптимизатор кушает слишком много памяти.
Считаю что это наследие от старой версии вашего оптимизатора, когда ГО у вас еще не было.
Это несложно исправить, и от этого ваш оптимизатор станет еще лучше.
Замедте, никакой критики с моей стороны.
Я просто хотел вам помочь.
Задача конечно же из области сферического коня в вакууме и мы в МТ4 на самом деле неправильно пытаемся зарезервировать определенный объем памяти из-за огромной области возможных значений (наследие механизмов полного перебора). Этот момент поправим.
Cпасибо за настойчивость - Вы заставили нас поглубже залезть в тестер.
.... Правда вот почему всего 1000 переборов при столь большом пространстве? Очень уж грубо получается. Я прогнал этого эксперта в МТ4 по области в 1.5 млрд значений и получилось 4400 чистых переборов за 4 минуты на истории в 18000 баров EURUSD H1. ....
Она зависит от качества целевой функции (фитнеса).
Кроме того мы используем оригинальный алгоритм, который на порядок быстрее других известных нам алгоритмов.
1000 прогонов это уже немного перебор, для оценки решения я обычно использую 100-200 прогонов (при любом числе параметров).
Да, на самом деле этот эксперт в тесте потребляет чрезмерно много памяти и падает. Будем разбираться.
Спасибо за предоставленный код.
Ренат, нет новостей пока?
sane, новости есть. Нашли утечку памяти. Компилятор не вставил в нужном месте команду освобождения строки.
sane, новости есть. Нашли утечку памяти. Компилятор не вставил в нужном месте команду освобождения строки.
ok, ждем новый билд
sane, новости есть. Нашли утечку памяти. Компилятор не вставил в нужном месте команду освобождения строки.
ok, ждем новый билд
Я запустил Ваш пример на новом билде 198 эксперта:
Больше нет чрезмерного потребления памяти, при включенной генетической оптимизации было произведено 1088 переборов из 21600 и расчеты заняли 8 минут 31 секунду.
О самом эксперте - его ни в коем случае нельзя использовать из-за серьезных ошибок:
В этой функции происходит пятикратная попытка торговать по устаревшим ценам, автор эксперта вообще не понимает, что он делает (пытается использовать RefreshRates, хотя все равно подсовывает устаревшую цену). И вообще нет осмысленной обработки ошибок.