Советники: МTC "Сombo" - страница 4

 

На счёт уровней, TheXpert, думаю не стоит спорить. В принципе те же я... только вид сбоку. Просто я 1-й и 2-й уровни считаю как подуровни первого уровня, т.к. они реализуют одну и туже первую ступень задачи, только для разных направлений. Да и Бог с ними.

 


TheXpert:

Не могу согласиться. В один момент времени функция не может возвращать два разных значения, так что else при раскомментировании не меняет логики, а всего лишь экономит один вызов функции при срабатывании первого условия.

В том-то и дело, что может. Уровни НС для разнонаправленых сигналов в данной логике реализованы через разные, совершенно не связанные друг с другом перцептроны. Они совершенно неодинаковые, у коротких позиций свой уровень, а у длинных - свой. Попробую изобразить в виде катринки на примере простейших линий:

 

______________________________________________________________ (уровень Sell) (сигнал вниз)

З О Н А   П Е Р Е Х Л Ё С Т А (уровень Sell показывает сигнал вниз (-1), а уровень Buy - сигнал вверх (+1))

______________________________________________________________(уровень Buy) (сигнал вверх)

На этом простом примере я попытался показать, что уровень Sell, который будет показывать сигнал на продажу если проверочное значение будет ниже уровня, а уровень Buy - наоборот. Но на схеме видно, что может существовать зона, при которой могут дать сигналы оба уровня.

Вы, TheXpert, предлагаете совершенно разделить проверку 1-го перцептрона и 2-го внутри процедуры  Supervisor(), что повлечёт одновременную проверку и одного и другого, а как следствие при проверке 1-го перцептрона (уровня Sell) он может дать (-1) - сигнал к продаже, а при проверке 2-го перцептрона - (+1) - сигнал к покупке. А предлагаемая Вами модернизация основной процедуры (start) будет сначали проверять на (+1) а затем последовательно - на (-1).

Причём... Внимательней проанализировав Вашу модернизацию пришёл к выводу, что она совершенно исключает работу по схеме Юрия. Т.е. Ваша модернизация привела к тому, что работа советника будет осуществляться только на БТС, либо только НС-короткие + БТС, либо только НС-длинны + БТС, полностью исключая использование совокупной (полноуровневой) работы. Дело в том, что переменную pass автор ввёл, на сколько я понял, сугубо для обучения советника. Только при установке pass = 4  советник начинает работать полностью, начинают работать и БТС и НС-короткие и НС-длинные. При установке параметров pass 1 работает только БТС, при установке pass 2  работают НС-короткие + БТС, при установке pass 3  работают НС-длинные+ БТС. Вы исключили pass = 4, но при этом в процедуре Supervisor()  оставили проверку на pass 2  и pass 3. На каком pass  Вы собираетесь запускать общую схему работы советника?

 
В том-то и дело, что может. Уровни НС для разнонаправленых сигналов в данной логике реализованы через разные, совершенно не связанные друг с другом перцептроны. Они совершенно неодинаковые, у коротких позиций свой уровень, а у длинных - свой. Попробую изобразить в виде катринки на примере простейших линий:

 

______________________________________________________________ (уровень Sell) (сигнал вниз)

З О Н А   П Е Р Е Х Л Ё С Т А (уровень Sell показывает сигнал вниз (-1), а уровень Buy - сигнал вверх (+1))

______________________________________________________________(уровень Buy) (сигнал вверх)

На этом простом примере я попытался показать, что уровень Sell, который будет показывать сигнал на продажу если проверочное значение будет ниже уровня, а уровень Buy - наоборот. Но на схеме видно, что может существовать зона, при которой могут дать сигналы оба уровня.

Вы, TheXpert, предлагаете совершенно разделить проверку 1-го перцептрона и 2-го внутри процедуры  Supervisor(), что повлечёт одновременную проверку и одного и другого, а как следствие при проверке 1-го перцептрона (уровня Sell) он может дать (-1) - сигнал к продаже, а при проверке 2-го перцептрона - (+1) - сигнал к покупке. А предлагаемая Вами модернизация основной процедуры (start) будет сначали проверять на (+1) а затем последовательно - на (-1).

Причём... Внимательней проанализировав Вашу модернизацию пришёл к выводу, что она совершенно исключает работу по схеме Юрия. Т.е. Ваша модернизация привела к тому, что работа советника будет осуществляться только на БТС, либо только НС-короткие + БТС, либо только НС-длинны + БТС, полностью исключая использование совокупной (полноуровневой) работы. Дело в том, что переменную pass автор ввёл, на сколько я понял, сугубо для обучения советника. Только при установке pass = 4  советник начинает работать полностью, начинают работать и БТС и НС-короткие и НС-длинные. При установке параметров pass 1 работает только БТС, при установке pass 2  работают НС-короткие + БТС, при установке pass 3  работают НС-длинные+ БТС. Вы исключили pass = 4, но при этом в процедуре Supervisor()  оставили проверку на pass 2  и pass 3. На каком pass  Вы собираетесь запускать общую схему работы советника?


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

Насчет pass -- верно подмечено, я хотел исправить но не было времени, а потом забыл...

Надо вместо

if (pass == 2) {
 
написать
 
if (pass >= 2) {

Понадеялся, так сказать на внимательность читающих, и не прогадал :).

На следующей неделе выложу свой вариант. Тогда и поговорим.

 
TheXpert:

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

if (pass == 2) {
 
написать
 
if (pass >= 2) {

Вся логика внутри супервизора не может, потому что всецело зависит от переменной pass.

Прежде чем вы напишите свой эксперт предлагаю подумать над слудующими вопросами. Предположим Вы реализуете работу всего эксперта только через if (pass >= 2) { , но при этом доступ ко второму перцептрону оставите в виде if (pass == 3) { , что получится при обращении к процедуре супервизор? Если pass=1 - то перцептроны будут отключены, и будет работать только БТС. Если pass=2 - то будет работать перцептрон 1 + БТС. Если pass=3 - то будет работать перцептрон 2 + БТС, до 1-го перцептрона просто недойдёт, потому что установлены выходы из процедуры Supervisor()  по return( , либо при сигнале от перцептрона, либо при обработке БТС - всё равно выход. Если же при такой реализации установить pass=4 или более - то будет работать ТОЛЬКО перцептрон 1 + БТС, всё по тем же вышеописанным причинам.

Если же реализовать также и if (pass >= 3) { , то по тем же вышеописаным причинам при pass=4 или более  - будет работать ТОЛЬКО перцептрон 2 + БТС. До первого просто доходить не будет, потому что return(  первой проверки обязательно сработает. Такая запись будет просто некорректной.

 

Чёт вааще бред какойта ИМХО.

sl и tp в диаппазоне 100 писов. Ну к примеру ленивая пара EUR 100 пипсов проходит от пары часов до пары суток. Значит работаем на часах.

То есть нам нужен прогноз на 3-4 часа принормальной активность и 24-48 часов при ленивом рынке.

Теперь посмотрим на "персептрон". Что это...?

double a1 = Close[0] - Open[p2];
double a2 = Open[p2] - Open[p2 * 2];
double a3 = Open[p2 * 2] - Open[p2 * 3];
double a4 = Open[p2 * 3] - Open[p2 * 4];
Да просто быстрый стохастик с периодом p2. То есть сравниваем цены на расстоянии p2 и не вдаёмся в то что происходило в промежутках.

А весовые Х это попытки трактования значений этого стохастика.

Ну что мы получаем после оптимизации. p2=89 или около того, а это почти 4 суток. И мы не вдаёмся в то что происходило внутри. Мы всего то сравниваем разницу цен открытия на расстоянии 89 свечек. При попытке уменшить p2 до разумных размеров, например 3-10, получаем гарантированно убыточные результаты. И действительно это похоже на истину. Ведь одного стохастика маловато для прибыльной работы.

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

Резюме: Ну почти невероятно судить о движении цены в течении нескольких часов по четырём разницам цен с интервалом в 4 суток и не вдаваясь в то что происходило в эти промежутки. ИМХО результат пальцем в небо. В данном советнике работают 2 стохастика (2 слоя) фильтруя по &. Но это всё равно что принимать решение не по одной монетке, а по двум при совпадении орлов или решек. Это уменьшит количество решений, но не увеличит процент угадываний.

Можно попробовать по этой схеме реализовать персептрон уменьшив период до 2-3, а количство сегментов увеличить с 4 до 50.  Но такой зверь тестеру не по зубам.

 
Ugar:

Теперь посмотрим на "персептрон". Что это...?

Да просто быстрый стохастик с периодом p2. То есть сравниваем цены на расстоянии p2 и не вдаёмся в то что происходило в промежутках.

А весовые Х это попытки трактования значений этого стохастика.

Ну что мы получаем после оптимизации. p2=89 или около того, а это почти 4 суток. И мы не вдаёмся в то что происходило внутри. Мы всего то сравниваем разницу цен открытия на расстоянии 89 свечек. При попытке уменшить p2 до разумных размеров, например 3-10, получаем гарантированно убыточные результаты. И действительно это похоже на истину. Ведь одного стохастика маловато для прибыльной работы.

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

Резюме: Ну почти невероятно судить о движении цены в течении нескольких часов по четырём разницам цен с интервалом в 4 суток и не вдаваясь в то что происходило в эти промежутки. ИМХО результат пальцем в небо. В данном советнике работают 2 стохастика (2 слоя) фильтруя по &. Но это всё равно что принимать решение не по одной монетке, а по двум при совпадении орлов или решек. Это уменьшит количество решений, но не увеличит процент угадываний.

Можно попробовать по этой схеме реализовать персептрон уменьшив период до 2-3, а количство сегментов увеличить с 4 до 50.  Но такой зверь тестеру не по зубам.


Да, мы подбираем стохастик, но подбираем его специально для БТС, то что у Вас р2 получилось таким большим говорит всего лишь о том, что Ваш советник не поддается оптимизации таким путем.

Это всего лишь показательный пример того, как можно оптимизировать стратегии. Это не панацея.

Насчет 50 сегментов -- все реализуемо, только естественно, необходимо поменять подход, на MQL5 все легко и без проблем реализуемо даже с классическим нелинейным персептроном, не говоря уже про то, что реализовано в данном советнике.

Кроме того, в данном варианте советник НЕ обрезает количество ставок, он пытается торговать ВСЕГДА при отсутствии открытых лотов. Но принципы данного МТС это уже отдельный разговор.

 
TheXpert:
Ugar:

Теперь посмотрим на "персептрон". Что это...?

Да просто быстрый стохастик с периодом p2. То есть сравниваем цены на расстоянии p2 и не вдаёмся в то что происходило в промежутках.

А весовые Х это попытки трактования значений этого стохастика.

Ну что мы получаем после оптимизации. p2=89 или около того, а это почти 4 суток. И мы не вдаёмся в то что происходило внутри. Мы всего то сравниваем разницу цен открытия на расстоянии 89 свечек. При попытке уменшить p2 до разумных размеров, например 3-10, получаем гарантированно убыточные результаты. И действительно это похоже на истину. Ведь одного стохастика маловато для прибыльной работы.

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

Резюме: Ну почти невероятно судить о движении цены в течении нескольких часов по четырём разницам цен с интервалом в 4 суток и не вдаваясь в то что происходило в эти промежутки. ИМХО результат пальцем в небо. В данном советнике работают 2 стохастика (2 слоя) фильтруя по &. Но это всё равно что принимать решение не по одной монетке, а по двум при совпадении орлов или решек. Это уменьшит количество решений, но не увеличит процент угадываний.

Можно попробовать по этой схеме реализовать персептрон уменьшив период до 2-3, а количство сегментов увеличить с 4 до 50.  Но такой зверь тестеру не по зубам.


Да, мы подбираем стохастик, но подбираем его специально для БТС, то что у Вас р2 получилось таким большим говорит всего лишь о том, что Ваш советник не поддается оптимизации таким путем.

Это всего лишь показательный пример того, как можно оптимизировать стратегии. Это не панацея.

Насчет 50 сегментов -- все реализуемо, только естественно, необходимо поменять подход, на MQL5 все легко и без проблем реализуемо даже с классическим нелинейным персептроном, не говоря уже про то, что реализовано в данном советнике.

Кроме того, в данном варианте советник НЕ обрезает количество ставок, он пытается торговать ВСЕГДА при отсутствии открытых лотов. Но принципы данного МТС это уже отдельный разгово

Если бы стохастик подбирался для БТС они бы работали одновременно и болжны быть включены по и\или. А в данной реализации БТС начинает работать только в в случае если персептрон молчит, вернее если 1 и 2 слои имеют противоположные значения.

Я пробовал убрать БТС  и запретить открываться когда слои не дружат что бы оценить работу чистого персептрона. Результат пальцем в небо. Как известно стохастик лучше работает по тренду чем против. По этому попробовал по & включить трендовый индикатор. Результаты значительно улучшились, но всё же слишком много случайности как показали вэк тесты.

Чес слово, ничего не имею против персептронов. Иначе небылоб меня тут. Но уже мозги дымятся. Пробовал по такой же реатизации разные индикаторы и даже комбинации из 6 персептронов 5 индюков и суммирующий. Результат немного лучше, но и этому я денег не доверю.

Может действительно нужно увеличивать количество сегментов? Слишком грубо работает 4х сегментный. Попробую...

Может кто имеет по больше знаний в персептронах и подскажет чё? А лучше пример кода на мыло или здесь.

 

Переделанный мной combo из еле прибыльного советника, который давал +4000 с 10000 при динамическом лоте и 10% риска сделал 260000 с 1000 после оптимизации.

Правда я сделал упор на другое -- мой советник пытается с помощью нейронок обрезать убыточные ставки и работает только если есть сигнал с БТС.

Кстати, народ, советник под часовые тики, поставил точную модель, все 8 лет торгует по минутам, однако качество n\a что бы это значило???

 

Попробовал и я прилодить руку с сему чуду. Парился неделю, и в базовой версии и дорабытывал алгоритм и несколько своих функций в  basicTradingSystem вставлял - т.е. переделывал "базовую БТС" на языке автора. Результаты по прогону на истории - фантастические: прибылность  от 8 до  12, мат.ожидание около 1000,  но это правда с моим индюком. тестировал на 1Н по еврэ, отрезок около полугода. На след. месяц после - результат

 
Valio:

Попробовал и я прилодить руку с сему чуду. Парился неделю, и в базовой версии и дорабытывал алгоритм и несколько своих функций в  basicTradingSystem вставлял - т.е. переделывал "базовую БТС" на языке автора. Результаты по прогону на истории - фантастические: прибылность  от 8 до  12, мат.ожидание около 1000,  но это правда с моим индюком. тестировал на 1Н по еврэ, отрезок около полугода. На след. месяц после - результат

"На след. месяц после - результат"   ???

Valio, так какой-же результат у Вас получается в форварде? Очень интересно!

Просто я тоже переделал этого советника, и поначалу прибыльность по евре при оптимизации за год (даже не за полгода, а за год) по Н1 зашкаливала за 18 (и выше)!!! А вот форварды оказались, мягко говоря, не очень...

Сейчас, после очередной доработки, прибыльность при оптимизации стала ниже (около 10), но зато теперь достойно держит форвард (более 3-х месяцев). В форварде на участке более 3-х месяцев прибыльность составляет более 2,5. Продолжаю заниматься, думаю может получиться очень интересный эксперт.

 
Это при работе советника постоянным лотом. ММ я ему пока не прикручивал.
Причина обращения: