#65531 - Wed Oct 08 2014 06:10 PM
Пересчет Пок/Прод
|
journeyman
Registered: Sun Mar 04 2012
Записи: 70
|
Всем доброго дня!
Наблюдаю за работой двух своих агентов с одним и тем же алгоритмом, но разными торговыми настройками. У обоих таймфрейм 60 секунд, но интервал пересчета - разный, у одного -Пок/Прод(без объема), у другого - интервал. Так вот у которого Пок/Прод очень часто ( но не всегда) наблюдаются пропуски входов и выходов, у другого таких проблемм нет. Алгоритм выдает сигнал на сделку одновременно на два инструмента по РЫНКУ, и почему-то имеют место быть пропуски сигналов, причем по одному инструменту сделка может пройти, по другому нет. У меня есть одно предположение, почему так происходит - при срабатывании условия на сделку начинают выставляться заявки, причем последовательно сначала по одному инструменту, затем по второму, но если между моментами выставления заявок происходит пересчет и условие становиться ложным заявка по второму инструменту снимается.
Задача стоит отлавливать значения Bid Ask и немедленно выставлять заявки по двум инструментам. В алгоритме есть еще индикатор, работающий на минутках с историей в 100 бар.
Кто может посоветовать лучший и надежный способ реализации такого алгоритма или торговых настроек или устранения пропусков входов и выходов.
С уважением!
|
|
Наверх
|
|
|
|
#65537 - Wed Oct 08 2014 08:09 PM
Re: Пересчет Пок/Прод
[Re: ViL]
|
Carpal Tunnel
Registered: Thu Sep 27 2012
Записи: 2860
|
Описанное вам поведение легко может быть НА ДЕМО серверах. Когда рыночная заявка снимается с рынка не успев исполниться. На реале заявка по маркету сразу исполняется.
Если есть пропущенный вход, нужно разбираться отдельно по логам. Возможно логика страдает где-то в алгоритме.
Отредактировано ra81 (Thu Oct 09 2014 10:59 AM)
_________________________
__
|
|
Наверх
|
|
|
|
#65538 - Wed Oct 08 2014 09:47 PM
Re: Пересчет Пок/Прод
[Re: ra81]
|
journeyman
Registered: Sun Mar 04 2012
Записи: 70
|
Легко сказать держите, у меня Bid Ask приходят внутри баров, и условия входов выходов срабатывают внутри, простым обновляемым значением тут не получиться удержать. Видимо придется уменьшать таймфрейм, но это увеличит время пересчета, что довольно критично или есть ещё варианты?
Отредактировано rsv (Wed Oct 08 2014 09:56 PM)
|
|
Наверх
|
|
|
|
#65539 - Wed Oct 08 2014 10:04 PM
Re: Пересчет Пок/Прод
[Re: ra81]
|
enthusiast
Registered: Wed Jan 18 2012
Записи: 256
|
Интересно как такое может быть? Как может быть начат новый пересчет если не закончен предыдущий? Насколько я понимаю метод BuyAtMarket завершает свою работу когда получен сигнал от брокера.
|
|
Наверх
|
|
|
|
#65540 - Wed Oct 08 2014 10:26 PM
Re: Пересчет Пок/Прод
[Re: Kermit]
|
journeyman
Registered: Sun Mar 04 2012
Записи: 70
|
Пересчет происходит при изменении Bid или Ask, и по хорошему рыночная заявка должна уходить при первом, удовлетворяющем условию тике, независимо, какие данные приходят дальше, но так почемуто происходит не всегда.
|
|
Наверх
|
|
|
|
#65548 - Thu Oct 09 2014 08:56 AM
Re: Пересчет Пок/Прод
[Re: Kermit]
|
Carpal Tunnel
Registered: Thu Sep 27 2012
Записи: 2860
|
Интересно как такое может быть? Как может быть начат новый пересчет если не закончен предыдущий? Насколько я понимаю метод BuyAtMarket завершает свою работу когда получен сигнал от брокера. пока не закончен следующий новый не будет начат, но вот как только будет закончен, тогда может сразу начаться новый. Метод BuyAtMarket завершает работу тогда когда сигнал был передан в менеджер позиций и был выставлен в рынок, НО ЕСТЬ один момент на демо серверах. Маркет заявка может быть снята до исполнения. Такие дела. И если заявка выставилась с ошибкой вы получите сообщение про это. Сам проверял что если ставить заявки по маркету через пок/прод, они тупо не исполняются. не успевают даже встать в стакан  . НА ДЕМО СЕРВЕРАХ это было. В реале не было.
Отредактировано ra81 (Thu Oct 09 2014 10:54 AM)
_________________________
__
|
|
Наверх
|
|
|
|
#65549 - Thu Oct 09 2014 08:57 AM
Re: Пересчет Пок/Прод
[Re: rsv]
|
Carpal Tunnel
Registered: Thu Sep 27 2012
Записи: 2860
|
Пересчет происходит при изменении Bid или Ask, и по хорошему рыночная заявка должна уходить при первом, удовлетворяющем условию тике, независимо, какие данные приходят дальше, но так почемуто происходит не всегда. Удалено.
Отредактировано ra81 (Thu Oct 09 2014 11:00 AM)
_________________________
__
|
|
Наверх
|
|
|
|
#65550 - Thu Oct 09 2014 08:58 AM
Re: Пересчет Пок/Прод
[Re: rsv]
|
Carpal Tunnel
Registered: Thu Sep 27 2012
Записи: 2860
|
Легко сказать держите, у меня Bid Ask приходят внутри баров, и условия входов выходов срабатывают внутри, простым обновляемым значением тут не получиться удержать. Видимо придется уменьшать таймфрейм, но это увеличит время пересчета, что довольно критично или есть ещё варианты? Используйте прямое управление заявками через ISecurityRt. Там не нужно использовать сигналы.
_________________________
__
|
|
Наверх
|
|
|
|
#65553 - Thu Oct 09 2014 09:38 AM
Re: Пересчет Пок/Прод
[Re: ra81]
|
enthusiast
Registered: Wed Jan 18 2012
Записи: 256
|
Интересно как такое может быть? Как может быть начат новый пересчет если не закончен предыдущий? Насколько я понимаю метод BuyAtMarket завершает свою работу когда получен сигнал от брокера. пока не закончен следующий новый не будет начат, но вот как только будет закончен, тогда может сразу начаться новый. Метод BuyAtMarket завершает работу тогда когда сигнал был передан в менеджер позиций. И он не ждет каких то там ответов от чего либо. Иначе ваш скрипт выполнялся бы по секунде. Менеджер позиций уже начинает ваш сигнал отрабатывать пытаться. И если заявка выставилась с ошибкой вы получите сообщение про это. Сам проверял что если ставить заявки по маркету через пок/прод, они тупо не исполняются. не успевают даже встать в стакан  . Спасибо за информацию. Я в своих представлениях ориентировался на информацию с форума. http://forum.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=51154#Post51154где как раз написано от требуемом ответе брокера для завершении пересчета. Сейчас еще одни пазл про устройство ТСлаба у меня сложился. )))
|
|
Наверх
|
|
|
|
#65565 - Thu Oct 09 2014 10:55 AM
Re: Пересчет Пок/Прод
[Re: Kermit]
|
Carpal Tunnel
Registered: Thu Sep 27 2012
Записи: 2860
|
был не прав. Vil верно все расписал. Выше пост поправил. Снятие маркет заявки может быть только на демо серверах. Я вспомнил что на них наблюдал. В реале не было такого. ПС: почистил все сообщения свои выше, дабы не вводить в заблуждение никого в том числе себя 
Отредактировано ra81 (Thu Oct 09 2014 11:01 AM)
_________________________
__
|
|
Наверх
|
|
|
|
#65577 - Thu Oct 09 2014 03:21 PM
Re: Пересчет Пок/Прод
[Re: ra81]
|
enthusiast
Registered: Wed Jan 18 2012
Записи: 256
|
Т.е. схема сделки такая? 1. Метод в скрипте формирует сигнал для менеджера команд. 2. Менеджер команд выставляет заявку на сервер брокера и ждет исполнения. 3. Метод заканчивает работу, когда от менеджера команд поступает подтверждение об исполнении. Так?
Кстати для автора. Еще есть вариант - вынести управление позициями за пределы цикла баров. Т.е. не использовать историю вообще. Для торгующего скрипта она не нужна.
|
|
Наверх
|
|
|
|
#65585 - Thu Oct 09 2014 04:19 PM
Re: Пересчет Пок/Прод
[Re: Kermit]
|
Carpal Tunnel
Registered: Thu Sep 27 2012
Записи: 2860
|
Т.е. схема сделки такая? 1. Метод в скрипте формирует сигнал для менеджера команд. 2. Менеджер команд выставляет заявку на сервер брокера и ждет исполнения. 3. Метод заканчивает работу, когда от менеджера команд поступает подтверждение об исполнении. Так?
Получается что так. Только подтверждение о принятии к исполнению заявки. Я думаю так будет верно. А тож исполниться она может не сразу сама по себе  . А исполнение для рыночной заявки штука вполне определенная, она исполнится однозначно. Так что исполнения мы не ждем. Ждем регистрации заявки.
Отредактировано ra81 (Thu Oct 09 2014 04:20 PM)
_________________________
__
|
|
Наверх
|
|
|
|
#65601 - Thu Oct 09 2014 10:55 PM
Re: Пересчет Пок/Прод
[Re: ra81]
|
journeyman
Registered: Sun Mar 04 2012
Записи: 70
|
Всем спасибо за ответы! Убив один день жизни и перебрав все здравомыслимые варианты по изменению логики скрипта, так ничего и не добился, идут пропуски в режиме Пок/Прод и все. (это в агенте, в Лабе все отлично).
Теперь о самом интересном, агенты у меня работают на удаленной машине (32-битная), скрипты я писАл на локальной (64-битная), и переписав (создав заново, а не скопировав файл) скрипт непосредственно на удаленной машине агент чудесным образом заработал как надо с интервалом 60 сек и пересчетом Пок/Прод(без объёма). В чем конкретно было дело сказать трудно, либо какой-то внутренний косяк в конкретном скрипте, либо битность систем имеет значение, либо х.з.
С уважением!
Отредактировано rsv (Thu Oct 09 2014 10:55 PM)
|
|
Наверх
|
|
|
|
#65605 - Fri Oct 10 2014 05:35 AM
Re: Пересчет Пок/Прод
[Re: Kermit]
|
Pooh-Bah
Registered: Sat Jan 09 2010
Записи: 2054
|
Еще есть вариант - вынести управление позициями за пределы цикла баров. Т.е. не использовать историю вообще. Для торгующего скрипта она не нужна. А вот про это поподробней, а то может я что то упустил в развитии программы.
Отредактировано Frend (Fri Oct 10 2014 05:36 AM)
_________________________
Помогу с реализацией вашей идеи, оценкой системы. Консультации frendwork@rambler.ru
|
|
Наверх
|
|
|
|
#65606 - Fri Oct 10 2014 09:31 AM
Re: Пересчет Пок/Прод
[Re: rsv]
|
Carpal Tunnel
Registered: Thu Sep 27 2012
Записи: 2860
|
Всем спасибо за ответы! Убив один день жизни и перебрав все здравомыслимые варианты по изменению логики скрипта, так ничего и не добился, идут пропуски в режиме Пок/Прод и все. (это в агенте, в Лабе все отлично).
Теперь о самом интересном, агенты у меня работают на удаленной машине (32-битная), скрипты я писАл на локальной (64-битная), и переписав (создав заново, а не скопировав файл) скрипт непосредственно на удаленной машине агент чудесным образом заработал как надо с интервалом 60 сек и пересчетом Пок/Прод(без объёма). В чем конкретно было дело сказать трудно, либо какой-то внутренний косяк в конкретном скрипте, либо битность систем имеет значение, либо х.з.
С уважением! ну сложно сказать почему после пересборки стали входы проходить корректно. тут либо ошибка была в скрипте либо черт знает что 
_________________________
__
|
|
Наверх
|
|
|
|
#65615 - Fri Oct 10 2014 01:45 PM
Re: Пересчет Пок/Прод
[Re: Frend]
|
enthusiast
Registered: Wed Jan 18 2012
Записи: 256
|
Обычно управление позициями находится внутри цикла свечей от начала истории до последней закрытой. За счет этого реализована возможность открывать/закрывать позиции на истории. Это полезно для тестов в лаборатории и нафиг не нужна в агенте. Поэтому можно решить проблему пропущенных входов радикально - внести управления позициями за цикл. Нет позиций на истории - нет проблем с пропущенными входами, виртуальными позициями и т.д.
|
|
Наверх
|
|
|
|
#65616 - Fri Oct 10 2014 01:54 PM
Re: Пересчет Пок/Прод
[Re: Kermit]
|
Pooh-Bah
Registered: Sat Jan 09 2010
Записи: 2054
|
Обычно управление позициями находится внутри цикла свечей от начала истории до последней закрытой. За счет этого реализована возможность открывать/закрывать позиции на истории. Это полезно для тестов в лаборатории и нафиг не нужна в агенте. Поэтому можно решить проблему пропущенных входов радикально - внести управления позициями за цикл. Нет позиций на истории - нет проблем с пропущенными входами, виртуальными позициями и т.д. а технически ?
_________________________
Помогу с реализацией вашей идеи, оценкой системы. Консультации frendwork@rambler.ru
|
|
Наверх
|
|
|
|
#65620 - Fri Oct 10 2014 02:30 PM
Re: Пересчет Пок/Прод
[Re: Frend]
|
enthusiast
Registered: Wed Jan 18 2012
Записи: 256
|
Переработанный пример из хелпа. Цикл for пустой.
// Торговля.
int barsCount = source.Bars.Count;
for (int i = 0; (i < barsCount); i++)
{ }
IPosition le = source.Positions.GetLastActiveForSignal("LE");
if (le == null)
{
// Если нет активных длинных позиций, выдаем условный ордер на создание новой позиции.
source.Positions.BuyIfGreater(barsCount + 1, 1, high.Last(), "LE");
}
else
{
le.CloseAtStop(barsCount + 1, low.Last(), "LX");
}
IPosition se = source.Positions.GetLastActiveForSignal("SE");
if (se == null)
{
// Если нет активных коротких позиций, выдаем условный ордер на создание новой позиции.
source.Positions.SellIfLess(barsCount + 1, 1, low2.Last(), "SE");
}
else
{
se.CloseAtStop(barsCount + 1, high2.Last(), "SX");
}
|
|
Наверх
|
|
|
|
#65621 - Fri Oct 10 2014 02:39 PM
Re: Пересчет Пок/Прод
[Re: Kermit]
|
Pooh-Bah
Registered: Sat Jan 09 2010
Записи: 2054
|
Спасибо
_________________________
Помогу с реализацией вашей идеи, оценкой системы. Консультации frendwork@rambler.ru
|
|
Наверх
|
|
|
|
#65630 - Fri Oct 10 2014 10:32 PM
Re: Пересчет Пок/Прод
[Re: Frend]
|
journeyman
Registered: Sun Mar 04 2012
Записи: 70
|
Так пересчет Пок/Прод и отвязывает торговлю от баров, а сами бары используются исключительно для расчета каких-либо индикаторов, и всё замечательно работает. Как правило индикаторы требуют определённого периода для расчета, а вот если их не использовать, то можно работать исключительно на тиках, без всякой истории.
|
|
Наверх
|
|
|
|
|
|