Обсуждение статьи "Разработка самоадаптирующегося алгоритма (Часть II): Повышение эффективности" - страница 3

 
Valeriy Yastremskiy:

Интересен обзор, как отбирались значимые настройки. Это целая тема.

там есть несколько ключевых режимов. Например открывать позиции на каждой свече или с пропуском или только если цена для позицйи Sell выросла или упала для позиций Buy. Я прогнал эти режимы, сравнил результаты. Отталкиваемся от режима открытия позиций на каждой свече. Если прибыль падает сильно, а просадка падает не сильно, то режим плохой. Например прибыль упала в 2 раза, а просадка в 1,1 раза. Такой режим не очень. Но если прибыль упала в 2 раза, а просадка в 1,5, то смотрим на максимльное число сделок в серии. Если максимальное число сделок значительно сократилось, например тоже в 1,5 раза, то это в будущем может положительно сказаться на стабильности. То есть в моменте режим не впечатляет, но мы знаем, что для депозита большое число сделок опаснее. Значит находим оптимальное и оставляем его. Эти режимы одинаково работают для любого инструмента, по тому что это характеристики самого алгоритма. Значит дальше буду использовать режим пропуска свечей для открытия позиций. Так проделывается со всеми режимами работы. Смотрим, какой работает интереснее для текущей задачи.

Оптимизацию параметров я делаю полным перебором. Например ставлю минимальное число свечей 30, максимальное 300 и оптимизирую минимальное число свечей с шагом 2, а максимальное остается стабильным. Дополнительно ставлю перебор количества выборок, которое необходимо анализировать. Начало с 1, максимум ну пусть 30. И оптимизирую процент для открытия. Закрытие в прибыль я ставлю на значение 1ATR фиксированное. после того, как пройдет оптимизация, я смотрю с каких параметров начинается стабильность. Оно работает так: с увеличением процента открытия и увеличением минимально числа свечей и увеличением количества выборок, растет качество сигнала, но падает прибыльность. Поэтому я нахожу минимально устойчивые параметры и затем накидываю для запаса. Например найдено, что диапазон свечей 58-300, процент 58, число выборок 7, это стабильные параметры с адекватным соотношением риск/доходность. Значит я увеличиваю минимальное число свечей до 68-300, процент поднимаю на единицу, 59, выборок добавляю до 9 и проверяю, насколько это устойчиво работает, если я не ошибся, то есть запас в будущем для флуктуации параметров ценового ряда, это хорошо, оставляю настройки. 

Теперь нужн оподтянут ьприблыьность. Чем меньше коэффициент ATR для фиксации прибыли, тем стабильнее. Поэтому я запускаю оптимизацию этого параметра. От 1 уже проходит, значит попробуем от 1 до 3 с шагом 0,1. Смотрим что с увеличением значения прибыль растет, но в один момент стабильность пропадает. Пусть он стабилен до значения 1,5. Тогда оставим эти 0,5 свечи на изменение характеристик рынка и пусть работает со значением 1. 

Тут еще есть другой момент. Мы торгуем свечи, и прибыль в 1 свечу с позиции это нормально, особенно если мы не на каждой свече открываемся. Но есть спред, нужно понять, какого он размера. Пусть свеча 0,0015 размером, а спред средний 0.0001. 0.0001/0,0015=0,066. 6,6% прибыли от свечи съедает спред. Значит лучше сделать прибыль не 1ATR (100%), а 1-0,066=0,93. Округлю, чтобы был запас вниз и ATR = 0,9 (90%) нормальное значение.

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

 
Edgar Akhmadeev:
В конечном, вылизанном продукте должен быть минимум настроек. Но в экспериментальном обычно начинаешь с большого количества, постепенно понимаешь взаимосвязи, оптимизируешь или фиксируешь многие параметры. Я в последнем индикаторе из 4 сделал 2 параметра. А в кодобазе как раз код для экспериментов.

Тут важно, что в конечном продукте для потребителя. Я не продаю этого робота (хотя мог и он лучше большинства из маркета) Но я понимаю, что покупатель не будет разбираться что там к чему, не питаю иллюзий. Когда ты и разраб и трейдер, то конечный продукт находится в постоянном режиме модификаций. Сделал одну версию, доработал под реал, торгует, пока она торгует делаешь другую, что-то убираешь, что-то добавляешь, в итоге следующая версия опять стабильная, но причесывать красоту... А еще параллельно надо привлекать клиентов) Это имеет смысл, когда у тебя команда из 10 человек, но когда ты один/двое, лучше ресурсы потратить на разработку.

 
Maxim Romanov:

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

Спасибо, доходчиво. 

Такая осмысленная ручная оптимизация, и иногда с полным перебором) 

 
Maxim Romanov:

почему?

А потому что ФОРЕКС....

Кстати, у меня, в советнике для ФОРТС 48 настроек (вместе с параметрами графика)


 
Maxim Romanov:

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

Максим, спасибо за статьи!

Прокомментируйте выделенное, пожалуйста. Не могу себе представить ситуацию, в которой покупка по более высокой цене и продажа по более низкой цене даст более высокую доходность (если речь не о доходности брокера, конечно).

 
Andrey Khatimlianskii:

Максим, спасибо за статьи!

Прокомментируйте выделенное, пожалуйста. Не могу себе представить ситуацию, в которой покупка по более высокой цене и продажа по более низкой цене даст более высокую доходность (если речь не о доходности брокера, конечно).

Такой парадокс получается). Это из за того, как прибыль контролируется. Она контролируется в пунктах от цены открытия позиций до цены закрытия. Получается, что если спред маленький, то уровень прибыли пересекает пороговое значение и серия завершается. Но если спред большой, то прибыли может не хватить для срабатывания условий закрытия и серия продолжается. Если серия продолжается, то открываются новые позиции. А так как контролируется средняя прибыль по открытым позициям, то чем больше позиций, тем больше прибыль. Вот и выходит так, что при большем спреде просто больше позиций, и соответственно больше прибыль. Но большой спред влияет на стабильность. Чем больше позиций, тем выше риск закрыться в убытке.
 
Maxim Romanov:
Такой парадокс получается). Это из за того, как прибыль контролируется. Она контролируется в пунктах от цены открытия позиций до цены закрытия. Получается, что если спред маленький, то уровень прибыли пересекает пороговое значение и серия завершается. Но если спред большой, то прибыли может не хватить для срабатывания условий закрытия и серия продолжается. Если серия продолжается, то открываются новые позиции. А так как контролируется средняя прибыль по открытым позициям, то чем больше позиций, тем больше прибыль. Вот и выходит так, что при большем спреде просто больше позиций, и соответственно больше прибыль. Но большой спред влияет на стабильность. Чем больше позиций, тем выше риск закрыться в убытке.

Понял, спасибо.

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

Но я уже понял, что следующим шагом стал переход на МТ5. Буду наблюдать.

 
Andrey Khatimlianskii:

Понял, спасибо.

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

Но я уже понял, что следующим шагом стал переход на МТ5. Буду наблюдать.

МТ5 + MOEX

 
Andrey Khatimlianskii:

Понял, спасибо.

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

Но я уже понял, что следующим шагом стал переход на МТ5. Буду наблюдать.

Да, это было логично) я даже думал, что эту проблему надо решать, когда торговал, но потом понял что это слишком мелкая модификация, решительно она ничего не поменяет.
 

Добрый вечер.

Подозреваю что в строчке 256 знак 87 закралась ошибка\очепятка, вместо "-" очень хорошо смотрится "=". 

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

if(mas_par[i].Pause>0 && mas_par[i].Series_Close_Time>0) mas_par[i].Pause-iBarShift(mas_symbols[i],mas_inp[i].TF,mas_par[i].Series_Close_Time);

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