Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Паттерны и уровень входа в позицию Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
belin



Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user

СообщениеДобавлено: Чт Дек 01, 2011 6:30 pm Ответить с цитатой Вернуться к началу

Зашкалило. Не могу без цикла написать AFL код.
Предположим имеем несколько свечных комбинаций. Пишем для них условия нахождения: (Просто для примера) Три белых солдата-Условие1, Медвежье поглощение- Условие2, ..., Три черных вороны-Условие_n. Находим эти комбинации на графике.
Теперь хочу входить в позицию Buy, если цена пересекла максимум свечной комбинации, а свечей в ней 2, 3 или 4, в зависимости от паттерна . Или в Sell, если цена пересекла минимум свечной комбинации.
Для одного паттерна всё просто:
Код:

Условие1=...(описываем возникновение 3 солдатов);
Buing=ValueWhen(Условие1, H,1);
Selling=ValueWhen(Условие1, Ref(L,-2),1);
Buy=Cross(C, Buing);
Sell=Cross(Selling,C);

Для двух паттернов тоже понятно, записываем Условие1 и Условие2 и через Buing= IIF(Условие1 и не Условие2, не Условие1 и Условие2, ...) находим Buing и Selling. А что делать если паттернов десяток. Можно ли без цикла обойтись?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Чт Дек 01, 2011 9:16 pm Ответить с цитатой Вернуться к началу

Не парься. Оттестируй их по отдельности. Я тя уверяю суммарная система будет не лучше чем сумма систем.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
belin



Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user

СообщениеДобавлено: Чт Дек 01, 2011 10:38 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Не парься. Оттестируй их по отдельности. Я тя уверяю суммарная система будет не лучше чем сумма систем.

Весь смысл, на мой взгляд, в построении переворотной системы, которая почти всегда в рынке. Входим по одному паттерну, второй, ... пятый в том же направлении, переворачиваемся при изменении направления паттерна, или не отрабатывает Buy, переворачиваемся на Sell. Наш торговый плагин (СмартТрейдовский) заброшен, тейкпрофит с контролем исполнения выставить невозможно, приходится придумывать переворотные системы.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Чт Дек 01, 2011 11:35 pm Ответить с цитатой Вернуться к началу

По смартовскому плагину.
А тот недоделок что был нормально работал?
Мне не понравилось то как это сделано и кажется, что работает весьма не надежно. Поэтому и запал пропал... Sad
По вопросу.
Не обязательно делать
Код:
записываем Условие1 и Условие2 и через Buing= IIF(Условие1 и не Условие2, не Условие1 и Условие2, ...)

Если надо чтобы срабатывало только когда одно условие то проще так
Код:
Условие1 + Условие2 +... == 1;

Или я вопрос не понял.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
belin



Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user

СообщениеДобавлено: Пт Дек 02, 2011 12:32 am Ответить с цитатой Вернуться к началу

000 писал(а):
Если надо чтобы срабатывало только когда одно условие то проще так
Код:
Условие1 + Условие2 +... == 1;

Или я вопрос не понял.

Вопрос только в том, как без использования циклов менять уровень максимума паттерна = Buing(для покупки) и линию минимума паттерна = Selling (для уровня продажи) при возникновении нового паттерна. Я хочу получить что-то типа Price channel, но изменение максимума и минимума только при возникновении нового паттерна.
Посмотреть профиль Отправить личное сообщение
belin



Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user

СообщениеДобавлено: Пт Дек 02, 2011 12:41 am Ответить с цитатой Вернуться к началу

000 писал(а):
По смартовскому плагину.
А тот недоделок что был нормально работал?
Мне не понравилось то как это сделано и кажется, что работает весьма не надежно. Поэтому и запал пропал... Sad

А я на твоём, грубо обзываемом недоделке, неплохо заработал. Не надо плохо отзываться о машине, которая тебя везёт. Нужно бережно и внимательно относиться к данному тебе, и всё будет способствовать тебе.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пт Дек 02, 2011 1:00 am Ответить с цитатой Вернуться к началу

Опять нифига не понял проблему.
Опиши на конкретном примере с парой патернов...

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
belin



Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user

СообщениеДобавлено: Пт Дек 02, 2011 9:34 am Ответить с цитатой Вернуться к началу

Попробую на примере внутреннего и внешнего бара:
Код:

_SECTION_BEGIN("Price");
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Close %g  {{VALUES}}", C ));
Plot( C, "Close", ParamColor("Color", colorBlack ), styleCandle | ParamStyle("Style") | GetPriceStyle() );
_SECTION_END();

_SECTION_BEGIN("Price_patterns");

RefH = Ref(H,-1);
RefL = Ref(L,-1);

/* 1-st Pattern "Outter Bar" */
Outter= H >= RefH AND L <= RefL;
/*  2-nd Pattern"Inner Bar" */
Inner= H <= RefH AND L >= RefL;

BuingInner=ValueWhen(Inner, RefH,1);
SellingInner=ValueWhen(Inner, RefL,1);

BuingOutter=ValueWhen(Outter, H,1);
SellingOutter=ValueWhen(Outter, L,1);

PlotShapes(IIf(Inner == 1, shapeHollowSmallCircle, shapeNone),3, layer = 0, yposition = L, offset = -15);
PlotShapes(IIf(Outter == 1, shapeHollowSmallCircle, shapeNone),3, layer = 0, yposition = H, offset = 15);
Plot( BuingOutter, _DEFAULT_NAME(), colorGreen, ParamStyle("Style") );
Plot( SellingOutter, _DEFAULT_NAME(), colorRed, ParamStyle("Style") );
Plot( BuingInner, _DEFAULT_NAME(), colorBlue, ParamStyle("Style") );
Plot( SellingInner, _DEFAULT_NAME(), colorYellow, ParamStyle("Style") );

_SECTION_END();


Хотелось бы иметь две линии Buing и Selling, которые меняются при возникновении нового паттерна, если число паттернов больше 5.
Посмотреть профиль Отправить личное сообщение
belin



Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user

СообщениеДобавлено: Чт Дек 08, 2011 11:09 pm Ответить с цитатой Вернуться к началу

Как я понял, без цикла по просмотру паттернов не обойтись. Жаль. Цикл у меня жрет ресурсы страшно. Тиковая база, 5-секундный интервал, а паттерны смотрятся на минутках, 5-минутках, цикл убийствинен даже для I7. Попробую разделить задачу: для теста полный цикл, для реала - данные последнего часа.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Чт Дек 08, 2011 11:25 pm Ответить с цитатой Вернуться к началу

Я в общем так и не смог понять в чем трабл.
Ну возьмем твой пример. Что мешает сделать так?
Код:

...
/* 1-st Pattern "Outter Bar" */
Outter= H >= RefH AND L <= RefL;
/*  2-nd Pattern"Inner Bar" */
Inner= H <= RefH AND L >= RefL;

Pattern = Outter OR Inner;

BuingInner=ValueWhen(Pattern, RefH,1);
SellingInner=ValueWhen(Pattern, RefL,1);

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
belin



Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user

СообщениеДобавлено: Пт Дек 09, 2011 10:31 am Ответить с цитатой Вернуться к началу

000 писал(а):
Я в общем так и не смог понять в чем трабл.
Код:

BuingInner=ValueWhen(Pattern, RefH,1);
SellingInner=ValueWhen(Pattern, RefL,1);

Вот и я не понимаю почему я такой тупой последнее время. Остался один вопрос, как сделать BuingInner и SellingInner, если в паттерне минимум и максимум могут возникать иногда две свечи назад, иногда три, иногда одну, для каждого паттерна известно на какой, т.е. как в даном случае записать RefH и RefL ведь IIF от IIF не возьмешь, в цикле проще:
Код:

If((Pattern1  с минимумом 1-на свеча назад) OR (Pattern2 с минимумом 1-на свеча назад) OR ....)
{RefL= Ref(L,-1)}
ElseIf((Pattern1 с минимумом 2 -ве свечи назад) OR (Pattern2 с минимумом 2-ве свечи назад) OR ....)
{RefL= Ref(L,-2)}
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пт Дек 09, 2011 12:15 pm Ответить с цитатой Вернуться к началу

Мне кажется проще для каждого паттерна сразу при его описании делать RefH и RefL.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
belin



Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user

СообщениеДобавлено: Пт Дек 09, 2011 3:37 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Мне кажется проще для каждого паттерна сразу при его описании делать RefH и RefL.

Вопрос в том как? Уйдём от терминов RefH и RefL к Pattern_min и Pattern_max, чтобы я не запутался и не запутал остальных. В моей интерпретации RefH и RefL это минимум и максимум прошлой свечи, Ref2H=Ref(H,-2) и Ref2L=Ref(L,-2) это минимум и максимум две свечи назад. Для двухбарных паттернов
Код:

/* 1-st Pattern "Outter Bar" */
Outter= H >= RefH AND L <= RefL;
Pattern_min =L;// т.е для внешнего минимум паттерна, это минимум последней свечи
/*  2-nd Pattern"Inner Bar" */
Inner= H <= RefH AND L >= RefL;
Pattern_min =RefL;//  для внутреннего минимум паттерна, это минимум прошлой свечи

для трехсвечного паттерна в общем случае
Код:

Pattern_min =MIN( MIN(L , RefL), Ref2L );

Но если возникший паттерн двухсвечный, его минимум расчитывается только по этим двум свечам, без учёта предыдущей.
В итоге хотелось бы иметь код для набора паттернов, Если возник паттерн(двух, трёх, четырёхсвечный), если цена пересекла его минимум вниз - продаём, поболталась внизу, вернулась, пересекла максимум этого же паттерна, значит условия на рынке изменились, покупаем и так до появления следующего паттерна, цена пересекла уже его максимум вверх - остаёмся в покупке, пересекла его новый минимум вниз -разворачиваемся в продажу.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Дек 12, 2011 2:23 am Ответить с цитатой Вернуться к началу

Ну вот. Я и предлогаю сразу для каждого паттерна описывать его
Pattern_min и Pattern_max
типа так

Код:
Pattern1 = ...;
Pattern_min = Ref(...);
Pattern_max = Ref(...);

Pattern2 = ...;
Pattern_min = IIf(Pattern2, Ref(...), Pattern_min);
Pattern_max = IIf(Pattern2, Ref(...), Pattern_max);

.......

Конечно геморойно...

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
belin



Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user

СообщениеДобавлено: Пн Дек 12, 2011 9:28 am Ответить с цитатой Вернуться к началу

Спасибо, пробую.
000 писал(а):
Конечно геморойно...

Вот на C# подобное писать точно геморойно, а это только требует времени и внимательности.
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen