Биржа сайтов  

   

Популярное  

   

Утилита для QUIK "История позиций"

Оцените материал
(2 голосов)

Утилита для QUIK "История позиций"

Портфель предназначен для сохранения истории позиций в торговом терминале ИТС QUIK
История позиций на основе таблицы сделок - Учёт открытых и закрытых позиций
Возможность раздельного учёта позиций
Универсальность инструментов (акции, облигации, фьючерсы, опционы)
Универсальность бирж (ММВБ, РТС, УБ)
Возможность вывода истории Таблицы стоп-заявок
Возможность вывода истории Таблицы заявок
Возможность вывода истории Таблицы сделок

Вывод истории всех таблиц в файлы
Возможность ручного редактирования файлов
Возможность интеграции в любые автоматизированные системы
Возможность вывода таблицы истории позиций через DDE и ODBC
Открытый код с описанием всех функций вплоть до каждой строки

 


И так, работая в "ИТС QUIK" я отметил ряд неудобств связанных с учётом сделок.
- Во-первых, учёт позиций представлен только в совокупном численном виде. Если Вам приходится работать по нескольким торговым системам на одном инструменте, то легко запутаться в собственных сделках. К примеру одна торговая система находится в позиции покупки 1 лота, вторая в позиции продажи 1 лота. Но в QUIK реальный объём равен 0 лотов.
- Во-вторых, QUIK совершенно "не помнит", какие сделки совершались вчера. Таблица сделок ежедневно очищается, поэтому на следующую сессию, нам не будут доступны: время открытия,
цена покупки, прибыль по позиции и другие очень необходимые данные. Журналирование сделок вручную достаточно трудоёмкий процесс, особенно, когда совершается множество сделок по разным инструментам.
- В третьих, на фьючерсном рынке FORTS некоторые контракты расчитываются в долларах, а столбец "Вариационная маржа" обновляется медленно. Поэтому, узнать свой результат в родной "деревянной" валюте, можно не сразу.
- В четвёртых, в системе QUIK необходима среда учёта сделок, куда можно было обратиться автоматическим торговым системам (роботам).

Данные размышления, привели меня к идее создания программы, которая бы, самостоятельно вела историю позиций. Изрядно намучавшись с ручным журналированием своих сделок в MS Excel, я наконец-то же решился разработать собственное решение. Представление данных мне больше всего импонировало в терминале MetaTrader 4, поэтому учёт сделок схож.

ЗАГРУЗКА ПОРТФЕЛЯ.

1. Копируем файл портфеля в определённую папку, например: C:\Program Files\QUIK\QPILE.
2. Заходим в QUIK, нажимаем Ctrl+F10, выбираем файл портфеля.
3. Открываем текстовым редактором, например "Блокнотом", файл портфеля, устанавливаем настройки в "Пользовательские переменные", сохраняем/закрываем файл портфеля.
4. Нажимаем "Открыть", "Загрузить локально", "Выход".
5. В QUIK нажимаем Ctrl+F11, выбираем название портфеля из доступных портфелей, устанавливаем "Период расчёта (сек.) = 1", нажимаем "Применить".
6. В QUIK нажимаем Ctrl+F12, выбираем название портфеля из доступных портфелей, нажимаем "Добавить все", "Да". Появится таблица портфеля.
Примечание.
При необходимости, можно ограничить работу портфеля:
- по клиентам (в 3-ей строке кода портфеля указать список клиентов через запятую), например:
CLIENTS_LIST CLIENT1, CLIENT2;
- по фирмам (в 4-ой строке кода портфеля указать список фирм через запятую), например:
FIRMS_LIST FIRM1, FIRM2;

ТЕСТИРОВАНИЕ И ОПИСАНИЕ ВОЗМОЖНОСТЕЙ.

    И так, рассмотрим как работает портфель. Для примера откроем первую позицию по фьючерсу на индекс РТС. После входа в рынок, появится открытая позиция в портфеле "История позиций". Мы сможем увидеть все необходимые данные по этой позиции.
"Комментарий" - Комментарий для позиции;
"Дата откр." - Дата, когда была совершена первая сделка позиции;
"Время откр." - Время, когда была совершена первая сделка позиции;
"Код клиента" - Код клиента полезен для работы нескольких клиентов;
"Код класса" - Код класса для бумаги;
"Код бумаги" - Код бумаги;
"Бумага" - Полное название бумаги;
"Операция" - Операция позиции: "Покупка" или "Продажа";
"Кол-во" - Текущее количество в позиции;
"Объём" - Текущий объём в позиции;
"Цена откр." - Цена открытия позиции. Изменяется с изменением количества в позиции;
"Дата закр." - Дата закрытия позиции. Для открытых позиций текущая дата;
"Время закр." - Время закрытия позиции. Для открытых позиций текущее время;
"Цена закр." - Цена закрытия позиции. Для открытых позиций текущая встречная цена для закрытия позиции;
"Комиссия" - Комиссия позиции. Включает в себя комиссию брокера и комиссию торговой системы (биржи). Для открытых позиций учитывается только комиссия для открытия позиции, для закрытых выводится вся комиссия;
"НКД обл." - Накопленный купонный доход облигации. Расчитывается НКД для позиции. Столбец необходим только для работы с облигациями;
"P/L" - Прибыль в валюте депо, т.е. в рублях. Выводит прибыль без учёта комиссий и НКД облигаций по позиции, учитывая текущую цену закрытия;
"P/L %" - Прибыль в процентах от объёма без учёта комиссий и НКД облигаций;
"P/L чист." - Прибыль  в валюте депо, т.е. в рублях. Выводит прибыль с учётом комиссий и НКД облигаций по позиции, учитывая текущую цену закрытия;
"Дней позиции" - Количество дней после открытия позиции;
"Средства" - Средства в рублях. Средства представлены с учётом комиссий и НКД облигаций и имеют аккумулятивный вид.
Вычисления в столбцах идентичны для открытых и закрытых позиций.
*В последующих версиях могут появится новые столбцы.

Теперь, когда мы разобрались с предназначением столбцов, рассмотрим алгоритм открытия и закрытия позиций. Возможны четыре варианта.
1. Открытие и закрытие позиции. Например, совершаем сделку продажи ранее купленного фьючерса РТС (т.е. закрываем позицию). Наша позиция попадает в список закрытых позиций со всеми необходимыми нам столбцами.
2. Увеличение позиции. К открытой позиции добавляем сделку. В этом случае цена открытия усредняется, а также увеличивается комиссия и другие значения открытой позиции.
3. Уменьшение позиции. Из открытой позиции закрываем часть объёма. Закрытая часть попадает в закрытые позиции, оставшаяся остаётся в открытых позициях.
4. Разворот позиции. Часть объёма попадает в закрытые позиции, часть остаётся в открытых позициях, изменив направление.

Теперь давайте рассмотрим пример раздельных позиций. Эта возможность очень важна для тех, кто торгует несколькими стратегиями по одному инструменту. Например, мы торгуем двумя МТС:
2MA (две скользящие средние) и скальпируем вручную. Разграничение позиций я решил организовать при помощи комментариев. И так, открываем позицию с комментарием "2MA". Теперь совершаем скальперские сделки (открываем и закрываем позиции) при этом не указываем комментарий. Первая позиция с комментарием "2MA" остаётся открытой, тогда как скальперские позиции учитываются отдельно. Мы можем иметь сколько угодно отдельно учитываемых позиций, при этом нам будет известно в каком положении каждая из позиций.

При помощи портфеля "История позиций" мы можем вести любую удобную статистику в MS Excel. Для этого достаточно скопировать данные таблицы портфеля в буфер, создать файл MS Excel, вставить содержимое буфера. Дальше возможности ограничены только MS Excel. Мы можем создавать графики, упорядочивать позиции и т.д.

Портфель сохраняет в файлы исторические данные таблиц:
- Таблица стоп-заявок "StopOrders.csv" (только исполненные)
- Таблица заявок "Orders.csv" (только исполненные)
- Таблица сделок "Trades.csv"
- Таблица открытых позиций "OpenPositions.csv" (дублируются из таблицы портфеля)
- Таблица закрытых позиций "ClosePositions.csv" (дублируются из таблицы портфеля)
Выгруженные файлы могут использоваться для собственной статистики, но основной целью является взаимодействие с роботами. Независимо от того, написан ли робот на внутреннем языке QPILE или является внешней программой, мы можем всегда "заглянуть" из программного кода, к примеру, к открытой позиции, получив важную информацию о цене открытия, прибыли и всех остальных важных данных. Такой вариант не только ускоряет написание автоматизированных систем, но и устраняет необходимость ведения статистики внутри робота. Последнее существенно ускоряет работу роботов, особенно если их несколько.
Увидеть содержимое файлов можно также в отдельном портфеле, который также входит в комплект.
При необходимости данные можно загружать во внешнюю программу при помощи DDE и ODBC стандартным способом выгрузки таблиц из системы QUIK.

Также есть возможность редактировать и добавлять пропущенные или неучтённые сделки и расходы.
Добавление пропущенной сделки может потребоваться, если портфель не собрал сделку в предыдущие дни. Напомню, что систему QUIK с загруженным портфелем необходимо загружать каждую торговую сессию, или, хотя бы, в конце сессии для сбора данных из таблицы сделок текущего дня. Но если по каким-то причинам сделка была пропущена, её можно записать вручную из брокерского отчёта.
Добавление неучтённых расходов, может быть необходимо для учёта брокерских расходов или для ежегодного учёта НДФЛ. Чтобы добавить расход необходимо открыть файл Trades.csv и записать необходимые псевдосделки. Например, я записываю ежемесячный сбор за ведение аналитического счёта в размере 100 рублей. Для этого создаю первую сделку продажи с ценой открытия 100 и вторую сделку покупки с ценой 0. В итоге получается закрытая позиция с прибылью -100.  

ПРИМЕЧАНИЯ

1. Расчёт комиссии брокера для фьючерсов рассчитывается в двух вариантах: в рублях за контракт (Открытие, БКС, Финам, Кит Финанс) и на основе комиссии биржи (Ай-Ти Инвест). Способ расчёта комиссии на FORTS уточните у Вашего брокера.
2. При торговле на FORTS используется два кода класса:
- "SPBFUT" (основная сессия)
- "FUTVN" (вечерняя сессия)
Дабы избежать путаницы, в таблице позиций все сессии будут отображаться с кодом класса "SPBFUT".
3. Все комиссии выводятся с учётом НДС.
4. Прибыль по инструментам номинированным в долларах (например, фьючерс на индекс РТС) будет выводится с учётом курса валют.
5. Следует учесть, что программа не может учитывать все издержки. Кроме комиссий, есть ежемесячные сборы брокера, транзакционные издержки, прибыли от "овернайт" займов и т.д. Информация о них недоступна в системе QUIK, поэтому узнать о них можно только из брокерских отчётов. Я сделал программу максимально гибкой для того, чтобы можно было записывать дополнительные издержки вручную.

LD
Прочитано 793 раз

Добавить комментарий


Защитный код
Обновить

   
Nordfx InstaForex
   
   

Авторизация  

   

Реклама  

Новый БУКС!
   

Случайные