В своей торговле применяю комбинации рыночных и лимитированных заявок, (методику описывал ранее, "Настоящая торговая стратегия." и "US500: Объемы больше, спреды уже!" ). Временами количество одновременно работающих стратегий зашкаливало за сотню и на некоторые из них не хватало денег под выставление заявок, они отключались, иногда ломая логику работы связанных с ней стратегий. В QUIK в таблице «Состояние счета» считается цифра — «Свободно» — свободные средства под заявки, но сходу вытащить ее из Lua у меня не получилось. И пришлось вписать расчет этой величины в робота.
Сегодня предлагаю вашему вниманию доработанный скрипт Fn044.lua (https://yadi.sk/d/O-6JzZdXkOxyow)
в котором реализован расчет свободных средств для заявок на ФОРТС с учетом имеющихся контрактов и заявок.
Один в один вывести не получилось, как смог.
As is, и все такое!
-- fn044set.lua расчет стоимости фьючерсных контрактов в портфеле относительно депозита -- © smart-lab.ru/profile/xxm 08.10.2018 -- торговый счет (из таблицы «Позиции по клиентским счетам (фьючерсы)») account = 'SPBFUT0003f' --положение окна с таблицей. Левый верхний угол в координаты left,top и размеры в width и height. xy = {} xy.left, xy.top, xy.width,xy.height = 0, 232, 722, nil --ширина столбцов таблицы t_width = {12, 6, 10, 8, 10, 10, 9, 7, 6, 11, 10, 11} -- месяц и год исполнения, 2 символа, https://www.moex.com/s205 MonthYear = "Z8" -- код базового актива, 2 символа -- если 4 символа, то переменная "MonthYear" не учитывается SecCodes={ {"MM"}, --контракт на индекс МосБиржи {"Si"}, --руб/доллар FORTS {"SR"}, --Sber FORTS {"LK"}, --контракт на Лукойл {"GZ"}, --контракт на Газпром {"BRX8"}, --контракт на нефть Брент, месяц и год - "X8" {"ED"}, --контракт на ED {"RN"}, --контракт на Роснефть {"GD"}, -- Gold } --Если xy.height == nil, то вычислить ее. --Для разных мониторов коэффициенты (17, 45 и 868 - подобраны эмпирически) будут разными. local height = xy.height or ((#SecCodes + 1)*17 + 45) if height > 868 then height = 868 end xy.height = height