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

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

#2227
master_255 можешь вживить индикатор в советник, для увеличения быстродействия работы, да и для эстетического вида? А то получается, что при каждом запросе данных индюк пробегает заново все свечи графика, когда нам нужен только небольшой период для анализа.
TakeProfit_1 можно расписать значение каждого параметра? Фиг пойми, что такое Nx, Len и т.п., если не рыться в коде. И возможно как то можно уменьшить их количество, а то при оптимизации 5 параметров будет мульон проходок.
#2228
FERRARI2009, я думал над этой ситуацией, единственное что пришло в голову таже мысль что и yur4ello, советник в этот момент был занят чем-то другим - например получением времени открытия дня, а брокер упорно ему говорил "данные в процессе обновления".

Выложите лог, даже если в этот момент ничего нет, возможно события до этого о чем то скажут.




Rever27, никогда встраиванием не занимался, и прежде чем окунуться в этот нетривиальный процесс, произвел замеры:

  • BB (total time 0:00:25.678)

  • TP1C (total time 0:00:28.065)


Это еще с учетом что в версии TP1C индикатор вызываеться 4 раза и 230 сделок, а в BB 2 раза и сделок только 79
Думаю пересчет происходит только в перерисовывающихся индикаторах, а в нормальных результаты кэшируются.

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

#2229
Цитата

FERRARI2009, я думал над этой ситуацией, единственное что пришло в голову таже мысль что и yur4ello, советник в этот момент был занят чем-то другим - например получением времени открытия дня, а брокер упорно ему говорил "данные в процессе обновления".

Выложите лог, даже если в этот момент ничего нет, возможно события до этого о чем то скажут.


Я уже перезагрузил впс на всякий случай, может причина в впске потом подумал - там где пропуски сделок были терема на одной впс стояли а там где сделки открывались были на другой, может какой-то косяк в это время с впс случился. а там где открылись сделки в логах все нормально - на Forexx.ee посчитал пропуск одной сделки только увидев, что на Робо эта сделка была и посмотрев на большое увеличение скриншота увидел что был микропробой, потому можно посчитать что на Forexx.ee также полностью нормально отработали . А так по пропущенным спорный пока момент, но очевидно все-таки что иногда пропуски имеют место быть все-таки и мысль yur4ello в принципе поддерживаю, особенно когда цена быстрой шпилькой пробивает канал и моментально откатывается, а советник в это время чем-то другим был занят и потому этого иногда не замечает, тогда такие ордера со 100% вероятностью можно открывать только лимитниками, а не рыночными входами.

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

#2230


И последнее )) Никак нельзя этот замечательный новостной фильтр в 12.38 заставить работать при тестировании? Видимо нужно закачать историю новостей если она где-то доступна и дать понять боту как учитывать старые новости при тестировании. Это реально?

Только такой. Работает, или нет - не знаю.
Новости берёт с dailyfx, файлы вида Calendar-11-20-2016.csv . Если положить сии файлы в папку, может, будет из файлов загружать. Он, вроде, должен их сам сохранять, но, т.к., работает, или нет - не знаю, выкладывается, как есть.

Urdala_News.mq437 скач.

#2231

Что касается переноса индикаторов в код советника так это актуально только,если индикатор рассчитывается на основе стандартных(самые быстрые 5мс),тогда да переносим и вызываем стандартные индикаторы и рассчитываем нужный нам

На втором месте по скорости вызов iCustom (12-15 мс) причём нет разницы для какого количества баров ведем пересчёт для 10 000 или для 20

На третьем месте Перенос кода отвечающего за расчёт значений ,(30-50 мс),только в этом случае есть небольшая разница для 10 000 или для 20 баров ,добавляет порядка 3-5мс,и так же есть разница в некоторых индикаторах в значениях (если используются данные для рассчёта из истории ,тма ,озимандис и тд)


На четвёртом месте подключение индикатора в качестве ресурса (100-200 мс),медленно но удобно что не надо таскать индикаторы из папки в папку

Всё выше изложенное для мкл4 ,в мкл5 возможно четвёртый вариант покажет другое время если как по мануалу через хандл(в мкл4 не работает),время указано для простых индикаторов на вроде МА

#2232

Это откуда цифры? Чем мерялись, на каком железе, время для сколки вызовов? У меня весь код советника, за один вызов, всегда меньше миллисекунды пролетает, если нет торговых операций и повторных вызовов с намеренной задержкой. По крайней мере GetTickCount() не успевает инкрементироваться.

#2233

по поводу оптимизации BB: вот, что можно получить от этого индюка беглой оптимизацией за 2015-2016

Спойлер


прибыль - сделок - просадка - соотношение приб/просадка


не уверен, что это оптимальные параметры с точки зрения реального рынка, но тест есть тест
тест лучшего результата в приложении
p.s. версия совы 11.94.1, тест с постоянным спредом

gbpaud_bb_opt_best.gif
gbpaud_bb_opt_best.htm60 скач.

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

#2234

мерились через GetMicrosecondCount(),для одного вызова ,создавал отдельные советники для теста скорости и мерил стандартные индикаторы и стандартные через iCustom (переименовывал ),озимадис ,рсй
железо i7-3635QM
У GetTickCount() низкое разрешение для таких замеров
в единицах измерения правильней мкс (микро а не мс )

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

#2235

Действительно микросекундный таймер уже видит разницу, и она не маленькая за один вызов:


2016.11.24 15:01:57.524 Test EURUSD,M1: tp1c: 0.00 ms.
2016.11.24 15:01:57.524 Test EURUSD,M1: bb: 0.00 ms.
2016.11.24 15:01:57.524 Test EURUSD,M1: tp1c: 45.51 ms.
2016.11.24 15:01:57.479 Test EURUSD,M1: bb: 3.04 ms.
2016.11.24 15:00:57.446 Test EURUSD,M1: ---
2016.11.24 15:00:57.446 Test EURUSD,M1: tp1c: 0.00 ms.
2016.11.24 15:00:57.446 Test EURUSD,M1: bb: 0.00 ms.
2016.11.24 15:00:57.446 Test EURUSD,M1: tp1c: 45.80 ms.
2016.11.24 15:00:57.400 Test EURUSD,M1: bb: 3.20 ms.
2016.11.24 14:59:57.579 Test EURUSD,M1: ---
2016.11.24 14:59:57.579 Test EURUSD,M1: tp1c: 0.00 ms.
2016.11.24 14:59:57.579 Test EURUSD,M1: bb: 0.00 ms.
2016.11.24 14:59:57.579 Test EURUSD,M1: tp1c: 43.64 ms.
2016.11.24 14:59:57.536 Test EURUSD,M1: bb: 3.09 ms.


код советника для замеров


datetime timeprev;
ulong OnTickStart;
void OnTick(){
if (timeprev == Time[0]) return;
timeprev = Time[0];

OnTickStart=GetMicrosecondCount();
iBands(NULL,_Period,13,2,0,PRICE_CLOSE,MODE_UPPER,1);
Print("bb: ",DoubleToString((GetMicrosecondCount()-OnTickStart)/1000.0,2)," ms.");

OnTickStart=GetMicrosecondCount();
iCustom(NULL,_Period,"!TP1_Channel",30,0,10,-2,0.5,4,1);
Print("tp1c: ",DoubleToString((GetMicrosecondCount()-OnTickStart)/1000.0,2)," ms.");

OnTickStart=GetMicrosecondCount();
iBands(NULL,_Period,13,2,0,PRICE_CLOSE,MODE_LOWER,1);
Print("bb: ",DoubleToString((GetMicrosecondCount()-OnTickStart)/1000.0,2)," ms.");

OnTickStart=GetMicrosecondCount();
iCustom(NULL,_Period,"!TP1_Channel",30,0,10,-2,0.5,5,1);
Print("tp1c: ",DoubleToString((GetMicrosecondCount()-OnTickStart)/1000.0,2)," ms.");
Print("---");
}


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

Но на следующей свече уже пересчитывает все заново. Странно почему разница скорости при тесте за 3 года такая незначительная.
#2236


Хочу предложить machine подкорректировать логику мультивалютного управления в версии 12.38. Эта фишка очень полезна и при одинаковом риске на каждую пару работает отлично но при разном риске на парах появляется проблемка.

Как обычно, когда про это упоминалось, то никто не обращает внимания, а когда сами сталкиваются, то сразу становится нужно. А потом ещё говорится про необходимость координации разработчиков между собой.
Так же, как и с проверкой DailyRange после 0 часов. Упоминал раза 3, с картинками и без - ноль реакции. А потом - "а что это у нас DailyRange обнуляется после 0 часов?".

Если относительно мультивалютного управления, то сделать просто кол-во сделок в одном направлении, как уже предлагалось. Иначе будет - а почему открылся 0.05 вместо 0.15.
#2237


Если относительно мультивалютного управления, то сделать просто кол-во сделок в одном направлении, как уже предлагалось. Иначе будет - а почему открылся 0.05 вместо 0.15.



Просто привычный CurrencyBlock = true/false параметр, который регулирует открытие коррелирующих пар в одном направлении
#2238


Цитата

Вот, обнаружил интересные последствия...

интересное наблюдение для тех кто торгует гэп,может не стоило вводить дополнительный параметр нейтрализации возможного и очень редкого глюка в виде достаточно большой удаленности от текущей цены.. так реально на серьезных гэпах можем не взять хорошую прибыль... :( Т.е. зачем ставить сразу 2 заплатки, на одну небольшую дырку, которая к тому же, чтобы проявилась, нужно самому трейдеру немало постараться, как я понимаю, а - Проверка достаточности загруженной истории для расчета канала BB и так, вероятно все же исключит данную ошибку совсем, но при этом точно никак не помешает торговле на гэпах, которые, к слову в последнее время довольно частое явление и торгуемое многими...


До меня только сейчас дошло - как до жирафа :d Это теперь получается, что любой гэп в понедельник больше 50пп. версия 11.94.3 советник отрабатывать не будет, а открытие состоится только тогда, когда цена вернется на расстояние 50пп. до ближайшей границы канала. Правильно я понимаю? То есть, при гэпе в 100пп, мы условно теряем до 50пп. прибыли?
#2239

По инструкции великого и ужасного автора индюка пооптимизировал TP1C для стандартного сета USDCHF 2015-нв
начальные параметры (дефолтные):
Len=30 Lag=0.0 Nx=10.0 Enter=-2.0 Exit=0.5
конечные параметры:
Len=30 Lag=0.5 Nx=7.0 Enter=-1.0 Exit=1.0

Под спойлером - подробнее, в атаче - три TestResults: стандарт, дефолт TP1C и после оптимизации

Спойлер

----------------------------------------------
set1. оптимизировались:
Lag (-1 - 2) /0.5
Enter (-3 - 0) /0.5
Exit (0 - 2) /0.5
результат отфильтровал (сделок > 100 & PF > 1.6)
выбор: Lag=0.5 Enter=-1.0 Exit=1.0

set2. оптимизировались:
Len (10 - 100) /10
выбор: Len=30

set3. оптимизировались:
Nx (1 - 50) /1
выбор: Nx=7

set4. прогон по одному
Lag (0 - 1) /0.1 - no results
Enter (-2 - 0) /0.1 - no results

в процессе
Exit (0.5 - 1.5) /0.1
Len (20 - 40) /1
Nx (5 - 10) /1

Результаты оптимизации - в архиве. Кому интересно - покопайтесь самостоятельно.
-----------------------------------------



Красавчик, чо.
Хотелось бы такой и в 12 версию.

ЗЫ. Котировки dukas через TDS

usdchf_2015.gif
usdchf_2015.htm23 скач.
usdchf_2015_TP1C.gif
usdchf_2015_TP1C.htm20 скач.
usdchf_2015_TP1C-set3.gif
usdchf_2015_TP1C-set3.htm30 скач.
Optimization_USDCHF_TP1C.zip39 скач.

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

#2240
Цитата

До меня только сейчас дошло - как до жирафа :d Это теперь получается, что любой гэп в понедельник больше 50пп. версия 11.94.3 советник отрабатывать не будет, а открытие состоится только тогда, когда цена вернется на расстояние 50пп. до ближайшей границы канала. Правильно я понимаю? То есть, при гэпе в 100пп, мы условно теряем до 50пп. прибыли?


Меня это тоже сильно огорчает, что на больших гэпах мы потенциально теряем большую прибыль, а на мелких, где прибыль заметно меньше будет, при тех же рисках его не отработки, будем входить :(
#2241


Цитата

До меня только сейчас дошло - как до жирафа :d Это теперь получается, что любой гэп в понедельник больше 50пп. версия 11.94.3 советник отрабатывать не будет, а открытие состоится только тогда, когда цена вернется на расстояние 50пп. до ближайшей границы канала. Правильно я понимаю? То есть, при гэпе в 100пп, мы условно теряем до 50пп. прибыли?


Меня это тоже сильно огорчает, что на больших гэпах мы потенциально теряем большую прибыль, а на мелких, где прибыль заметно меньше будет, при тех же рисках его не отработки, будем входить :(


У меня в это время больше половины общей прибыли за 3 месяца торгов. И ни одного дня в минус. В таком случае, вынужден откатить версию до проверенной 11.94.1 или 11.94.2.
А к master_255 есть огромная просьба решить эту проблему в последующих модификациях. может "Проверки достаточности загруженной истории для расчета канала ВВ" будет достаточно? Кто то здесь писал, что в понедельник на открытии перед выборами +63% за день поднял(жаль, это был не я :d), думаю, он тоже будет Вам благодарен :))
#2242
Цитата

У меня в это время больше половины общей прибыли за 3 месяца торгов. И ни одного дня в минус. В таком случае, вынужден откатить версию до проверенной 11.94.1 или 11.94.2.
А к master_255 есть огромная просьба решить эту проблему в последующих модификациях. может "Проверки достаточности загруженной истории для расчета канала ВВ" будет достаточно? Кто то здесь писал, что в понедельник на открытии перед выборами +63% за день поднял(жаль, это был не я :d), думаю, он тоже будет Вам благодарен :))


Полностью согласен с вами. На гэпах многие работают этой совой и многие хорошо зарабатывают как раз на гэпах. Также очень надеюсь что master_255 прислушается к нашим просьбам и исправит это как то в новых релизах :-ss
#2243


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


Кроме пятничных гепов, прибыльность могла упасть по ещё одной причине: если ставим тейк на уровень, то закрываемся всегда на этом уровне, а если ждём закрытия минуты по пересечению уровня, то практически всегда закрываем на несколько пипсов больше. Попробуй оптимизировать тейк с расширением уровня. Не удивлюсь, если результаты окажутся лучше, чем с закрытием минуты.
#2244

Версия 11.94.4
[list type=decimal]

  • Удалена проверка на большое расстояние от цены BB

  • WorkTime теперь рассчитывается микросекундным таймером

  • Добавлен параметр ExitChannelTP, ставит тейк на уровень где должен быть выход по касанию канала (естественно не ближе Exit_Profit_Pips к цене открытия)




  • Generic_A-TLP_11.94.4.mq4172 скач.

    #2245


    Версия 11.94.4
    [list type=decimal]

  • Удалена проверка на большое расстояние от цены BB

  • WorkTime теперь рассчитывается микросекундным таймером

  • Добавлен параметр ExitChannelTP, ставит тейк на уровень где должен быть выход по касанию канала (естественно не ближе Exit_Profit_Pips к цене открытия)




  • Я только и успел обед в микроволновке разогреть, а Вы уже решили все мои проблемы =d> =d> =d>
    #2246


    TakeProfit_1 можно расписать значение каждого параметра? Фиг пойми, что такое Nx, Len и т.п., если не рыться в коде. И возможно как то можно уменьшить их количество, а то при оптимизации 5 параметров будет мульон проходок.


    Про параметры раньше было: /laboratoriya-profitfx/24/open-source-sovetnik-generic-a-tlp/13593/?do=findComment&comment=321616
    Про Lag здесь под спойлером: /laboratoriya-profitfx/24/open-source-sovetnik-generic-a-tlp/13593/?do=findComment&comment=321609
    Про оптимизацию: /laboratoriya-profitfx/24/open-source-sovetnik-generic-a-tlp/13593/?do=findComment&comment=322501
    Уменьшить количество параметров - запросто! Что выкидывать будем? Длину МАшки, её тип, чувствительность канала к волатильности, уровни входов или выходов из сделки?
    #2247
    machine, пожалуйста исправьте тот же косяк в 12 версии - не открытие сделок во многих случаях при касании канала (мб тоже нужен микросекундный таймер)..и добавьте, пож, канал от TP_1. Точнее выбор между ББ и новым каналом
    #2248
    Цитата

    Версия 11.94.4
    Удалена проверка на большое расстояние от цены BB
    WorkTime теперь рассчитывается микросекундным таймером
    Добавлен параметр ExitChannelTP, ставит тейк на уровень где должен быть выход по касанию канала (естественно не ближе Exit_Profit_Pips к цене открытия)


    master_255 браво =d> Спасибо за оперативное и очень нужное изменение сова. Возник вопрос по ExitChannelTP - выставляется в ролловерное время, как я предложил, и смотрит на ролловер старт и ролловер энд, и по окончании ролловер энд тейк обнуляется, или работает по другому принципу?

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

    #2249

    Работает постоянно, пока граница канала не будет ближе Exit_Profit_Pips.

    #2250


    По инструкции великого и ужасного автора индюка пооптимизировал TP1C для стандартного сета USDCHF 2015-нв
    начальные параметры (дефолтные):
    Len=30 Lag=0.0 Nx=10.0 Enter=-2.0 Exit=0.5
    конечные параметры:
    Len=30 Lag=0.5 Nx=7.0 Enter=-1.0 Exit=1.0

    Под спойлером - подробнее, в атаче - три TestResults: стандарт, дефолт TP1C и после оптимизации

    Спойлер

    ----------------------------------------------
    set1. оптимизировались:
    Lag (-1 - 2) /0.5
    Enter (-3 - 0) /0.5
    Exit (0 - 2) /0.5
    результат отфильтровал (сделок > 100 & PF > 1.6)
    выбор: Lag=0.5 Enter=-1.0 Exit=1.0

    set2. оптимизировались:
    Len (10 - 100) /10
    выбор: Len=30

    set3. оптимизировались:
    Nx (1 - 50) /1
    выбор: Nx=7

    set4. прогон по одному
    Lag (0 - 1) /0.1 - no results
    Enter (-2 - 0) /0.1 - no results

    в процессе
    Exit (0.5 - 1.5) /0.1
    Len (20 - 40) /1
    Nx (5 - 10) /1

    Результаты оптимизации - в архиве. Кому интересно - покопайтесь самостоятельно.
    -----------------------------------------



    Красавчик, чо.
    Хотелось бы такой и в 12 версию.

    ЗЫ. Котировки dukas через TDS

    Если Enter=-1.0 и Exit=1.0 это значит, что ведётся реверсивная торговля, при закрытии на Exit=1.0 сразу же откроется шорт и закроется на уровне -1, на котором у нас уже будет покупка. Это не хорошо и не плохо, просто вы должны это знать.
    Entr и Exit - уровни входа и выхода в единицах среднего отклонения цены от мувинга. Значения ставятся как будто торгуем только лонг: Entr(-2.0) - покупаем лимиткой на уровне 2 средних отклонения ниже мувинга, Exit(0.5) - тейк профит на уровне 0.5 среднего отклонения выше мувинга. Для шортов условия автоматом будут зеркальные - продажа на уровне 2, а выход на -0.5

    Вижу - у тебя TDS. Ты можешь протестировать эффективность фильтров по методике из этого поста на нескольких парах? /laboratoriya-profitfx/24/open-source-sovetnik-generic-a-tlp/13593/?do=findComment&comment=322562
    Надо понять, какой фильтр даёт улучшение производительности. Бесполезные можно будет выкинуть, облегчить код и сократить число оптимизируемых параметров. Это очень важно для сокращения времени оптимизации.
    #2251
    Цитата

    Работает постоянно, пока граница канала не будет ближе Exit_Profit_Pips.


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

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

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