Суть скрипта — отслеживать резкие изменения цены.
1. Создайте каталог c:\Qpile — в нем будем хранить старую цену.
Создайте подкаталог c:\Qpile\GO — в нем будем хранить пойманные шпильки.
При наличии шпильки(гэпа) в подкаталоге GO будет создан файл с названием этого фюьчерса, это может быть удобно для дальнейших действий, скажем, можно запускать по планировщику заданий фaйл check.bat, который будет проигрывать мелодию:
@rem check.bat
dir «c:\Qpile\GO» /a-d >nul 2>nul && (
@ECHO Поймали шпильку
%WINDIR%\Media\tada.wav
) || (
@ECHO Ничего не поймали
)
2. Посмотрите код текущих фьючерсов (в таблице фьючерсов добавьте колонку Код бумаги)
Отредактируйте коды инструментов, укажите коды актуальных фьючерсов:
sINSTRUMENT_BRENT=«BRV7» ' код инструмента BRENT
sINSTRUMENT_GOLD=«GDU7» ' код инструмента GOLD
sINSTRUMENT_EURUSD=«EDU7» ' код инструмента EUR/USD
3. Настройте при каких параметрах выводить сообщения о шпильках
'Процент изменения цены при которой выводится оповещение:
sPrc_BRENT = 0.5
sPrc_GOLD = 0.2
sPrc_EURUSD = 0.4
4. Установите задержку обновления цены.
' Задержка:
NEW_GLOBAL(«sDELAY», 5)
(если при запуске скрипта стоит период расчета 10 сек. то значение 5 будет соответствовать примерно минуте).
PORTFOLIO_EX BRENT_RUB; DESCRIPTION Нефть в рублях; CLIENTS_LIST ALL_CLIENTS; FIRMS_LIST ALL_FIRMS; PROGRAM ' =========Пользовательские настройки============= INSTRUMENT_BRENT="BRK7" ' код инструмента BRENT INSTRUMENT_USDRUB="USD000UTSTOM" ' код инструмента USDRUB_TOM CLASSCODE_FUT="SPBFUT" ' код группы CLASSCODE_ETC="CETS" ' код группы PriceBrent = 0 + GET_PARAM(CLASSCODE_FUT,INSTRUMENT_BRENT, "OFFER") PriceUSDRUB = 0 + GET_PARAM(CLASSCODE_ETC,INSTRUMENT_USDRUB, "OFFER") BRENT_RUB=PriceBrent*PriceUSDRUB ' ===============СЕРВЕРНЫЕ ДАТА И ВРЕМЯ=============== SERVERDATE=GET_INFO_PARAM("TRADEDATE") ' дата сервера в формате DD.MM.YYYY SERVERTIME=GET_INFO_PARAM("SERVERTIME") ' время сервера в формате HH:MM:SS DATETIME(SERVERDATE,SERVERTIME) ' вызов функции даты-времени ' ===============ДАННЫЕ В ТАБЛИЦУ=============== OUTPUT_BRENT=CREATE_MAP() OUTPUT_BRENT=SET_VALUE(OUTPUT_BRENT,"BRENT_RUB" , BRENT_RUB) OUTPUT_BRENT=SET_VALUE(OUTPUT_BRENT,"SERVERTIME" , SERVERTIME) OUTPUT_BRENT=SET_VALUE(OUTPUT_BRENT,"SERVERDATE" , SERVERDATE) OUTPUT_BRENT=SET_VALUE(OUTPUT_BRENT,"INSTRUMENT" , INSTRUMENT_BRENT) DELETE_ALL_ITEMS() ADD_ITEM(1,OUTPUT_BRENT) ' ===============ФУНКЦИИ=============== ' ФУНКЦИЯ СЕРВЕРНЫХ ДАТЫ И ВРЕМЕНИ FUNC DATETIME(FSERVERDATE,FSERVERTIME) CURYEAR=SUBSTR(FSERVERDATE,6,4) ' текущий год в текстовом формате CURMONTH=SUBSTR(FSERVERDATE,3,2) ' текущий месяц в текстовом формате CURDAY=SUBSTR(FSERVERDATE,0,2) ' текущий день в текстовом формате CURDATE=CURYEAR & CURMONTH & CURDAY ' дата в текстовом формате CURHOUR=SUBSTR(FSERVERTIME,0,2) ' текущие часы в текстовом формате CURMIN=SUBSTR(FSERVERTIME,3,2) ' текущие минуты в текстовом формате CURSEC=SUBSTR(FSERVERTIME,6,2) ' текущие секунды в текстовом формате CURTIME=CURHOUR & CURMIN & CURSEC ' время в текстовом формате END FUNC END_PROGRAM PARAMETER SERVERDATE; PARAMETER_TITLE Дата; PARAMETER_DESCRIPTION Дата; PARAMETER_TYPE STRING(10); END PARAMETER SERVERTIME; PARAMETER_TITLE Время; PARAMETER_DESCRIPTION Время; PARAMETER_TYPE STRING(10); END PARAMETER BRENT_RUB; PARAMETER_TITLE Нефть (руб.); PARAMETER_DESCRIPTION Нефть (руб.); PARAMETER_TYPE STRING(10); END END_PORTFOLIO_EXссылка на скрипт