Доброго времени суток.
Написал коротенький скрипт, который в квике 8.0.5.2 (демка) не работает совсем.
Когда решил проверить где косяк и вставил мессаги по коду, то все заработало.
Опытным путем выяснил, что когда в блоке есть message, то он работает (например функция отправки транзакций). Как только удалил, перестает работать.
Это прикол какой то или я дурак?
Полный код.
Код |
---|
--/*НАСТРАИВАЕМЫЕ ПАРАМЕТРЫ*/
ACCOUNT = 'SPBFUT00419'; -- Идентификатор счета
CLASS_CODE = 'SPBFUT'; -- Код класса
SEC_CODE = 'SRU9'; -- Код бумаги
INTERVAL = INTERVAL_M1; -- Таймфрейм графика
--/*РАБОЧИЕ ПЕРЕМЕННЫЕ РОБОТА (менять не нужно)*/
SEC_PRICE_STEP = 0; -- ШАГ ЦЕНЫ ИНСТРУМЕНТА
trans_id = os.time(); -- Задает начальный номер ID транзакций
trans_Status = nil; -- Статус текущей транзакции из функции OnTransPeply
trans_result_msg = ''; -- Сообщение по текущей транзакции из функции OnTransPeply
Run = true; -- Флаг поддержания работы бесконечного цикла в main
function OnInit()
-- Получает доступ к свечам графика
DS = CreateDataSource(CLASS_CODE, SEC_CODE, INTERVAL);
--message("start");
--sleep(100);
-- Подписывается на обновления графика
DS:SetEmptyCallback()
-- Получает ШАГ ЦЕНЫ ИНСТРУМЕНТА
SEC_PRICE_STEP = getParamEx(CLASS_CODE, SEC_CODE, "SEC_PRICE_STEP").param_value;
end;
function main()
-- "Бесконечный" цикл
while Run do
--message("hello again =/");
--sleep(1000);
LOBI = DS:Size();
if DS:O(LOBI-1) < DS:C(LOBI-1) then
--message("Trade B");
Trade('B');
elseif DS:C(LOBI-1) > DS:O(LOBI-1) then
--message("Trade S");
Trade('S');
end;
sleep(10);
end;
end;
function OnStop()
Run = false;
end;
-----------------------------
-- ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ --
-----------------------------
function Trade(Type)
--Получает ID транзакции
trans_id = trans_id + 1;
local Price = 0;
--message("trans");
--sleep(1000);
-- Заполняет структуру для отправки транзакции
local Transaction={
['TRANS_ID'] = tostring(trans_id),
['ACTION'] = 'NEW_ORDER',
['CLASSCODE'] = CLASS_CODE,
['SECCODE'] = SEC_CODE,
['OPERATION'] = Type, -- операция ("B" - buy, или "S" - sell)
['TYPE'] = 'M', -- по рынку (MARKET)
['QUANTITY'] = '1', -- количество
['ACCOUNT'] = ACCOUNT,
['PRICE'] = tostring(Price),
['CLIENT_CODE']= '111'
}
-- Отправляет транзакцию
sendTransaction(Transaction);
--message("trans sended");
--sleep(100);
end;
|