Советники: Мультивалютный советник на основе кластерного индикатора - страница 3

 

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

 

lexandros

lexandros:
evbut:

iCustom(NULL,0,"CCFp",1,0,5,3,cnt,1) здесь затаилась опечатка автора по-видимому... дело вот в чем. с такой постановкой цыфр - советник будет торговать наоборот, т.е. когда надо покупать - он будет продовать. а все дело в том, что это параметры индикатора Fast и Slow... Если оставить фаст больше слоу, то индикатор перевоваричивается - отсюда и неправильность совершения сделок. А вот если написать iCustom(NULL,0,"CCFp",1,0,3,5,cnt,1), то советник торгует в нужную сторону.

Если поменять параметры местами - полностью переворачивается индикатор - вы правы. Но при этом, и сделки будут заключаться как раз "неправильную" сторону. Можете наложить индикатор на любую валютную пару - и отключить лишние линии... Оставить например только EUR и USD и наложить на EURUSD. Посмотрите на индикатор и пересечение линий. и на направление движения самого графика. Отчетливо видно - что при том варианте, который и есть в советнике - если евра ниже бакса надо покупать евру и продавать бакс... т.е. применительно к паре EURUSD - надо BUY.

Собстно говоря так и сделано:) то же самое касается и остальных пар.

я понял идею вашего советника... спасибо за разъяснение.

а не было проще сделать наооборот, т.е. на индикаторе евро начало уходить вниз продовать ее? ведь собственно этот индюк как раз и показывает, что продовать, а что покупать при пересечении линий валют. Почему я считаю такой вариант проще? потому что по этому индикатору нельзя определить будет ли та же евро покупаться при нахождении ее линии ниже бакса. тут надо подуматьи поэкспериментировать с параметром step, который должен быть больше, чем по умочанию.

 

Предлагаю еще одну интерпретацию сигналов индикатора CCFp для реализации в советнике.

Здесь для CCFp нужно использовать сигнальные уровни. Например для часового масштаба берем уровни +/- 0.01  и +/- 0.005 см. скрин.

Сигналы идут в целом по группе валют, которая определяется в настройках индикатора. На изображенном примере сигнал зреет по группе CAD и его кроссам. Кривая CAD начинает перескать снизу вверх уровень - 0.005, что означает начинающееся укрепление CAD. Отсюда предполагаем, что CAD будет упрепляться по большинству контрвалют в своей группе, а значит надо готовится его покупать. (Индикатор то кластерный) Если кривая вылетает выше/ниже уровня +/-0.01 то данное условие становится справедливым для этого уровня (Пример с JPY см скрин.)


Далее идет фильтрация. 

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

2-е условие. Кривая контрвалюты, на момент сделки, должна быть ниже уровня +0.005 (зеркального к тому, по которому рассматривается сигнал).

На приведенном скрине сигнал полностью сформирован пока только EURCAD - SELL. Остальные зреют. На походе сигналы по AUD и JPY.

Таким образом сокращается число одновременно открытых позиций и общая позиция по валюте диверсифицируется по разным контрвалютам.

Параметры использованные для CCFp 3,5,2,3.

 
walker_:

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

Немного изменил его, добавил свои функции а так же отключил закрытие - и за один день работы советник на демо-счете принес с 9к - 2к прибыли, убыточных сделок на 256 демобаксов.

Картинка дабы не быть голословным


поделитесь своей версией

 
BigeR:

Предлагаю еще одну интерпретацию сигналов индикатора CCFp для реализации в советнике.

Здесь для CCFp нужно использовать сигнальные уровни. Например для часового масштаба берем уровни +/- 0.01 и +/- 0.005 см. скрин.

Сигналы идут в целом по группе валют, которая определяется в настройках индикатора. На изображенном примере сигнал зреет по группе CAD и его кроссам. Кривая CAD начинает перескать снизу вверх уровень - 0.005, что означает начинающееся укрепление CAD. Отсюда предполагаем, что CAD будет упрепляться по большинству контрвалют в своей группе, а значит надо готовится его покупать. (Индикатор то кластерный) Если кривая вылетает выше/ниже уровня +/-0.01 то данное условие становится справедливым для этого уровня (Пример с JPY см скрин.)


Далее идет фильтрация.

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

2-е условие. Кривая контрвалюты, на момент сделки, должна быть ниже уровня +0.005 (зеркального к тому, по которому рассматривается сигнал).

На приведенном скрине сигнал полностью сформирован пока только EURCAD - SELL. Остальные зреют. На походе сигналы по AUD и JPY.

Таким образом сокращается число одновременно открытых позиций и общая позиция по валюте диверсифицируется по разным контрвалютам.

Параметры использованные для CCFp 3,5,2,3.

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

 

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

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

Не знаю стоит ли ее здесь выкладывать - практически полный аналог, изменния только в том, что сделки открываются сразу по группе пар, если какая либо из валют пересекает 0+step (вверх или вниз). сделки открываются на кроссовые пары по валютам которые на данный момент находятся в противофазе. Кроме того немного изменен механизм закрытия. Если поэкспериментировать с параметром степ и с уровнем трейла - дает вполне неплохие результаты.

У меня на деме за неделю поднял почти 20% депо, что ИМХО очень и очень неплохо. 

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

А по поводу - варианта предложенного BigeR - очень интересно... Возможно и реализую что либо подобное в следующей версии...

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

Чтобы это исправить, надо в функции трейлинга заменить конструкцию: if (OrderStopLoss()==0) на if (OrderStopLoss()==0||OrderStopLoss()<OrderOpenPrice()) для бай. и if (OrderStopLoss()==0||OrderStopLoss()>OrderOpenPrice()) для селл.

 
evbut:
walker_:

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

Немного изменил его, добавил свои функции а так же отключил закрытие - и за один день работы советник на демо-счете принес с 9к - 2к прибыли, убыточных сделок на 256 демобаксов.

Картинка дабы не быть голословным


поделитесь своей версией


Да, walker, поделитесь своей версией! Просим. Можно в любом виде - в виде изменённого кода или укажите, какие настройки применяли...

 
jay34:
evbut:
walker_:

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

Немного изменил его, добавил свои функции а так же отключил закрытие - и за один день работы советник на демо-счете принес с 9к - 2к прибыли, убыточных сделок на 256 демобаксов.

Картинка дабы не быть голословным


поделитесь своей версией


Да, walker, поделитесь своей версией! Просим. Можно в любом виде - в виде изменённого кода или укажите, какие настройки применяли.

Можно на basketbal34@mail.ru изменённого скинуть, если не трудно... Но, думаю, не только мне это интересно - троим уже как минимум. Поэтому лучше бы и здесь поделиться своими доработками... Просим-просим...

 
lexandros:

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

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

Чтобы это исправить, надо в функции трейлинга заменить конструкцию: if (OrderStopLoss()==0) на if (OrderStopLoss()==0||OrderStopLoss()<OrderOpenPrice()) для бай. и if (OrderStopLoss()==0||OrderStopLoss()>OrderOpenPrice( )) для селл.

Я бы сделал несколько по иному - но Вы автор Вам и карты в руки.

            if (OrderStopLoss()< MarketInfo(OrderSymbol(),MODE_BID)-tr*MarketInfo(OrderSymbol(),MODE_POINT)){
//для бай 
            if (OrderStopLoss()>MarketInfo(OrderSymbol(),MODE_ASK)+tr*MarketInfo(OrderSymbol(),MODE_POINT) || (OrderStopLoss()==0)){
//для селл

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

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

 

lexandros, спасибо за отличный советник! Реализуйте пожалуйста заманчивую идею BigeRа.

walker_ очень жаль что не хотите выкладывать свои наработки. Это же в конце концов, ВАША и только ВАША доработка... причем тут - чужие платные функции. и что это в конце концов за комерилизация. :)  может быть выложите! Пожалуйста!