Никита Драбышевский
Никита Драбышевский личный блог
19 октября 2019, 22:41

Импорт значений дневных свечей из QUIK

qpile скрипт, создающий таблицу значений дневных свечей, для создания таблицы должен быть открыт соответствующий график, код скрипта в конце.
Порядок действий:
1) Создаём текстовый документ, меняем его расширение с txt на qpl
2) Открываем документ при помощи блокнота и копируем в него код скрипта
3) На 9 строке ставим в кавычках код класса, на 10й вставляем код инструмента, на 11 строке устанавливаем количество импортируемых свечей (в теории можно импортировать 3000, однако обычно выходит меньше)
4) сохраняем файл
5) В добавляем скрипт в QUIK: В верхнем меню, вкладка сервисы -> QPILE скрипты -> Добавить (находим и выбираем файл со скриптом) -> Загрузить локально (и закрываем верхнее окно) -> В окне «работа со скриптами» жмём создать таблицу -> Добавляем все параметры и жмём «Да»
6) Кликаем на открывшуюся таблицу правой кнопкой мыши, и жмём на вывод через DDE сервер, в открывшемся окне выбираем книгу эксель, лист и жмём «Начать вывод»
В качестве примера введены код класса и инструмента для валютной пары USD/RUB с поставкой на завтра. 
Код скрипта:

PORTFOLIO_EX USD_RUB_DAY;
DESCRIPTION USD_RUB_DAY;
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST ALL_FIRMS;

USE_CASE_SENSITIVE_CONSTANTS

PROGRAM
secClass = «CETS» ' код класса
secCode = «USD000UTSTOM» ' код инструмента
candleMaxCount = 3000 ' количество импортируемых свечей

timeFrame = -1

DELETE_ALL_ITEMS()

dateTime = GET_DATETIME()
yearPart = GET_VALUE(dateTime, «YEAR»)
monthPart = GET_VALUE(dateTime, «MONTH»)
dayPart = GET_VALUE(dateTime, «DAY»)

for i from 1 to candleMaxCount
if(i > 5000)
i = 10000
end if
dateString = GetDataString(yearPart, monthPart, dayPart)
timeString = «000000»
candle = GET_CANDLE(secClass, secCode, "", timeFrame, «PRICE», dateString, timeString)
open = GET_VALUE(candle, «OPEN») + 0
if (open = 0)
candleMaxCount = candleMaxCount + 1
end if

if (open > 0)
high = GET_VALUE(Candle, «HIGH»)
low = GET_VALUE(Candle, «LOW»)
close = GET_VALUE(Candle, «CLOSE»)
volume = GET_VALUE(candle, «VOLUME»)
output = CREATE_MAP()
output = SET_VALUE(output, «Date», dateString)
output = SET_VALUE(output, «Time», timeString)
output = SET_VALUE(output, «OpenPrice», open)
output = SET_VALUE(output, «HighPrice», high)
output = SET_VALUE(output, «LowPrice», low)
output = SET_VALUE(output, «ClosePrice», close)
output = SET_VALUE(output, «Volume», volume)

ADD_ITEM(i, output)
end if

dayPart = dayPart — 1
if dayPart < 1
dayPart = 31
monthPart = monthPart — 1
if monthPart < 1
monthPart = 12
yearPart = yearPart — 1
end if
end if
end for

func GetDataString(year, month, day)
if (LEN(month) < 2)
month = «0» & month
end if
if (LEN(day) < 2)
day = «0» & day
end if
result = year & month & day
end func

END_PROGRAM

PARAMETER Date;
PARAMETER_TITLE Date;
PARAMETER_DESCRIPTION Date;
PARAMETER_TYPE STRING(30);
END

PARAMETER OpenPrice;
PARAMETER_TITLE Open;
PARAMETER_DESCRIPTION Open;
PARAMETER_TYPE NUMERIC(10,4);
END

PARAMETER HighPrice;
PARAMETER_TITLE High;
PARAMETER_DESCRIPTION High;
PARAMETER_TYPE NUMERIC(10,4);
END

PARAMETER LowPrice;
PARAMETER_TITLE Low;
PARAMETER_DESCRIPTION Low;
PARAMETER_TYPE NUMERIC(10,4);
END

PARAMETER ClosePrice;
PARAMETER_TITLE Close;
PARAMETER_DESCRIPTION Close;
PARAMETER_TYPE NUMERIC(10,4);
END

PARAMETER Volume;
PARAMETER_TITLE Volume;
PARAMETER_DESCRIPTION Volume;
PARAMETER_TYPE NUMERIC(10,0);
END

END_PORTFOLIO_EX




1 Комментарий
  • Тимоха
    20 октября 2019, 02:46
    нифига не понял, ну да и ладно. Я не в первый раз тупой, мне порой бывает проще послать, чем вежливо разговаривать. Могу ошибаться, сори.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн