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

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

#2652


Может, стоило наоборот версии назвать? В обычной версии оставить всё, а в какой-нибудь Simple - удалить те самые трейлинг-стоп, безубыток? Или всем без разницы?



Хорошая мысль. У меня другое предложение. Раз уж еще не доказаны эффективность или неэффективность определенных навесов, то основные версии 11 и 12 пока резать не стоит, пусть они развиваются как есть. А можно сделать ветку и туда просто складывать сборки. Просто выкладывать сборку безо всякой версии, с указанием какая базовая версия и что в ней допилено или выпилено.

А если выпилить БУ и трал, то это совсем не Simple еще. Simple версия, как я вижу - это нечто с максимальной инкапсуляцией. Чтобы пользователь только указывал самые общие параметры, типа TP, SL, GMT, торговых часов и тп. А остальное должно быть скрыто, либо выведено в пол, как "Advanced settings" с указанием того, что если ты не шаришь, что нужно менять, то не трогай тут ничего. Но это должны быть, конечно, уже самые оптимальные настройки, которых пока нет.
#2653

Пересохранил. Ещё сеты пересохранил. Больше денег они приносить не стали, а чтобы обновить старые названия параметров.

#2654

В документацию можно добавить
"12.38.4-simple" и выделить отсутствующие фичи. (Например, см вложение)
Думаю, что в таком виде и разработчикам будет удобнее и поток вопросов от пользователей будет меньше.

Generic_A-TLP_v.12.38.4_-_Описание_параметров_-_20161217-semenov.doc85 скач.

#2655

Ок, только цвет сделал "чуть более другой".

Ещё можно назначить кого-нибудь, кто будет проверять разные выкладываемые тут сеты, сделанные по неизвестным правилам и на неизвестных котировках, на нормальных котировках, и делать выводы о целесообразности их использования, и лучшие из них - закреплять в шапке. Как всегда, все согласятся, но дальше предложений - дело не пойдёт :)

Например, где-нибудь сделать общую папку с правами на запись, куда можно скидывать сеты для проверки, а потом, проверенные - помещать в папки, вроде "хорошие результаты", "плохие", или "себе бы не поставил" :))

Generic_A-TLP_v.12.38.4_-_Описание_параметров_-_20161217.doc106 скач.

Изменено 17 декабря, 2016 пользователем machine

#2656

Sorry, cannot write or read russian.

Version 12.38 stopped working (array out of range) on my account due to open positions on XAUUSD.
Gold and silver are noi on the internal list. If having other EA on account you will have a problem like me as soon as there are open positions
on those XAU*** XAG***

I changed the lines to :

"#define MAX_CURRENCY 22"

"//string Currencies = "AUD, EUR, USD, CHF, JPY, NZD, GBP, CAD, SGD, NOK, SEK, DKK, ZAR, MXN, HKD, HUF, CZK, PLN, RUR, TRY, XAU, XAG";"

#2657

Я сам не программист, но посмотрев код советника видно, что внешние функции (настройки) советника имеют приставку extern, если эту приставку стереть, то ее не будет видно в настройках советника, при этом она будет работать как и раньше. Если кому то мешают лишние функции советника - можете так и сделать и не тревожить понапрасну программистов :)

#2658

Просто похоже само не откомпилировалось,
потому что в исходниках ошибка
(по крайней мере у меня так, лишние плюсы в строках ~ 2030 и 2034)
удалил плюсы - заработало.
Но теперь переживаю единственная ли опечатка закралась в файл..

#2659

В MetaEditor'е от 950 - работает.
Закинул без плюсов.

#2660

12.38+ открепил от нулевого поста.
Если за неделю багов не выявится, прикреплю.
Минимум неделя тестов - обычная практика.

#2661

Версия 12.38.4
- Добавлен параметр MaxAmountCurrencyPair как фильтр по максимальному количеству сделок по заданной паре


В коде
Спойлер


if (!allow_by_max_amount) {
if (LogMode string q = Symbol() + "| Максимальное количество сделок в одном направлении ("+DoubleToString(MaxLot,0)+") по " + Str + " будет превышено." + " Ордер " + _OrderType + " не был открыт.";
Print(q);
DrawWarn("filter MaxAmountCurrency",WarnEnterColor);
lastbarwrite = Time[0];
}
return(false);
}


По моему вместо "Максимальное количество сделок в одном направлении" должно быть что-то вроде "Максимальный объем в одном направлении".

И ещё у нас int MaxAmountCurrency , то бишь поставить можно только целое число, а хотелось бы до сотых, на малых депо.
#2662

И ещё у нас int MaxAmountCurrency , то бишь поставить можно только целое число, а хотелось бы до сотых, на малых депо.



Все там правильно указано, потому что это именно количество сделок, а не лотность. Не надо туда лепить объемы, потому что при автолотах это дополнительная заморочка. Проще указать, что хочешь максимум 2 ордера в одном направлении, чем вычислять лот - риски могут быть разные у всех пар, лоты разные. Зачем лотность?
#2663


Все там правильно указано, потому что это именно количество сделок, а не лотность. Не надо туда лепить объемы


Про количество сделок идёт в следующем куске кода:
Спойлер


if (_RealTrade && MaxAmountCurrencyPair>0) { //фильтр по максимально разрешенному обьему
if (CountOrder2(OP_TYPE) >= MaxAmountCurrencyPair) {
if (LogMode string q = Symbol() + "| Максимальное количество сделок в одном направлении ("+IntegerToString(MaxAmountCurrencyPair)+") по " + _Symbol + " будет превышено." + " Ордер " + _OrderType + " не был открыт.";
Print(q);
DrawWarn("filter MaxAmountCurrencyPair",WarnEnterColor);
lastbarwrite = Time[0];
}
return(false);
}
}


MaxAmountCurrency это контроль объема, а MaxAmountCurrencyPair это контроль по кол-ву сделок !

Вот весь кусок:
Спойлер


if (_RealTrade && MaxAmountCurrency>0) { //фильтр по максимально разрешенному обьему
string Str,Str1,Str2;
double MaxLot;
MaxLot=MaxAmountCurrency;
CheckArbitrage();
Str1 = StringSubstr(Symbol(), 0, 3);
Str2 = StringSubstr(Symbol(), 3, 3);
bool allow_by_max_amount=true;
if (OP_TYPE==OP_BUY) {
if (Volumes(Str1) >= MaxLot) { Str=Str1; allow_by_max_amount=false; }
if (Volumes(Str2) }
if (OP_TYPE==OP_SELL) {
if (Volumes(Str1) if (Volumes(Str2) >= MaxLot) { Str=Str2; allow_by_max_amount=false; }
}
if (!allow_by_max_amount) {
if (LogMode string q = Symbol() + "| Максимальное количество сделок в одном направлении ("+DoubleToString(MaxLot,0)+") по " + Str + " будет превышено." + " Ордер " + _OrderType + " не был открыт.";
Print(q);
DrawWarn("filter MaxAmountCurrency",WarnEnterColor);
lastbarwrite = Time[0];
}
return(false);
}
}
if (_RealTrade && MaxAmountCurrencyPair>0) { //фильтр по максимально разрешенному обьему
if (CountOrder2(OP_TYPE) >= MaxAmountCurrencyPair) {
if (LogMode string q = Symbol() + "| Максимальное количество сделок в одном направлении ("+IntegerToString(MaxAmountCurrencyPair)+") по " + _Symbol + " будет превышено." + " Ордер " + _OrderType + " не был открыт.";
Print(q);
DrawWarn("filter MaxAmountCurrencyPair",WarnEnterColor);
lastbarwrite = Time[0];
}
return(false);
}
}

#2664

Про количество сделок идёт в следующем куске кода


А так там два варианта? Тогда хорошо. Пользуюсь предыдущей 12.8.3 и там только по количеству сделок, что идеально на мой взгляд
#2665

Вообще один фильтр должен ограничивать макс. количество (не объем) сделок по ВАЛЮТЕ (EUR, GBP, USD и т.д.), второй фильтр - по валютным парам (USDJPY, USDCAD и т.д.).


Добавлено: 18-12-2016 09:39:27

Кстати, по поводу нескольких сетов по одной паре. Я пробовал так торговать, но фильтр по макс. количеству сделок не срабатывает, когда сигнал на вход появляется одновременно. Такое бывает на "прострелах", когда канал пробивается неожиданным импульсом. Появляются условия на вход по всем трем сетам, они одновременно проверяют открытые сделки, видят что их нет и одновременно отправляют запрос на открытие. В итоге имею три входа в одном направлении по одной валютной паре.
Так же бывает и без прострелов, просто на открытии торговли. К примеру, в 22:00 начинается торговля и уже в это время есть сигнал на вход.
В общем, что мы имеем. У нас ограничивается количество сделок в спокойное время, когда цена лениво подползает к границе канала, но не ограничивается на резких движениях, которые и сами-то по себе опасны, да еще и утроенным объемом входим.
Это менее опасно на разных валютных парах (usdcad + gbpusd, например), т.к. там одновременный вход реже, чем по одной валютной паре.
Сейчас думаю, как это можно победить.

Добавлено: 18-12-2016 09:58:51

В общем, нам нужно избавиться от лага между отправлением запроса на открытие сделки и ее появлением в терминале. Это иногда неск. секунд может быть. Мысль есть только одна - сделать это через глобальные переменные клиентского терминала. При появлении сигнала на открытие создается запись об открываемой сделке. Проверяется оттуда же.

Изменено 18 декабря, 2016 пользователем Zxx

#2666

Я вот думаю, когда в понедельник лучше запускать бот - с 00:00, или все-таки спустя 5-15 минут после открытия рынка? Как он справляется с гэпами на открытии? Кто их успешно ловит, поделитесь инфой.

#2667


С аналогичной просьбой обращусь касательно ввода параметра Recovery Mode, отвечающего за увеличение лотности ордера по паре, получившей убыток в предыдущей сделке.
Если будет интересно - напишу более подробно принцип и нюансы работы, хотя, полагаю, он и так понятен.
Версия 11.87.

Уважаемые программисты,

Если это очень накладно, или вы не хотите этим заниматься вхолостую, то скиньте в личку цену. Версию бота никак не надо нумеровать, дабы никого не путать.

Спасибо



Уважаемый master_255! Поддерживаю СергейСергей1975, считаю Recovery Mode полезной фичей, не могли бы Вы, по возможности, конечно, добавить в версию 11.94.7. Спасибо
#2668


MaxAmountCurrency это контроль объема, а MaxAmountCurrencyPair это контроль по кол-ву сделок !

MaxAmountCurrency - это контроль по количеству сделок по валюте, а MaxAmountCurrencyPair - по паре.

Комментарий старый остался.
#2669


Я вот думаю, когда в понедельник лучше запускать бот - с 00:00, или все-таки спустя 5-15 минут после открытия рынка? Как он справляется с гэпами на открытии? Кто их успешно ловит, поделитесь инфой.



Я для себя решил, что лучше после 00:10 торговать - на первых тиках фолантильность сумасшедшая и расширения спредов. Чуток рынок должен успокоится для начала...
#2670

Как он справляется с гэпами на открытии? Кто их успешно ловит, поделитесь инфой.


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

То же самое относится и к закрытию сделок, висящих с пятницы, если по ним гэп в нашу сторону - предпочитаю всегда закрывать руками сразу, на дистанции это более выгодное решение, чем ждать, пока бот "решит", что настала пора закрывать. Неоднократно наблюдал уменьшение/потерю прибыли в подобных случаях.

ИМХО, конечно.
#2671

Есть идея фильтра: открытие сделок разрешено вне зависимости от МДР, что часто заканчивается плачевно. Если брать уровни фибо и разрешать продажи при нисходящем тренде, например, только от уровня 38.2 и не ниже?

#2672


Как он справляется с гэпами на открытии? Кто их успешно ловит, поделитесь инфой.


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

То же самое относится и к закрытию сделок, висящих с пятницы, если по ним гэп в нашу сторону - предпочитаю всегда закрывать руками сразу, на дистанции это более выгодное решение, чем ждать, пока бот "решит", что настала пора закрывать. Неоднократно наблюдал уменьшение/потерю прибыли в подобных случаях.

ИМХО, конечно.

офтопим конечно в теме разработки то...
ПО висякам с пятницы и если гепует в нашу сторону - не руками крыть, а в редактирвоание сделки и минимально допустимый тейк выставить, 0.5 пункта к примеру. ЗАкрывать руками сразу на открытии - велик шанс серьезного проскальзывания, вплоть до минусового результата. А полпунктовый тейк цепанет ,и исполнится не хуже текущей. Особенно актуально для альпов (ецн1), у которых околоролловерные спреды - фикция, и сделка на мелком гэпе в +10+15 п. запросто будет закрыта в -10-15. И не предьявишь им потом ничего - стандартная отписка "стакан, ецн". А тейки скорльзить в минуса пока не борзеют, т.к. там претензию уже обосновать можно, лимитки же.
Да и если ловить гэпы с пятницы на открытие - в пятницу выставить минимальный ТП, чтоб в случае гепа в нужную ссторону - захлопнулось по первой доступной цене.

Изменено 19 декабря, 2016 пользователем andy.lugansk

#2673

Поторговал советник 11.94.7 сегодня в околоролловерное время, проскальзывания при открытии ордеров, как обычно, были ужасными, но сегодня творилось просто форменное безобразие @-) x_x

1. Фхопен, GBPUSD

Спойлер



2016.12.20 01:01:09.893 Generic A-TLP 11.94.7 GBPUSD,M15: 0:1 | OpenTrade: SELL price / cmd / slip / delay = 1.23943 / 1.24136 / 19.3 point / 531 ms, channel price / bid = 1.24052 / 1.24136, WorkTime = 0.06 ms


Проскальзывание составило более 19 (!!!) пунктов x_x

2. Фхопен, GBPAUD
Спойлер


Также видим очень жесткое проскальзывание против трейдеров, по моим замерам более 17 пунктов (советник в данном случае определил проскальзывание не корректно)

3. Тикмилл, GBPAUD
Спойлер


2016.12.20 01:01:09.939 Generic A-TLP 11.94.7 GBPAUD,M15: 0:1 | OpenTrade: SELL price / cmd / slip / delay = 1.71123 / 1.71268 / 14.5 point / 469 ms, channel price / bid = 1.71199 / 1.71268, WorkTime = 0.06 ms


Очень не слабое скольжение в 14,5 пунктов у Тика...

4. Велтрейд, пара Фунтчих
Спойлер



2016.12.20 01:01:11.055 Generic A-TLP 11.94.7 GBPCHF,M15: 0:1 | OpenTrade: SELL price / cmd / slip / delay = 1.27308 / 1.27509 / 20.1 point / 562 ms, channel price / bid = 1.27488 / 1.27509, WorkTime = 0.07 ms


Ордер проскользил при открытии аж на 20п (!!!), в итоге закрылся в минусе :(

5. Велтрейд, GBPAUD
Спойлер



2016.12.20 01:01:10.992 Generic A-TLP 11.94.7 GBPAUD,M15: 0:1 | OpenTrade: SELL price / cmd / slip / delay = 1.70996 / 1.71232 / 23.6 point / 563 ms, channel price / bid = 1.71163 / 1.71232, WorkTime = 0.05 ms


Имеем скольжение в 23,6 п...

6. Пепперстоун, GBPUSD
Спойлер



2016.12.20 01:01:09.752 Generic A-TLP 11.94.7 GBPUSD,M15: 0:1 | OpenTrade: SELL price / cmd / slip / delay = 1.23961 / 1.24115 / 15.4 point / 390 ms, channel price / bid = 1.24076 / 1.24115, WorkTime = 0.07 ms


Перцы проскользили с открытием ордера на 15.4 п

7. Пепперстоун, GBPAUD
Спойлер



2016.12.20 01:01:09.705 Generic A-TLP 11.94.7 GBPAUD,M15: 0:1 | OpenTrade: SELL price / cmd / slip / delay = 1.71073 / 1.71217 / 14.4 point / 282 ms, channel price / bid = 1.71188 / 1.71217, WorkTime = 0.08 ms


Данную сделку исполнили на 14,4 п хуже первоначальной цены....

Отсюда напрашивается единственно возможное, на мой взгляд, решение данной проблемы - Входить в Sell сделки необходимо лимитными ордерами (для бай же ордеров нужно всегда учитывать спред, потому лимитники тут не вариант, в селл же мы открываемся, если спред не более 12 стопа, что в абсолютном большинстве случаев не мешает входить по рынку, особенно касается пар с большим стопом - GBPCAD, GBPAUD, GBPCHF, USDCHF, либо пар у которых спред даже в ролловер не зашкаливает за 15-20 п - GBPUSD, EURAUD...)

Огромная просьба к master_255 ввести данную возможность. Уверен, что многим данная опция будет совсем не лишняя и способная в условиях реальных торгов сократить наши "подарки" брокерам...


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

#2674

не просто же так в роловер не торгуют
лимитки едва ли помогут

#2675
Цитата

не просто же так в роловер не торгуют
лимитки едва ли помогут



С чего вы взяли что в ролловер не торгуют? В сетах по умолчанию из шапки между прочим торговля в ролловер разрешена (запрещено только закрывать сделки). А лимитники могут реально помочь у брокеров, в регламенте которых прописано что лимитные сделки исполняются либо по заявленной цене, либо по лучшей цене (но не по худшей) - а это большинство нормальных брокеров (кроме Тика, у него, насколько я знаю, могут и по худшей цене отложки исполняться, также как и тейки - но это исключение среди приличных брокеров, а не правило)
#2676

Кто хочет Recovery потестировать?
Если убыток в пунктах по предыдущему ордеру больше RecoveryLoss, то лот для следующего ордера будет умножен на коэффициент RecoveryMode. RecoveryLoss может быть отрицательным, т.е. -5 можно интерпретировать как "если предыдущая сделка была убыточна или прибыль меньше 5 пунктов". RecoveryMode может быть меньше единицы, т.е. после лося лот будет уменьшаться (при череде убытков меньше урон).
У меня довольно однозначное впечатление - не нужен. На двух лосях подряд как-то нехорошо получается, а если после убытка был небольшой профит, то еще и бесполезно.
Если кто-то чего-то внятного добьется - пишите.

Generic_A-TLP_v.12.38.4_Simple_Recovery_RUS.mq460 скач.

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

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

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