Суть скрипта — отслеживать резкие изменения цены.
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
ссылка на скрипт