[Советник] "Оптимист"

От skylover410, 18 ноября, 2013 в Лаборатория ProfitFX

Автор#426
Цитата

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



Ttomas это всё имеет (уже отправлял). Будет ещё - выложу. :)
Работа в автомате, можно сказать, уже отлажена (но всё же ещё понаблюдаю). Остаётся нерешённой проблема именно с ручным первым входом, и автор тоже пока не может найти причину. Из-за этого, по сути, и получаются обновления версий советника ( " ... а воз и ныне там"). :)

Изменено 5 января, 2014 пользователем skylover410

#427

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

Автор#428

Завтра закроется ордер очередной "неудачной" серии каскада - скопирую логи и прочее, что необходимо, и выложу.
Я понимаю, что найти ошибку чрезвычайно трудно, если знаешь что всё сделано верно (наверняка) и мог бы и не выкладывать логов. Но по-другому и вовсе не найти ошибки. Остаётся ... либо её искать, либо - оставить всё как есть и забросить. >:d

#429
skylover410, баги, особенно плавающие, ищут до тех пор, пока не найдут.
Чудес нет - есть не выявленные баги. Иногда на это уходят недели и даже месяцы. Но ищут и находят.
Это т.н. отладка - чему раньше программисты учились на фирмах сами и у старших товарищей.

Редко, но если баг не удается найти (а баг может быть и в МТ4), приходится полностью переписывать подозрительные фрагменты кода.

Я в 2009, помнится, разок использовал external переменные вместо глобальных.
Вот как сейчас - тогда так и не смог понять почему глобал переменная не работала корректно.
Но в последних билдах не проверял можно ли внутри бота (изнутри) менять значение external переменных так, чтобы при перезапуске бота и/или терминала использовалось последнее присвоенное (внутри бота) значение external переменных.

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

Изменено 5 января, 2014 пользователем Старик

#430


AnTiHacKeR,
спасибо, будем наблюдать. Какие лоты на такую сумму? Или поставил лот 0, активировав значение StepFromDepo в настройках?


счет с 1000 вообще никакие настройки не изменялись.. (т.е. лот 0.01) фиксированный если я правильно понял все настройки бота

счет с 15000 тоже без изменений кроме мультипликатора он 3 вместо двух (лот также 0.01)...
об этом конкретнее:
считаю что система будет намного прибыльнее при таком мультипликаторе при 7 убыточных сделках подряд общий убыток будет 1420 при восьми 4264.. т.к. вопрос какой каскад нужен системе так и остался открытым (или как минимум я не увидел внятного ответа).
Взял для большего получается, риск 1/3 от депо при каскаде из 8 сделок
да и при тестировании на демо завышенное депо как я думаю не будет мешать.. каждый сможет проанализировать мониторинг и понять что лучше для него. Специально для набора статистики и были созданы мониторинги полностью их открыл чтобы все могли смотреть что да как..



Добавлено: 05-01-2014 19:41:39

только сейчас пересчитал убытки по стратегии
номер сделки убыток со сделки общий убыток
1 1,3 1,3
2 2,6 3,9
3 5,2 9,1
4 10,4 19,5
5 20,8 40,3
6 41,6 81,9
7 83,2 165,1
8 166,4 331,5

это при мультипликаторе 2 на седьмом колене 165.1 на восьмом 331.5
и теперь вопрос: откуда автор взял 260$ при убыточном каскаде?

Изменено 5 января, 2014 пользователем AnTiHacKeR

#431

Есть у меня одно наблюдение, незадолго до НГ сделанное. У меня сейчас крутится Оптимист версии 3,9. Так вот, один раз, во время работы советника, я влез в его настройки для отключения автоматической работы. Хотел чтобы советник доработал каскад и остановился. Перед этим, я посмотрел глобальные переменые, счетчик показывал вторую итерацию(вторую ступень каскада). После изменения настроек и сохранения, я опять глянул в переменные. Счетчик сбросился на один. Может это наблюдение как-то поможет в борьбе с плавающим багом?

ЗЫ Если же в работу советника не вмешиваться, ну то есть абсолютно, то при автоматической работе никаких проблем не наблюдалось.

Автор#432
AnTiHacKeR,
Почитайте внимательно расчёты автора ТС.
Да, получается 165,1 - всё верно. Но чтобы открыть 7-е колено, когда предыдущие 6 уже слиты, не хватит депозита, если он изначально был меньше 260$ при плече 1:500. При 8-коленном каскаде депозит должен быть ещё больше.
#433
jarjarbinks, Вот именно этот баг я и ищу, Для уточнения, переменная заканчивающаяся на GCount была равна 2 и сбросилась до значения 1. И произошло это в момент изменения настроек.
#434

jarjarbinks, Вот именно этот баг я и ищу, Для уточнения, переменная заканчивающаяся на GCount была равна 2 и сбросилась до значения 1. И произошло это в момент изменения настроек.

ДА, после нажатия кнопки "Сохранить"

#435


AnTiHacKeR,
Почитайте внимательно расчёты автора ТС.
Да, получается 165,1 - всё верно. Но чтобы открыть 7-е колено, когда предыдущие 6 уже слиты, не хватит депозита, если он изначально был меньше 260$ при плече 1:500. При 8-коленном каскаде депозит должен быть ещё больше.


спасибо недоглядел..
значит изначальный мм у меня верный...
#436
jarjarbinks, И еще очень важный вопрос. В каком режиме работал советник. Ручной автоподхват или Автомат? и Если помнишь, был ли открыт в данный момент ордер.
#437

Работал полный автомат, на генераторе случайных чисел. Был открыт второй ордер каскада.

#438


У меня такое было один или два раза на варианте ручного рандома (первый вход не на автомате, а вручную). Но там это было связано только лишь с некорректной работой самого советника, который не хочет в таком режиме подхватывать ручной ордер (вернее подхватывает, но далее идут все остальные одера в ту же сторону, в которую был открыт ордер руками). Эта проблема в режиме ручного открытия первого ордера осталась в т.ч. и на последней версии 4.2. В пятницу был открыт бай. После его закрытия в минусе подобным образом был открыт пятый бай подряд (последний висит до сих пор). Я


если не получится отчеканить сову, как вариант открытия первого ордера - это включить "ручное подтверждение" советника. Дождаться открытия ордера в нужную сторону и затем отключить подтверждение.
#439

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

Автор#440

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

Modif.Kaskad.rar23 скач.

#441


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



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

skylover410, Забрал и просмотрел всю информацию, спасибо, все чинно мирно и по сути. НА анализ много времени не ушло :)

На основании предоставленной информации я пересмотрел 2 алгоритма защиты внутри советника относящиеся к ручному автоподхвату, и добавил дополнительный, более менее проверенный во многих работах. Фильтр по комментариям. Для открытия ордеров стоит использовать скрипты которые есть в архиве, все они уже настроены на версию советника 4.3. Прошу внимательно следить за работой советника как в режиме автомата так и в режиме Ручного автоподхвата. Для выявления бага мне необходимо больше информации.

Изменено 7 января, 2014 пользователем Ttomas

Автор#443
Ttomas,
спасибо за обновление! Переустановлю пока только советника в терминал с ручными входами (именно этот вариант даёт пока сбои). Наблюдения продолжу, о нестыковках доложу по форме! :d

Добавлено: 06-01-2014 19:36:00

Обнаружился баг в последней версии 4.3. При ручном открытии первого ордера прилагаемым скриптом открылся, как и положено, ордер лотом 0,01.
Но на следующем тике в ту же сторону открылся ещё один бай, но уже с лотом 0,02. @-)
Однажды, на ранней стадии написания бота, такое уже было. Так что просьба - пока не юзать эту версию. Ttomas уже в курсе - завтра посмотрит её. >:d

Изменено 6 января, 2014 пользователем skylover410

#444

Такс... Я исправил баг который сам и сделал вводя дополнительную ступеньку защиты:) Вот исправленная версия советника со всем комплектом поставки :)

Изменено 7 января, 2014 пользователем Ttomas

Автор#445

Спасибо за исправление!
Теперь ордер открылся скриптом корректно. :)
Буду смотреть за исполнением каскадов. l-)

#446
Цитата

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



Посмотрел Statement работы советника с сайта автора системы, 25-26 ноября были перерывы в работе советника, 26 советник начал торговать с 11-30. В остальные дни и до этого и после этого торговал круглосуточно.
5 декабря в 14-30 стоп поставлен всего 2 пункта.
4 декабря в 18-36 и 5 декабря 7-28 стопы и тейки поставлены криво.

Возможно баги его советника или что?
#447


Такс... Я исправил баг который сам и сделал вводя дополнительную ступеньку защиты:) Вот исправленная версия советника со всем комплектом поставки :)

Где?
#448

Я снял последние версии ввиду того что в ручном режиме иногда отрабатываются только 2 ордера, скоро буде обновление, если есть необходимость стоит использовать версию 4.2.


Добавлено: 08-01-2014 09:11:24

Я вам сейчас немного пожалуюсь на недобросоветных дядек :)

Вот функция определения исхода предыдущего ордера (Закрылся по ТП или По СЛ)
int   LastOrderInProfit()
{
if (Debag)Print ("Запущена функция проверки прибыльности предыдущего ордера");
int k;
if (Debag)Print ("Значение переменной к ", k);
while (k==0) {if (Debag)Print ("СТрока 378"); k=GlobalVariableGet(GWorkTicket);}
if (Debag)Print ("Новое значение переменной к ", k);
if (OrderSelect(k, SELECT_BY_TICKET, MODE_HISTORY)==True) //выбираем ордер
{
if (Debag)Print ("Выбран ордер в функции сброса.");
if (OrderProfit()>0)
{
if (Debag)Print ("Выбранный ордер в прибыли. Обнуляем переменные");
while(GlobalVariableGet(GWorkTicket)!=-1) {Print ("СТрока 386");GlobalVariableSet(GWorkTicket, -1);}
while(GlobalVariableGet(GStat)!= -1) {Print ("СТрока 387");GlobalVariableSet(GStat, -1);}
while (GlobalVariableGet(GLastLot)!= -1) {Print ("СТрока 388");GlobalVariableSet(GLastLot, -1);}
while(GlobalVariableGet(GCount)!= -1) {Print ("СТрока 389");GlobalVariableSet(GCount, -1);}
return(1);
}
if (OrderProfit() {
if (Debag)Print ("Выбранный ордер в убытке. Ничего не обнуляем");
return(2);
}
}
return(0);
}

Так вот При открытии очередного ордера (или подхвата ручного) глобальной переменной присваивается тикет этого ордера. Так как ордер рыночный то здесь он не может отражаться потому что выбран режим Истории. Но судя по логам журнала (ордер до сих пор так и висит открытым)
Спойлер

2014.01.08 12:25:27 Оптимист в 4.4 USDJPY,H1: СТрока 386
2014.01.08 12:25:27 Оптимист в 4.4 USDJPY,H1: Выбранный ордер в прибыли. Обнуляем переменные
2014.01.08 12:25:27 Оптимист в 4.4 USDJPY,H1: Выбран ордер в функции сброса.
2014.01.08 12:25:27 Оптимист в 4.4 USDJPY,H1: Новое значение переменной к 1360047920
2014.01.08 12:25:27 Оптимист в 4.4 USDJPY,H1: СТрока 378
2014.01.08 12:25:27 Оптимист в 4.4 USDJPY,H1: Значение переменной к 0
2014.01.08 12:25:27 Оптимист в 4.4 USDJPY,H1: Запущена функция проверки прибыльности предыдущего ордера
2014.01.08 12:25:27 Оптимист в 4.4 USDJPY,H1: СТрока 248
2014.01.08 12:25:27 Оптимист в 4.4 USDJPY,H1: Начало функции ядра
2014.01.08 12:25:27 Оптимист в 4.4 USDJPY,H1: Выбранный ордер в убытке. Ничего не обнуляем
2014.01.08 12:25:27 Оптимист в 4.4 USDJPY,H1: Выбран ордер в функции сброса.
2014.01.08 12:25:27 Оптимист в 4.4 USDJPY,H1: Новое значение переменной к 1360047920
2014.01.08 12:25:27 Оптимист в 4.4 USDJPY,H1: СТрока 378
2014.01.08 12:25:27 Оптимист в 4.4 USDJPY,H1: Значение переменной к 0
2014.01.08 12:25:27 Оптимист в 4.4 USDJPY,H1: Запущена функция проверки прибыльности предыдущего ордера


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

Поклонникам теории заговора посвещается... :)

Добавлено: 08-01-2014 11:31:49

Думаю у меня достаточно жесткие условия открытия инициирующих ордеров. Поэтому я добавил дополнительную проверку количества открытых ордеров. Проверять срабатывание по ТП или СЛ бот будет только при их отсутствии. За полтора часа фовард теста ошибка не всплыла, думаю вот эту версию уже можно дальше проверять на наличие остальных ошибок.

Просьба ко всем участникам теста. НА время проверки включить режим Отладки. По отчетам советника в этом режиме можно сделать более точные заключения.

Парадокс.JPG
Оптимист_v4.5.rar60 скач.

Изменено 8 января, 2014 пользователем Ttomas

#449

Сегодня выдался очень удачный день для советника, профит впечатлил, хотя и дошло до 6 колена.

Автор#450

В плане профитности - да. Но и остальные дни, если и не настолько профитны, но всё же в плюсе. Если советник отрабатывает нормально (у меня это - версия 4.2 в режиме автомата) все условия и каскады - слиться ему очень непросто.
А ручной вариант пока ещё в стадии проверки и поиска ошибок, теперь на версии 4.5. Если тут всё будет ровно - можно считать бот вполне рабочим и ставить на реал. Там он должен работать ещё лучше, т.к., судя по Альпари, на демках частые отключения типа перезапуска сервера. На реале связь есть практически всегда - и это хорошо! :)

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

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