#19895 - Thu Jan 20 2011 04:10 PM
многократный запуск скрипта в выбранном интервале
|
stranger
Registered: Thu Dec 02 2010
Записи: 16
|
Добрый день! Я только начал разработку скрипта на API, поэтому вопрос может оказаться банальным, но ни в документации ни на форуме не нашел на него ответа.
Создаю простой скрипт, вешаю в кубиках на него 35 источников данных, в свойствах скрипта выставляю интервал 1 минута, в самом скрипте (в MS Visual Studio) вывожу в лог цену закрытия по последним барам для всех источников:
#region выборка цены закрытия последнего закрытого бара по всем источникам int barsCount = 0; for (int i = 0; i < 35; i++) { barsCount = securities[i].Bars.Count; if (barsCount > 0) ctx.Log("> " + securities[i].CacheName.ToString() + " - " + securities[i].Bars[barsCount - 1].Close.ToString() + " - " + securities[i].Bars[barsCount - 1].Date.ToString(), 0x702020); } #endregion
... далее скрипт прикрепляю к реальному портфелю подключенному к серверу Transaq. Запускаю скрипт ожидая что он будет запускаться единожды вначале каждого интервала, т.е. в начале каждой минуты, а в результате он запускается по нескольку десятку раз в течении каждого интервала (в течении каждой минуты. записывая в лог, в течении каждого интервала, одни и те же данные)
ВОПРОС: многократные запуск скрипта в течении одного интервала это особенности работы самой программы или я где-то что-то пропустил в настройках?
|
Наверх
|
|
|
|
#19897 - Thu Jan 20 2011 04:36 PM
Re: многократный запуск скрипта в выбранном интервале
[Re: Nektodron]
|
stranger
Registered: Thu Dec 02 2010
Записи: 16
|
спасибо, это все объясняет, я это как то не учел.
1. насколько я понимаю, выбранный в портфеле источник для торговли к которому и крепится торговый алгоритм (в настройках портфеля) - является той самой точкой отсчета интервала (в данном случае - минуты), то есть после закрытия текущего бара этого источника - начинается новый интервал пересчета или же интервал пересчета начинается с каждой новой минутой по серверному времени биржи?
2. И все же странно получается, судя по логу (во вложении) последняя цена по бумагам меняется сразу по всем, какие же дополнительные пересчеты могут запускаться в течении целой минуты если обновления по всем бумагам уже произошли?
3. Также мне непонятно, почему после остановки скрипта (в логе даже имеется надпись - "скрипт остановлен"), он ещё несколько раз автоматически запускается самостоятельно?
Attachments
log_pbbp.xls (111 downloads)
Отредактировано Philontrop (Thu Jan 20 2011 04:54 PM)
|
Наверх
|
|
|
|
#20004 - Tue Jan 25 2011 09:40 AM
Re: многократный запуск скрипта в выбранном интервале
[Re: Philontrop]
|
stranger
Registered: Thu Dec 02 2010
Записи: 16
|
... вопрос в догонку, технически сформулировать вопрос я ещё не могу, поэтому спрошу своими словами:
4. в моей ситуации, со множеством источником, когда в течении одного временного интервала происходит множество пересчетов, с одними и теми же данными. Допустим в моем скрипте на первом пересчете выполнилось условие для открытия позиции, выполнилась функция открытия позиции, сигнал ушел брокеру ... в это время, до окончания временного интервала происходит ещё множество пересчетов, при которых так же выполняется это же условие открытия позиции ... как избежать многократного открытия позиции? я предполагаю что может быть момент когда позиция ещё не создана а новый пересчет уже послал сигнал на открытие новой?
пожалуйста развейте мои заблуждения или подскажите какими маркерами или "индикаторами" возможно отследить то, что в текущем временном интервале сигнал на открытие позиции уже послан?
5. очевидно, ситуация описанная выше в (вопросе 4.) будет иметь место и при закрытии позиции?
|
Наверх
|
|
|
|
#20005 - Tue Jan 25 2011 09:57 AM
Re: многократный запуск скрипта в выбранном интервале
[Re: Philontrop]
|
stranger
Registered: Thu Dec 02 2010
Записи: 16
|
6. как повлияет на количество пересчетов, если я у всех источников, кроме одного по которому собираюсь торговать "поставлю галочку" на условии "не торгуемый"?
|
Наверх
|
|
|
|
#20033 - Tue Jan 25 2011 04:18 PM
Re: многократный запуск скрипта в выбранном интервале
[Re: Philontrop]
|
stranger
Registered: Thu Dec 02 2010
Записи: 16
|
7. Будет ли работать такой вариант: - в отдельном скрипте №1 используя множество источников с небольшим таймфреймом ведутся необходимые расчеты и анализы данных, сохраняя результат в "доступное место". - параллельно в скрипте №2 проверяются условия (используя результаты работы скрипта №1 из "доступного места") по одному источнику, по которому собственно и будет вестись торговля, с большим таймфреймом. - оба скрипта вешаются на один портфель и оба запускаются в реалтайме.
Будет ли это работать как задумано (возможно есть ньюансы о которых я не знаю) и ЧТО можно (и оптимально) использовать в качестве "доступного места" для хранения результатов работы скрипта №1 (в качестве результатов необходимо будет передавать ряд параметров и величин, думаю порядка 5-10 шт. история не обязательна) ?
|
Наверх
|
|
|
|
#20114 - Thu Jan 27 2011 03:39 PM
Re: многократный запуск скрипта в выбранном интервале
[Re: Philontrop]
|
stranger
Registered: Thu Dec 02 2010
Записи: 16
|
8. Был бы бесконечно признателен, небольшим фрагментом кода на C# в котором при определенном условии текущего пересчета, на график по определенному (одному) источнику, на последнем баре (на котором выполняется пересчет) выводился какой-нибудь "маркер" с описанием.
|
Наверх
|
|
|
|
#20349 - Mon Jan 31 2011 10:11 AM
Re: многократный запуск скрипта в выбранном интервале
[Re: Philontrop]
|
stranger
Registered: Thu Dec 02 2010
Записи: 16
|
9. Подскажите пожалуйста, какими способами, с бОльшей вероятностью, можно получить чуточку больше внимания разработчиков, на данном форуме?
Отредактировано Philontrop (Mon Jan 31 2011 10:14 AM)
|
Наверх
|
|
|
|
#20393 - Mon Jan 31 2011 12:42 PM
Re: многократный запуск скрипта в выбранном интервале
[Re: Nektodron]
|
stranger
Registered: Thu Dec 02 2010
Записи: 16
|
Спасибо за ответы, многое для меня прояснилось.
...несколько уточнений:
Вопрос 4. В настройках программы пункт "Трейдинг" - "Таймаут заявки, сек" - задается параметр который определяет именно время в течении которого TSLab отслеживает что "позиция с таким именем открыта"? А по окончании этого таймаута, при повторном пересчете и срабатывании тех же условий скрипта и повторной отправки заявке на открытии той-же позиции, позиция с таким же именем вновь будет открыта?
Вопрос 7. это принципиально реализуемо в текущей версии программы?
|
Наверх
|
|
|
|
#20434 - Mon Jan 31 2011 03:04 PM
Re: многократный запуск скрипта в выбранном интервале
[Re: Philontrop]
|
Carpal Tunnel
Registered: Thu Oct 23 2008
Записи: 5492
|
4. "Таймаут заявки, сек" - время в течении которого TSLab ждет подтверждения от сервера, что заявка принята/отклонена. Если подтверждения так и не пришло, то об этом будет написано. Обычно это связано с очень плохой связью с сервером, торговать в этом случае крайне не рекомендуются, т.к. возможны двойные выставления заявок. 7. Если имеется один пересчет - то нет, более того, при обрывах связи, тоже будет повторный пересчет. Скрипт в визуальном редакторе - не восприимчив к повторным пересчетам, логику его работы этим нарушить нельзя. Скрипты на API, которые используют встроенный механизм позиций тоже.
|
Наверх
|
|
|
|
#20440 - Mon Jan 31 2011 03:30 PM
Re: многократный запуск скрипта в выбранном интервале
[Re: Nektodron]
|
stranger
Registered: Thu Dec 02 2010
Записи: 16
|
спасибо, ещё небольшое уточнение: под "встроенным механизмом позиций", который самостоятельно контролирует процесс открытия/закрытия позиций исключая дублирования при многочисленных пересчетах, вы имели ввиду (в случае API) использование: классов TSLab.Script.IPosition и TSLab.Script.IPositionsList ?
|
Наверх
|
|
|
|
#20460 - Mon Jan 31 2011 06:58 PM
Re: многократный запуск скрипта в выбранном интервале
[Re: Nektodron]
|
stranger
Registered: Thu Dec 02 2010
Записи: 16
|
спасибо, насколько я понял ваш ответ на последний вопрос был - "ДА". ... а что касается механизма при котором есть возможность самостоятельно управлять заявками, но при этом он ("механизм") не отслеживает повторные открытия позиций - это, работа с помощью ордеров (использование класса TSLab.Script.Realtime)?
|
Наверх
|
|
|
|
|
|