Создание портфеля, работающего с любым выбранном в QUIK инструментом

Страницы: 1
RSS
Создание портфеля, работающего с любым выбранном в QUIK инструментом
 
Здравствуйте,
Интересует, возможно ли создать портфель, который можно будет использовать для получения сведений или отправления заявок по любому инструменту, выбранному в QUIK тем или иным образом, например - портфель при открытии (из окна "просмотр портфелей") начинает работу с тем инструментом, график которого сейчас открыт, или ещё как-то.
Вот например сейчас я могу только при написании скрипта прямо в нём создать переменные, которым присваивается определённое название тикера и рынка (константы). Портфель работает, но если нужно применить его к другому инструменту, приходится менять код и перезагружать скрипт. Это неудобно и долго. А хотелось бы, чтобы я, открывая потрфель, получал его привязанным к текущему инструменту. Как получить какой-либо идентификатор текущего инструмента в коде QPILE?
И второй, более сложный вопрос - возможно ли сделать описанный выше универсальный портфель так, чтобы его можно было открывать в нескольких экземплярах, предварительно выбирая разные инструменты, чтобы каждый экземпляр работал на своём инструменте и не мешал другим (чтобы не было общих переменных, например)?
 
1. Нет
2. Запросто. Вместо глобальных переменных используйте локальные структуры. Для каждого инструмента- своя структура. На каждой итерации скрипта QPILE обрабатывайте по очереди все нужные вам инструменты, используя соответствующую структуру.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
1. Возможно. Присваиваете идентификатор графику и при изменении графика робот, считывает с него информацию. У себя так сделал.
candle_name = Get_Value (Get_Collection_Item (Get_Value (Get_Candle_Ex (name , Dat, candle_time),"LINES") , 0) ,"NAME") -  с помощью этой функции получите название графика (name - идентификатор графика, Dat - дата свечи, candle_time - время свечи)

new_global("Instrument","инструмент")

candle_name=TRIM(SUBSTR(candle_name,0,(0+LEN(candle_name)-7)))
classes_list="TQBR,TQNE,TQNL,TQNS,SPBFUT,QJSIM,TQBS"
ClassCode=""
for CLASSCODDE in classes_list
SECS=GET_CLASS_SECURITIES (CLASSCODDE)
for Instrumment in SECS
SecInfo_NAME = GET_VALUE(GET_SECURITY_INFO(CLASSCODDE, Instrumment),"SHORT_NAME")
if candle_name=SecInfo_NAME
Instrument=Instrumment
ClassCode=CLASSCODDE
break
end if
end for
end for

С помощью этой блока кода определите код бумаги и класс. Далее уже сами код оптимизируйте. и еще один важный момент, не меняйте ничего в названиях графика, а то не верно будет определятся данные ( строка обрабатывающая название графика candle_name=TRIM(SUBSTR(candle_name,0,(0+LEN(candle_name)-7))))
Страницы: 1
Читают тему
Наверх