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

 
orlekino >>:

Я тут переписал ее на свой вкус и цвет; вроде что-то похоже на ЕоМ, но какаи-то пики непонятные.

// Ease of Movement

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
extern int PeriodMA = 13;
extern int VolDivisor = 10000;
double EoMBuffer[];
double TempBuffer[];

int init()
{
   IndicatorBuffers(2);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,EoMBuffer);
   SetIndexBuffer(1,TempBuffer);
   IndicatorShortName("EoM("+PeriodMA+")");
   SetIndexLabel(0,"EoM("+PeriodMA+")");
   SetIndexDrawBegin(0,PeriodMA);

   return(0); 
}

int start()
{
   int counted_bars=IndicatorCounted();
   if(counted_bars>0)
      counted_bars--;
   int limit=Bars-counted_bars;
  
   for(int i=0; i<limit-1; i++)
      TempBuffer[i]= VolDivisor * (High[i] - Low[i]) * ((High[i] + Low[i]) / 2.0 - (High[i + 1] - Low[i + 1]) / 2.0) / MathMax(Volume[i], 1);

   for(i=0; i<limit; i++)
      EoMBuffer[i]=iMAOnArray(TempBuffer,Bars,PeriodMA,0,MODE_SMA,i);

   return(0);
}
 
zelda >>:

Интересно, но по изначальной идее Армса индикатор должен ходить относительно 0 и давать сигналы при пересечени нулевой линии и SMA (которые наносятся на индикатор, а не сглаживают его сразу).

Возможно создать такой варинат? Сам не владею (пока) в достатке MQlng, поэтому в моем коде он рисует последний тик индикатора как бесконечно уходящий вверх (как исправить - не знаю), а вобщем контексте он меня устраивает.

 
FOREXMASTER >>:

начало неплохое, но в этой программе хотелось бы видеть:

1. Выбор сгенерирываных стратегий, т.к. машина сама не может выбрать наибольше подходящию стратегию для каждого, да и я видел намного лучше стратешки чем программа в конце выдола на сохронения

У меня немного другая идея, а именно создание репозитория стратегий. Т.е. пусть пользователь сгенерировал на инструменте и таймфрейме 1 стратегию и ее выбрал компьютер. В дополнение к этому он еще закачивает из репозитория 20 стратегий. Далее прогоняются 20 тестов по всем закачанным стратегиям и составляется список с их характеристиками. Стратегию с самым худшим результатом программа просит удалить из репозитория и добавить вместо нее только что сгенерированную.


Итого у пользователя остается список 21 стратегии, 20 из которых уже проверены временем, из которых он может выбрать все что ему больше нравится и создать исходные коды советников на MQL4.


Тем самым достигается компромисс:


1. Стратегию из числа сгенерированных выбирает компьютер, а он делает это совсем не случайно, а с учетом определенных характеристик.

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


Но самое главное, что тем самым, репозиторий будет постоянно профильтровываться и хранить только те стратегии, которые выдавали наилучшие результаты. А случайные подгонки будут вымываться из него за счет естественного отбора. Т.е. практически отпадает всякая надобность в форвардных тестах, ведь можно запросто посмотреть по списку и выбрать именно ту стратегию, которая продержалась в репозитории большую часть времени.


Плюс ко всему, таким макаром, результаты будут получены за счет распределенных вычислений. Т.е. каждый компьютер будет затрачивать лишь примерно 1 / 21 часть времени на генерацию стратегий и гораздо меньшую долю времени на тестовые проверки стратегий.


К сожалению на прежнем сайте не было возможности создания репозитория, т.к. CMS от Ucoz не позволяет управлять базами данных и исполнять PHP скрипты. Поэтому пришлось взять отдельный хостинг под сайт Stock Strategy Builder, на базе которого и будет функционировать репозиторий.


Значительную часть репозитория и новой версии программы, заточенной под него, я уже сделал. Остались кое какие детали, особенно касающиеся качества котировок на которых будут генерироваться и проверяться стратегии. Как только эти самые детали проработаю, выложу версию с поддержкой репозитория.

 
Reshetov писал(а) >>

У меня немного другая идея, а именно создание репозитория стратегий. ...

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

... пришлось взять отдельный хостинг под сайт Stock Strategy Builder, на базе которого и будет функционировать репозиторий.

... Значительную часть репозитория и новой версии программы, заточенной под него, я уже сделал. Остались кое какие детали, особенно касающиеся качества котировок на которых будут генерироваться и проверяться стратегии. Как только эти самые детали проработаю, выложу версию с поддержкой репозитория.

Идея супер! Удачи в реализации!

Только я немного не понял, почему форвардные тесты не потребуются.

 
voltair >>:

Идея супер! Удачи в реализации!

Только я немного не понял, почему форвардные тесты не потребуются.

Потому что в репозитории будут оставаться только проверенные временем стратегии, а остальные постепенно удаляться.


Вполне понятно, что если из репозитория закачана стратегия, которая там пролежала, например, пол-года, а даже сегодня по тестам показывает профит, то ей больше доверия, нежели только что сгенерированной.


Хотя, конечно же, любой желающий может самостоятельно прогнать дополнительные тесты, на всякий так сказать, пожарный случай.

 
Reshetov писал(а) >>

... если из репозитория закачана стратегия, которая там пролежала, например, пол-года, а даже сегодня по тестам показывает профит, то ей больше доверия, нежели только что сгенерированной.

Понял - стратегии не просто там лежат, а постоянно тестируются и остаются в репозитории только если профитные.

Правда бывает ведь так, что "сегодня" (на текущем рынке) у "этой" стратегии минуса, а завтра она все отыграет с существенным плюсом.

На каком участке рынка будут тестироваться стратегии?

 
voltair >>:

Понял - стратегии не просто там лежат, а постоянно тестируются и остаются в репозитории только если профитные.

Правда бывает ведь так, что "сегодня" (на текущем рынке) у "этой" стратегии минуса, а завтра она все отыграет с существенным плюсом.

На каком участке рынка будут тестироваться стратегии?

По этой причине я предполагаю, что участок истории должен не менее 8000 баров. Т.е. котировки, в которых менее 8000 баров, программа должна отсеивать. Также она должна отсеивать устаревшие котировки, например, если файл hst не обновлялся в течении последних суток.


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

 
Reshetov писал(а) >>

...я предполагаю, что участок истории должен не менее 8000 баров. ...

Наверное для больших тайм-фреймов это нормально. А вот для минуток или М5 наверное мало. Хотя вопрос - а для каких таймфреймов вообще будут храниться стратегии? И есть какие-то наработанные методики (или опыт) выбора количества баров для тестирования? Я обычно меньше 20000 баров не смотрю. Но может это и не правильно...

 
voltair >>:

Наверное для больших тайм-фреймов это нормально. А вот для минуток или М5 наверное мало. Хотя вопрос - а для каких таймфреймов вообще будут храниться стратегии? И есть какие-то наработанные методики (или опыт) выбора количества баров для тестирования? Я обычно меньше 20000 баров не смотрю. Но может это и не правильно...

Пока остановился на золотой середине, т.е. не менее 8000 баров в исторических данных. Больше можно, меньше нельзя.

 

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


Каждой стратегии лучше присваивать рейтинг, например, от -100 до +100. При начальном размещении стратегии в репозитории ей будет присваиваться нулевой рейтинг.


Все стратегии будут сортироваться по рейтингу в порядке убывания, т.е. от максимального и до минимального. Программа будет загружать лучшие 20 стратегий с максимальным рейтингом и гонять по ним тесты. Если получен положительный результат по тесту и рейтинг стратегии не более 100, тогда он увеличивается на 1. Если результат отрицательный, то он уменьшается на 1. Если рейтинг опускается ниже -100, стратегия удаляется из репозитория.


1. Наибольший рейтинг смогут получить старые стратегии, проверенные временем и тестами, поэтому они чаще будут встречаться в TOP-20

2. Стратегии однодневки постепенно будут понижаться в рейтингах и по достижении уровня -100, удаляться

3. В случае, если программа работает с битыми котировками, то она сможет изменить рейтинг только на 1, т.е. не будет глобально влиять на результаты ранжирования в репозитории, а лишь немного их скорректирует.

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