[open source] [Советник] "Generic A-TLP"📌

От Sergey5, 23 апреля, 2016 в Лаборатория ProfitFX

#2127



Если кто из программистов готов взяться за переделку - я могу предоставить код на Омеговском языке, там всего несколько строк.

Ну если всего несколько строк, то можно было бы и так предоставить :)

Спойлер


Inputs:Price(Close),Len(30),Lag(0.0),Nx(10.0),Entr(-2.0),Exit(0.5);
Variables:F(0),e1(Price),e2(Price),Av(Price),Fn(0),N(0),B(Price),S(Price),ExB(Price),ExS(Price);

F = 2 / (Len + 1);
e1 = F * Price + (1 - F) * e1[1];
e2 = F * e1 + (1 - F) * e2[1];
Av = e1 * (2 - Lag) - e2 * (1 - Lag);

Fn = 2 / (Len * Nx + 1);
N = Fn * AbsValue(Price - Av) + (1 - Fn) * N[1];

B = Av + N * Entr;
S = Av - N * Entr;
ExB = Av + N * Exit;
ExS = Av - N * Exit;

If CurrentBar > Len*Nx then begin

Buy B Limit;
Sell S Limit;
ExitLong ExB Limit;
ExitShort ExS Limit;

end;

Здесь инпут Lag может плавно менять вид мувинга и его отставание от цены:
Lag = 1 = обычная EMA(Price,Len)
Lag = 2 = дважды сглаженная EMA(EMA(Price,Len),Len)
Lag = 0 = зеро-лаг EMA
Можно задавать и отрицательные значения, получится опережающий мувинг на длинном тренде, но при смене тренда он будет заскакивать выше/ниже цены (т.н. "овершотинг").

Изменено 20 ноября, 2016 пользователем TakeProfit_1

#2128

А Nx, Len, и прочие - что означают?
Ну, опережающий - наверно, только на истории будет работать?

#2129


А Nx, Len, и прочие - что означают?
Ну, опережающий - наверно, только на истории будет работать?


Len = Length = Period
Nx (N - Normalize, x - умножение) - множитель для расчёта периода среднего отклонения Len(30)*Nx(10) = 300. Сделана привязка к периоду расчёта мувинга для корректной масштабируемости. Достаточно изменить только Len, не трогая Nx, и период расчёта среднего отклонения автоматом изменится: Len(10)*Nx(10) = 100. Например у нас на графике М15 стоит параметр Len(10), для перехода на график М5 достаточно поменять на Len(30), не трогая остальные параметры, и линии канала практически совпадут на этих графиках.
Опережающий - на длинном аптренде мувинг будет выше цены, на даунтренде - ниже, но при смене тренда перескакивает за цену. Ничего не перерисовывает, только шевелится на последнем баре, как и любой другой мувинг, если расчёт по цене Close. Если считать по Open, то значения не меняет. И это не Грааль, производительность сравнима с другими мувингами.
Entr и Exit - уровни входа и выхода в единицах среднего отклонения цены от мувинга. Значения ставятся как будто торгуем только лонг: Entr(-2.0) - покупаем лимиткой на уровне 2 средних отклонения ниже мувинга, Exit(0.5) - тейк профит на уровне 0.5 среднего отклонения выше мувинга. Для шортов условия автоматом будут зеркальные.
На графике рисовать 4 линии
B - Buy
S - Sell
ExB - выход из лонга
ExS - выход из шорта
[1] - значение на предыдущем баре, в Метаке это похоже [i-1]. Наверное надо делать через буфер, там достаточно хранить только предпоследнее значение.
Название Lag наверное лучше поменять на ModeEMA - так понятнее будет.

Изменено 19 ноября, 2016 пользователем TakeProfit_1

#2130

Ребята только не ругайтесь матом прилагаю тесты. 100% прибыльных сделок

eurgbp.gif
eurgbp.htm41 скач.
usdcad.gif
usdcad.htm21 скач.
usdjpy.gif
usdjpy.htm28 скач.
Desktop.rar54 скач.

Изменено 19 ноября, 2016 пользователем Роман26rus

#2131


Ребята только не ругайтесь матом прилагаю тесты. 100% прибыльных сделок


Пересиживатель сделал? А если цена не вернётся - прощай депозит? :((
#2132



Ребята только не ругайтесь матом прилагаю тесты. 100% прибыльных сделок


Пересиживатель сделал? А если цена не вернётся - прощай депозит? :((

Поэтому я и попросил не ругаться сильно)Может кому и понравится
#2133

Насчёт времени торговли: я бы не делал две смежные сессии и не задавал конкретное время окончания торгов. Надо сделать одну сессию, указать её начало, а второй параметр - продолжительность сессии. Задать либо в часах (напр. продолжительность сессии 3 часа), либо в барах (3 часа = 12 баров на М15). Это позволит избавиться от проблем перехода через полночь, при оптимизации сократит число прогонов и избавит от ошибок, когда конец сессии оказывается раньше начала. На фильтр ролловера это никак не повлияет - он будет в указанное время делать то, что ему задано. Также быстро, удобно и наглядно будет сделать один прогон через все сутки скользящим окном, например получасовым, для определения лучшего времени для торговли.

#2134


Насчёт времени торговли: я бы не делал две смежные сессии и не задавал конкретное время окончания торгов. Надо сделать одну сессию, указать её начало, а второй параметр - продолжительность сессии. Задать либо в часах (напр. продолжительность сессии 3 часа), либо в барах (3 часа = 12 баров на М15). Это позволит избавиться от проблем перехода через полночь, при оптимизации сократит число прогонов и избавит от ошибок, когда конец сессии оказывается раньше начала. На фильтр ролловера это никак не повлияет - он будет в указанное время делать то, что ему задано. Также быстро, удобно и наглядно будет сделать один прогон через все сутки скользящим окном, например получасовым, для определения лучшего времени для торговли.



Это поставит в тупик тех, кто например хочет исключить из торговли первые полчаса после полуночи, а такие сэты уже здесь выкладывали, в частности по "сливающей" йене.
#2135

В 12х версиях всё это уже есть, там задаётся диапазон торговли с вечера до утра. Релловер выставляется, и как запрещает открытие, так и закрытие сделок по усмотрению.

#2136



Это версия 12.34, про более поздние не знаю. Думаю, что machine в курсе, я просто не мог не поделиться такой красотой. ))

Нужно на последней смотреть. Вроде, должно работать.
Интересен сам факт появления таких линий - то есть, история приходит с запозданием, и все пришедшие данные вызывают обработку нового тика (возвращаемое время обработки которого равно не серверному времени прихода того тика, а текущему (времени последнего тика))?

сложная мысль, ничего не понял ))

Мне видится так:
Части истории нет - утром терминал выключил и включил вечером уже во время новой сессии. Индикаторы начали считаться при поступлении нескольких текущих тиков (история еще не успела подгрузиться) Поскольку терминал был включен уже во время сессии, то утренние данные были засчитаны как данные уже этой сессии. Поэтому эти две прямые тянутся именно оттуда - с момента выключения.
Потом подгружается история и при новом текущем тике индикаторы пересчитываются уже с учетом подгруженной истории, потому и получается лесенка до нормального правильного рисунка.
Нет?


Добавлено: 19-11-2016 13:01:21


Спойлер

Насчёт времени торговли: я бы не делал две смежные сессии и не задавал конкретное время окончания торгов. Надо сделать одну сессию, указать её начало, а второй параметр - продолжительность сессии. Задать либо в часах (напр. продолжительность сессии 3 часа), либо в барах (3 часа = 12 баров на М15). Это позволит избавиться от проблем перехода через полночь, при оптимизации сократит число прогонов и избавит от ошибок, когда конец сессии оказывается раньше начала. На фильтр ролловера это никак не повлияет - он будет в указанное время делать то, что ему задано. Также быстро, удобно и наглядно будет сделать один прогон через все сутки скользящим окном, например получасовым, для определения лучшего времени для торговли.



Можно в 2 шага оптимизировать время начала сессии и время конца сессии. При оптимизации начала задать время окончания 24:00, а на втором шаге использовать результаты первого.
На вскидку, оптимизировать начало и продолжительность (как предлагаете вы) будет дольше.

А вот пройтись скользящим получасовым/часовым окном - это выглядит круто, да.

Изменено 19 ноября, 2016 пользователем Semenov

#2137

Насчёт контроля спреда и торговли в ролловер:
Что происходит в ролловер? В ролловер спред раздвигается до неприличных значений: >:dКак это происходит? Как правило, в общем случае биды уходят вниз, а аски уходят вверх, при этом середина спреда (аск + бид)/2 остаётся примерно на том же месте.
Что происходит с нашими индикаторами? Поскольку все они рассчитываются по PRICE_CLOSE, а она, в свою очередь, берётся по бидам, то и наши индикаторы тоже будут стремиться вниз, как будто начался даунтренд. Если на вход разрешён CCI, то он в этом случае будет пытаться давать сигналы на покупку, от которой нас может предохранить только контроль спреда. Но если значение Max_Spread достаточно большое, то вероятность войти по высокой цене аск в потенциально убыточную сделку на фактически неподвижном рынке довольно велика. Канал тоже стремится вниз, channel_lower, по которому мы должны купить с аска, отдаляется от аска, поэтому вероятность покупки по хорошей цене внизу невелика. Однако поскольку channel_upper тоже опустился, то при сужении спреда, соответственно росте бидов, вероятность войти в продажу гораздо выше, чем вероятность покупки, но цена продажи будет недалека от середины спреда и потенциал заработка невысок, перекос канала вниз может навредить. Контроль спреда в случае торговли по каналу нам практически мало помогает, например аск может быть в моменте на 5 фигур выше, а мы спокойно продадим по биду, если он достиг уровня channel_upper, и будем ждать аск на уровне закрытия шорта, бид в этот момент нас не волнует. Таким образом в ролловер имеем перекос индикаторов вниз, повышенную вероятность покупок для CCI и продаж для канала, большое значение контроля спреда при использовании сигналов от подвальных индикаторов и стоповых ордеров, но малое значение контроля спреда при использовании уровней на графике (каналы) с контролем асков при покупках и бидов при продажах.
Что делать? Надо постараться исключить перекос индикаторов вниз путём использования в качестве их расчётной цены (аск + бид)*0.5. На период ролловера ограничить или запретить торговлю с использованием подвальных индикаторов и стоповых ордеров, возможно следует расширить стоп-лосс на это время. Напротив, при торговле по каналам на графике с контролем бидов и асков - особых причин для ограничения торговли в ролловер и даже использования контроля спреда я не вижу.
Кстати, CCI рассчитывается от простой МА и использует девиацию, если не ошибаюсь. Боллинджер использует те же инструменты, различие в том, что CCI испольует PRICE_TYPICAL вместо PRICE_CLOSE у Боллинджера. Так что по сути это те же яйца, только в профиль. Можно попробовать заменить CCI ещё одним Боллинджером с похожими параметрами, ну и подобрать под него ширину канала. Тогда получится контролировать биды и аски и не бояться ролловера! <:-p>

#2138

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

#2139


биды уходят вниз



Дальше читать не стал, учите матчасть и не несите бред.
#2140



биды уходят вниз



Дальше читать не стал, учите матчасть и не несите бред.

Каждый мечтает о чем хочет...
Люди даже хотят заработать на спреде, когда он расширяется, пытаясь выставить ордер внутри спреда...
#2141



биды уходят вниз



Дальше читать не стал, учите матчасть и не несите бред.

Прошу пояснить, в чём я не прав, хотя бы кратко?
#2142
TakeProfit_1, прошу прощения, воспользовался своим советом, перечитал матчасть, был не прав.

Слишком привык к тестеру где bid не меняется от величины спреда.

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

Изменено 20 ноября, 2016 пользователем master_255

#2143


TakeProfit_1, прошу прощения, воспользовался своим советом, перечитал матчасть, был не прав.

Слишком привык к тестеру где bid не меняется от величины спреда.

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


Я там конечно ситуацию малость гиперболизироал, в реале не всё так страшно, но по сути тенденция такая есть - при широком спреде желательно брать (аск + бид)*0.5. Пример с цифрами: широкий спред стоит на месте, цены 120 - 130. Наш канал в 3 раза шире спреда, 30 пунктов. Если строим канал от бидов, то границы канала будут 120-15 = 105 низ и 120+15 = 135 верх. Чтобы купить, цене надо пройти 130 - 105 = 25 пунктов для покупки и 135 - 120 = 15 пунктов для продажи. Вероятность продажи здесь намного выше.
#2144



TakeProfit_1, прошу прощения, воспользовался своим советом, перечитал матчасть, был не прав.

Слишком привык к тестеру где bid не меняется от величины спреда.

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


Я там конечно ситуацию малость гиперболизироал, в реале не всё так страшно, но по сути тенденция такая есть - при широком спреде желательно брать (аск + бид)*0.5. Пример с цифрами: широкий спред стоит на месте, цены 120 - 130. Наш канал в 3 раза шире спреда, 30 пунктов. Если строим канал от бидов, то границы канала будут 120-15 = 105 низ и 120+15 = 135 верх. Чтобы купить, цене надо пройти 130 - 105 = 25 пунктов для покупки и 135 - 120 = 15 пунктов для продажи. Вероятность продажи здесь намного выше.

Вы забыли, что границы канала используются с предыдущей свечи, а не те, что будут построены сейчас. Соответственно, все дальнейшие рассуждения не верны. И вывод - тоже неверен.
#2145


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


Не понял мысль. Пример, если можно.

Изменено 20 ноября, 2016 пользователем TakeProfit_1

#2146



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


Не понял мысль. Пример, если можно.

Канал анализируется на предыдущей закрывшейся свече. Какой пример мне привести? Таков был изначальный алгоритм.
#2147


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


Какая принципиальная разница - с предыдущей или текущей свечи взят бид для расчёта мувинга? От мувинга на равном расстоянии делаются границы канала, следовательно вся конструкция смещена вниз на половину среднего спреда за период расчёта мувинга.
#2148



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


Какая принципиальная разница - с предыдущей или текущей свечи взят бид для расчёта мувинга? От мувинга на равном расстоянии делаются границы канала, следовательно вся конструкция смещена вниз на половину среднего спреда за период расчёта мувинга.

И поэтому и покупки и продажи открываются при касании границ канала ценой bid. Она ведь тоже смещена вниз на половину среднего спреда.
#2149




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


Какая принципиальная разница - с предыдущей или текущей свечи взят бид для расчёта мувинга? От мувинга на равном расстоянии делаются границы канала, следовательно вся конструкция смещена вниз на половину среднего спреда за период расчёта мувинга.

И поэтому и покупки и продажи открываются при касании границ канала ценой bid. Она ведь тоже смещена вниз на половину среднего спреда.

Во время ролловера спред раздвинулся, бид смещён вниз намного больше чем на половину среднего спреда, большая часть которого рассчитана ещё до ролловера, расстояние от бида до нижнего канала стало намного меньше, чем до верхнего.
#2150
Цитата

расстояние от бида до нижнего канала стало намного меньше, чем до верхнего.


Тогда вероятность покупки больше?
#2151

Тебе задание: цена стоит на месте, до ролловера спред 99-101, в ролловер 80-120. Посчитай, где будут границы канала через 5 баров (период мувинга). Ширина канала пусть будет 100. Не забывай, что покупаем с аска, продаём по биду. Сколько пунктов должны пройти аск и бид, чтобы открыть сделки?

Изменено 20 ноября, 2016 пользователем TakeProfit_1

Для публикации сообщений создайте учётную запись или авторизуйтесь

Перейти к списку тем
Форум · 2.0.20260627.0025