TakeProfit_1 можно расписать значение каждого параметра? Фиг пойми, что такое Nx, Len и т.п., если не рыться в коде. И возможно как то можно уменьшить их количество, а то при оптимизации 5 параметров будет мульон проходок.
[open source] [Советник] "Generic A-TLP"📌
От Sergey5, 23 апреля, 2016 в Лаборатория ProfitFX
TakeProfit_1 можно расписать значение каждого параметра? Фиг пойми, что такое Nx, Len и т.п., если не рыться в коде. И возможно как то можно уменьшить их количество, а то при оптимизации 5 параметров будет мульон проходок.
Выложите лог, даже если в этот момент ничего нет, возможно события до этого о чем то скажут.
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
ЦитатаFERRARI2009, я думал над этой ситуацией, единственное что пришло в голову таже мысль что и yur4ello, советник в этот момент был занят чем-то другим - например получением времени открытия дня, а брокер упорно ему говорил "данные в процессе обновления".
Выложите лог, даже если в этот момент ничего нет, возможно события до этого о чем то скажут.
Я уже перезагрузил впс на всякий случай, может причина в впске потом подумал - там где пропуски сделок были терема на одной впс стояли а там где сделки открывались были на другой, может какой-то косяк в это время с впс случился. а там где открылись сделки в логах все нормально - на Forexx.ee посчитал пропуск одной сделки только увидев, что на Робо эта сделка была и посмотрев на большое увеличение скриншота увидел что был микропробой, потому можно посчитать что на Forexx.ee также полностью нормально отработали . А так по пропущенным спорный пока момент, но очевидно все-таки что иногда пропуски имеют место быть все-таки и мысль yur4ello в принципе поддерживаю, особенно когда цена быстрой шпилькой пробивает канал и моментально откатывается, а советник в это время чем-то другим был занят и потому этого иногда не замечает, тогда такие ордера со 100% вероятностью можно открывать только лимитниками, а не рыночными входами.
Изменено 24 ноября, 2016 пользователем FERRARI2009
Только такой. Работает, или нет - не знаю.
И последнее )) Никак нельзя этот замечательный новостной фильтр в 12.38 заставить работать при тестировании? Видимо нужно закачать историю новостей если она где-то доступна и дать понять боту как учитывать старые новости при тестировании. Это реально?
Новости берёт с dailyfx, файлы вида Calendar-11-20-2016.csv . Если положить сии файлы в папку, может, будет из файлов загружать. Он, вроде, должен их сам сохранять, но, т.к., работает, или нет - не знаю, выкладывается, как есть.
Что касается переноса индикаторов в код советника так это актуально только,если индикатор рассчитывается на основе стандартных(самые быстрые 5мс),тогда да переносим и вызываем стандартные индикаторы и рассчитываем нужный нам
На втором месте по скорости вызов iCustom (12-15 мс) причём нет разницы для какого количества баров ведем пересчёт для 10 000 или для 20
На третьем месте Перенос кода отвечающего за расчёт значений ,(30-50 мс),только в этом случае есть небольшая разница для 10 000 или для 20 баров ,добавляет порядка 3-5мс,и так же есть разница в некоторых индикаторах в значениях (если используются данные для рассчёта из истории ,тма ,озимандис и тд)
На четвёртом месте подключение индикатора в качестве ресурса (100-200 мс),медленно но удобно что не надо таскать индикаторы из папки в папку
Всё выше изложенное для мкл4 ,в мкл5 возможно четвёртый вариант покажет другое время если как по мануалу через хандл(в мкл4 не работает),время указано для простых индикаторов на вроде МА
Это откуда цифры? Чем мерялись, на каком железе, время для сколки вызовов? У меня весь код советника, за один вызов, всегда меньше миллисекунды пролетает, если нет торговых операций и повторных вызовов с намеренной задержкой. По крайней мере GetTickCount() не успевает инкрементироваться.
по поводу оптимизации BB: вот, что можно получить от этого индюка беглой оптимизацией за 2015-2016
не уверен, что это оптимальные параметры с точки зрения реального рынка, но тест есть тест
тест лучшего результата в приложении
p.s. версия совы 11.94.1, тест с постоянным спредом
Изменено 24 ноября, 2016 пользователем rri9
мерились через GetMicrosecondCount(),для одного вызова ,создавал отдельные советники для теста скорости и мерил стандартные индикаторы и стандартные через iCustom (переименовывал ),озимадис ,рсй
железо i7-3635QM
У GetTickCount() низкое разрешение для таких замеров
в единицах измерения правильней мкс (микро а не мс )
Изменено 24 ноября, 2016 пользователем pegaskrs
Действительно микросекундный таймер уже видит разницу, и она не маленькая за один вызов:
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 года такая незначительная.
Как обычно, когда про это упоминалось, то никто не обращает внимания, а когда сами сталкиваются, то сразу становится нужно. А потом ещё говорится про необходимость координации разработчиков между собой.
Хочу предложить machine подкорректировать логику мультивалютного управления в версии 12.38. Эта фишка очень полезна и при одинаковом риске на каждую пару работает отлично но при разном риске на парах появляется проблемка.
Так же, как и с проверкой DailyRange после 0 часов. Упоминал раза 3, с картинками и без - ноль реакции. А потом - "а что это у нас DailyRange обнуляется после 0 часов?".
Если относительно мультивалютного управления, то сделать просто кол-во сделок в одном направлении, как уже предлагалось. Иначе будет - а почему открылся 0.05 вместо 0.15.
Если относительно мультивалютного управления, то сделать просто кол-во сделок в одном направлении, как уже предлагалось. Иначе будет - а почему открылся 0.05 вместо 0.15.
Просто привычный CurrencyBlock = true/false параметр, который регулирует открытие коррелирующих пар в одном направлении
интересное наблюдение для тех кто торгует гэп,может не стоило вводить дополнительный параметр нейтрализации возможного и очень редкого глюка в виде достаточно большой удаленности от текущей цены.. так реально на серьезных гэпах можем не взять хорошую прибыль... :( Т.е. зачем ставить сразу 2 заплатки, на одну небольшую дырку, которая к тому же, чтобы проявилась, нужно самому трейдеру немало постараться, как я понимаю, а - Проверка достаточности загруженной истории для расчета канала BB и так, вероятно все же исключит данную ошибку совсем, но при этом точно никак не помешает торговле на гэпах, которые, к слову в последнее время довольно частое явление и торгуемое многими...ЦитатаВот, обнаружил интересные последствия...
До меня только сейчас дошло - как до жирафа :d Это теперь получается, что любой гэп в понедельник больше 50пп. версия 11.94.3 советник отрабатывать не будет, а открытие состоится только тогда, когда цена вернется на расстояние 50пп. до ближайшей границы канала. Правильно я понимаю? То есть, при гэпе в 100пп, мы условно теряем до 50пп. прибыли?
По инструкции великого и ужасного автора индюка пооптимизировал 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.htm
usdchf_2015_TP1C.htm
usdchf_2015_TP1C-set3.htm
Optimization_USDCHF_TP1C.zip
Изменено 24 ноября, 2016 пользователем Semenov
ЦитатаДо меня только сейчас дошло - как до жирафа :d Это теперь получается, что любой гэп в понедельник больше 50пп. версия 11.94.3 советник отрабатывать не будет, а открытие состоится только тогда, когда цена вернется на расстояние 50пп. до ближайшей границы канала. Правильно я понимаю? То есть, при гэпе в 100пп, мы условно теряем до 50пп. прибыли?
Меня это тоже сильно огорчает, что на больших гэпах мы потенциально теряем большую прибыль, а на мелких, где прибыль заметно меньше будет, при тех же рисках его не отработки, будем входить :(
ЦитатаДо меня только сейчас дошло - как до жирафа :d Это теперь получается, что любой гэп в понедельник больше 50пп. версия 11.94.3 советник отрабатывать не будет, а открытие состоится только тогда, когда цена вернется на расстояние 50пп. до ближайшей границы канала. Правильно я понимаю? То есть, при гэпе в 100пп, мы условно теряем до 50пп. прибыли?
Меня это тоже сильно огорчает, что на больших гэпах мы потенциально теряем большую прибыль, а на мелких, где прибыль заметно меньше будет, при тех же рисках его не отработки, будем входить :(
У меня в это время больше половины общей прибыли за 3 месяца торгов. И ни одного дня в минус. В таком случае, вынужден откатить версию до проверенной 11.94.1 или 11.94.2.
А к master_255 есть огромная просьба решить эту проблему в последующих модификациях. может "Проверки достаточности загруженной истории для расчета канала ВВ" будет достаточно? Кто то здесь писал, что в понедельник на открытии перед выборами +63% за день поднял(жаль, это был не я :d), думаю, он тоже будет Вам благодарен :))
ЦитатаУ меня в это время больше половины общей прибыли за 3 месяца торгов. И ни одного дня в минус. В таком случае, вынужден откатить версию до проверенной 11.94.1 или 11.94.2.
А к master_255 есть огромная просьба решить эту проблему в последующих модификациях. может "Проверки достаточности загруженной истории для расчета канала ВВ" будет достаточно? Кто то здесь писал, что в понедельник на открытии перед выборами +63% за день поднял(жаль, это был не я :d), думаю, он тоже будет Вам благодарен :))
Полностью согласен с вами. На гэпах многие работают этой совой и многие хорошо зарабатывают как раз на гэпах. Также очень надеюсь что master_255 прислушается к нашим просьбам и исправит это как то в новых релизах :-ss
Добавил пока себе в тестувую версию выставление тейка на уровень где должно быть закрытие по каналу.
В тестере прибыльность сразу упала, видимо пятничные гепы стали закрываться раньше.
Посмотрю пару ночей как на реале будет со скольжением тейка, мне кажется у него тоже большие шансы скользить в любую сторону.
Кроме пятничных гепов, прибыльность могла упасть по ещё одной причине: если ставим тейк на уровень, то закрываемся всегда на этом уровне, а если ждём закрытия минуты по пересечению уровня, то практически всегда закрываем на несколько пипсов больше. Попробуй оптимизировать тейк с расширением уровня. Не удивлюсь, если результаты окажутся лучше, чем с закрытием минуты.
Версия 11.94.4
[list type=decimal]
Версия 11.94.4
[list type=decimal]Удалена проверка на большое расстояние от цены BB WorkTime теперь рассчитывается микросекундным таймером Добавлен параметр ExitChannelTP, ставит тейк на уровень где должен быть выход по касанию канала (естественно не ближе Exit_Profit_Pips к цене открытия)
Я только и успел обед в микроволновке разогреть, а Вы уже решили все мои проблемы =d> =d> =d>
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
Уменьшить количество параметров - запросто! Что выкидывать будем? Длину МАшки, её тип, чувствительность канала к волатильности, уровни входов или выходов из сделки?
ЦитатаВерсия 11.94.4
Удалена проверка на большое расстояние от цены BB
WorkTime теперь рассчитывается микросекундным таймером
Добавлен параметр ExitChannelTP, ставит тейк на уровень где должен быть выход по касанию канала (естественно не ближе Exit_Profit_Pips к цене открытия)
master_255 браво =d> Спасибо за оперативное и очень нужное изменение сова. Возник вопрос по ExitChannelTP - выставляется в ролловерное время, как я предложил, и смотрит на ролловер старт и ролловер энд, и по окончании ролловер энд тейк обнуляется, или работает по другому принципу?
Изменено 24 ноября, 2016 пользователем FERRARI2009
Работает постоянно, пока граница канала не будет ближе Exit_Profit_Pips.
По инструкции великого и ужасного автора индюка пооптимизировал 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
Надо понять, какой фильтр даёт улучшение производительности. Бесполезные можно будет выкинуть, облегчить код и сократить число оптимизируемых параметров. Это очень важно для сокращения времени оптимизации.
ЦитатаРаботает постоянно, пока граница канала не будет ближе Exit_Profit_Pips.
Тейк будет постоянно переставляться, вслед за изменением границы канала выхода из сделки?
Для публикации сообщений создайте учётную запись или авторизуйтесь
Перейти к списку тем
