Подскажите как грамотно подписаться в одном скрипте на два таймфрейма?
Код
rsi_tf=INTERVAL_M5
mov_tf=INTERVAL_M1
Код
function main()
for key,sec in pairs(fut_list) do
DataSource(class,sec,rsi_tf)
DataSource(class,sec,mov_tf)
end
end
Код
function mycallbackforallstocks(class,sec,index)
end
function DataSource(class,sec,interval)
ds[sec] = CreateDataSource(class,sec,interval)
ds[sec]:SetUpdateCallback(function(...) mycallbackforallstocks(class,sec,...) end)
return ds[sec]
end
Добрый день. Брокер Открытие. Торгует робот на споте. Завёл себе ещё один счёт на ММВБ (второй), брокер добавил его в КВИК. Старый робот начал глючить, хотя в нём не вносились никакие изменения. Ошибка Неверный код клиента. Сломал голову. Прошу подсказать что случилось Вот строка отправки заявок: conditions=="LONG"
function sendLimit(class,security,direction,price,volume,account,client_code,comment,execution_condition,expire_date,market_maker)
if string_find(FUT_OPT_CLASSES,class)~=nil then
return sendLimitFO(class,security,direction,price,volume,account,comment,execution_condition,expire_date,market_maker)
else
return sendLimitSpot(class,security,direction,price,volume,account,client_code,comment,market_maker)
end
end
Код
function sendLimitSpot(class,security,direction,price,volume,account,client_code,comment,market_maker)
-- отправка лимитированной заявки
-- все параметры кроме кода клиента и коментария должны быть не нил
-- ВАЖНО! цена должна быть стрингом с количеством знаков после точки для данной бумаги
-- если код клиента нил - подлставляем счет
-- market_maker - признак заявки маркет-мейкера. true\false
-- Данная функция возвращает 2 параметра
-- 1. ID присвоенный транзакции либо nil если транзакция отвергнута на уровне сервера Квик
-- 2. Ответное сообщение сервера Квик либо строку с параметрами транзакции
if (class==nil or security==nil or direction==nil or price==nil or volume==nil or account==nil) then
return nil,"QL.sendLimitSpot(): Can`t send order. Nil parameters."
end
local trans_id=random_max()
local transaction={
["TRANS_ID"]=tostring(trans_id),
["ACTION"]="NEW_ORDER",
["CLASSCODE"]=class,
["SECCODE"]=security,
["OPERATION"]=direction,
["QUANTITY"]=string_format("%d",tostring(volume)),
["PRICE"]=toPrice(security,price,class),
["ACCOUNT"]=tostring(account)
}
if client_code==nil then
transaction.client_code=tostring(account)
else
transaction.client_code=tostring(client_code)
end
if comment~=nil then
transaction.client_code=string_sub(transaction.client_code..'/'..tostring(comment),0,20)
else
transaction.client_code=string_sub(transaction.client_code..'/QL',0,20)
end
if market_maker~=nil and market_maker then
transaction['MARKET_MAKER_ORDER']='YES'
end
local res=sendTransaction(transaction)
if res~="" then
return nil, "QL.sendLimitSpot():"..res
else
return trans_id, "QL.sendLimitSpot(): Limit order sended sucesfully. Class="..class.." Sec="..security.." Dir="..direction.." Price="..price.." Vol="..volume.." Acc="..account.." Trans_id="..trans_id
end
end
Прошу помочь с задачей, казалось бы лёгкой, но не для моих слабых навыков.
Нужно найти ближайший фьючерс из всех имеющихся фьючерсов для данного актива. Например акция Газпрома. Нужно найти ближайший фьючерс на Газпром по критерию: минимальное количество дней до экспирации.
Вот что я уже умею: Количество дней до экспирации: days_till_exp=getParamEx("SPBFUT",fut_code,"DAYS_TO_MAT_DATE").param_value Вытянуть базовый актив из фьючерса: ba=getParamEx("SPBFUT",fut_code,"OPTIONBASE").param_image Базовый актив будет одинаковый у фьючерсов на одинаковый инструмент. А вот как перебирать поля Текущей таблицы я так и не придумал. Заранее спасибо за подсказки.