Автор: Николай Камынин 

FUNC SERV_INFO()                                     ‘ параметры связи

SERVERTIME=GET_INFO_PARAM(«SERVERTIME»)             ‘время сервера

LASTRECORDTIME=GET_INFO_PARAM(«LASTRECORDTIME»)     ‘время последней записи

LOCALTIME=GET_INFO_PARAM(«LOCALTIME»)               ‘локальное время

NUMRECORDS=GET_INFO_PARAM(«NUMRECORDS»)             ‘Число записей

LASTRECORD=GET_INFO_PARAM(«LASTRECORD»)             ‘Последняя запись

LATERECORD =GET_INFO_PARAM(«LATERECORD»)            ‘Отставшая запись

CONNECTION=GET_INFO_PARAM(«CONNECTION»)             ‘Соединение

SESSIONID=GET_INFO_PARAM(«SESSIONID»)               ‘Идентификатор сессии

USERID=GET_INFO_PARAM(«USERID»)                     ‘ID пользователя

LASTPINGDURATION=GET_INFO_PARAM(«LASTPINGDURATION») ‘Задержка данных при обмене с сервером

AVGPINGDURATION=GET_INFO_PARAM(«AVGPINGDURATION»)   ‘Средняя задержка данных

AVGSENT=GET_INFO_PARAM(«AVGSENT»)                   ‘Средняя скорость передачи

LASTPINGTIME=GET_INFO_PARAM(«CONNECTIONTIME»)       ‘Время последней проверки связи

CONNECTIONTIME=GET_INFO_PARAM(«CONNECTIONTIME»)     ‘Время на связи

END FUNC

Tags: ,

Автор: Николай Камынин 

FUNC PORTF()                          ‘клиентский портфель

MAP=GET_CLIENT_MARGINAL_PORTFOLIO_INFO (firm_id,client_code) ‘ клиентский портфель

IN_ASSETS=GET_VALUE(MAP, «IN_ASSETS»)  ‘собственные средств клиента до начала торгов

LEVERAGE=GET_VALUE(MAP, «LEVERAGE»)  ‘Плечо

OPEN_LIMIT=GET_VALUE(MAP, «OPEN_LIMIT»)  ‘макс величина заемных средств до начала торгов

VAL_SHORT=GET_VALUE(MAP, «VAL_SHORT») ‘стоимость коротких позиций. всегда отрицательное

VAL_LONG=GET_VALUE(MAP, «VAL_LONG») ‘стоимость длинных позиций

VAL_LONG_MARGIN=GET_VALUE(MAP, «VAL_LONG_MARGIN») ‘стоимость длинных позиций по маржин бумагам,приним в обеспечение

VAL_LONG_ASSET=GET_VALUE(MAP, «VAL_LONG_ASSET») ‘стоимость длинных позиций по немаржин бумагам, приним в обеспечение

ASSETS=GET_VALUE(MAP, «ASSETS») ‘собственные средства клиента по текущим позициям и ценам

CUR_LEVERAGE=GET_VALUE(MAP, «CUR_LEVERAGE») ‘Текущее плечо

MARGIN=GET_VALUE(MAP, «MARGIN») ‘Уровень маржи, в процентах

LIM_ALL=GET_VALUE(MAP, «LIM_ALL») ‘Текущая оценка максимальной величины заемных средств

AV_LIM_ALL=GET_VALUE(MAP, «AV_LIM_ALL») ‘Оценка величины заемных средств, доступных для дальнейшего открытия позиций

LOCKED_BUY=GET_VALUE(MAP, «LOCKED_BUY») ‘стоимость активов в заявках на покупку

LOCKED_BUY_MARGIN=GET_VALUE(MAP, «LOCKED_BUY_MARGIN») ‘стоимость активов в заявках на покупку маржин бумаг, принимаемых в обеспеч

LOCKED_BUY_ASSET=GET_VALUE(MAP, «LOCKED_BUY_ASSET») ‘стоимости активов в заявках на покупку немаржин бумаг, принимаемых в обеспеч

LOCKED_SELL=GET_VALUE(MAP, «LOCKED_SELL») ‘стоимость активов в заявках на продажу маржин бумаг

LOCKED_VALUE_COEF=GET_VALUE(MAP, «LOCKED_VALUE_COEF») ‘стоимость активов в заявках на покупку немаржин бумаг

IN_ALL_ASSETS=GET_VALUE(MAP, «IN_ALL_ASSETS») ‘стоим всех позиций в ценах закрытия пред торговой сессии, вкл поз по немаржин бумагам

ALL_ASSETS=GET_VALUE(MAP, «ALL_ASSETS») ‘Текущая оценка стоимости всех позиций клиента

PROFIT_LOSS=GET_VALUE(MAP, «PROFIT_LOSS») ‘Абсолютная величина изменения стоимости всех позиций клиента

RATE_CHANGE=GET_VALUE(MAP, «RATE_CHANGE») ‘Относительная величина изменения стоимости всех позиций клиента

LIM_BUY=GET_VALUE(MAP, «LIM_BUY») ‘Оценка денежных средств, доступных для покупки маржинальных бумаг

LIM_SELL=GET_VALUE(MAP, «LIM_SELL») ‘Оценка стоимости маржинальных бумаг, доступных для продажи

LIM_NON_MARGIN=GET_VALUE(MAP, «LIM_NON_MARGIN») ‘Оценка денежных средств, доступных для покупки немаржинальных бумаг

LIM_BUY_ASSET=GET_VALUE(MAP, «LIM_BUY_ASSET») ‘Оценка денежных средств, доступных для покупки бумаг, принимаемых в обеспеч

END FUNC

‘————————-

FUNC DEPO()  ‘бумаги

ClDepoOB = DEPO_OPEN_BALANCE (client_code, firm_id, SecCode, account) ‘входящий остаток

ClDepoOL = DEPO_OPEN_LIMIT (client_code, firm_id, SecCode, account) ‘входящий лимит

ClDepoСB = DEPO_CURRENT_BALANCE (client_code, firm_id, SecCode, account)  ‘текущий остаток

ClDepoCL = DEPO_CURRENT_LIMIT (client_code, firm_id, SecCode, account) ‘текущий лимит

ClDepoAV = DEPO_LIMIT_AVAILABLE (client_code, firm_id, SecCode, account) ‘доступное количество бумаг

ClDepoLCK = DEPO_LIMIT_LOCKED (client_code, firm_id, SecCode, account)   ‘заблокированное количество бумаг

ClDepoLCKBuy = DEPO_LIMIT_LOCKED_BUY (client_code, firm_id, SecCode, account) ‘заблокированное на покупку количество лотов

ClDepoLCKBuyValue = DEPO_LIMIT_LOCKED_BUY_VALUE (client_code, firm_id, SecCode, account) ‘стоимость бумаг, заблокир на покупку

END FUNC

‘——————————

FUNC MONEY()  ‘ деньги

ClMoneyOB = MONEY_OPEN_BALANCE (client_code, firm_id,tag,cur ) ‘входящий остаток по денежным средствам

ClMoneyOL = MONEY_OPEN_LIMIT (client_code, firm_id,  tag,cur)  ‘входящий лимит по денежным средствам

ClMoneyCB = MONEY_CURRENT_BALANCE (client_code, firm_id,tag,cur)   ‘текущий остаток по денежным средствам

ClMoneyCL = MONEY_CURRENT_LIMIT (client_code, firm_id,tag, cur)    ‘текущий лимит по денежным средствам

ClMoneyAV = MONEY_LIMIT_AVAILABLE (client_code, firm_id,tag,cur) ‘доступное количество денежных средств

ClMoneyLCK = MONEY_LIMIT_LOCKED (client_code, firm_id,   tag,cur) ‘ заблокированное количество денежных средств

ClMoneyLCKNonMargValue = MONEY_LIMIT_LOCKED_NONMARGINAL_VALUE (client_code,firm_id,tag,cur) ‘стоим немаржин бумаг в заявках покупку

ClShortsValue = SHORT_VALUE (client_code, firm_id, SecCode, ClassCode,account, «LAST») ‘стоимость всех коротких позиций

ClLongsValue = LONG_VALUE (client_code, firm_id, SecCode,ClassCode,account, «OPEN»)   ‘стоимость всех длинных позиций

END FUNC

Tags: ,

В алгоритмическом  языке  QPILE  программирования для QUIK  согласно руководству пользователя имеется возможность отображать на графиках метки, вид которых задается в формате BMP.

 В качестве примера приведу график с изображением уровней сопротивления и поддержки

Вычисляемых программой на языке QPILE по значениям свечей изображенных на графике.

При реализации отображения меток встретилась следующая проблема. Как выяснилось у разработчиков нет возможности программно управлять флагом   «Прозрачный фон». По умолчанию, данный флаг должен быть сброшен, что не создавало бы проблем. Так это и происходит при запуске программы.

Однако, при дальнейшей работе программы, флаг  «Прозрачный фон» становиться активным.  С этого момента, выводимые на график метки становятся не видимыми.

Я решил эту проблему следующим образом:

В начале программы на график выводится максимальное количество меток на уровень «ноль». Так как задано нулевое значение цены, то метки остаются вне экрана.

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

   Для отображения уровней поддержки и сопротивления при большом  объеме истории метки использую циклически.