Всем доброго дня, как то пару мес.назад обновил QUIK с 8.3.2.5 (насколько я помню) до 9.4.2.1, у меня есть небольшой вспомогательный Луа скрипт на луа 5.3, до обновления он работал идеально, создавал транзакции на покупку/ продажу без каких либо проблем, как обновил квик до 9.4.2.1 в нём есс-но выбрал в Настройках - lua скрипты версию lua 5.3.5 для скрпитов индикаторов и скриптов пользователей, и прежние индикаторы на луа и мой скрипт работают норм но до одного момента -
Когда возникает необходимость создать транзакцию (выставить заявку фактически) на покупку или продажу, QUIK выдаёт ошибку:
Код
Данный инструмент запрещен для операции шорт
Т.е. это не результат транзакции, сама транзакция даже не принимается квиком, т.е. пытаюсь скажем продать имеющийся у меня в наличии торговый инструмент примерно таким образом:
TRANS_ID="1", EXPIRY_DATE="TODAY"}) [CODE][/CODE]Все без изменений, как и раньше до обновления, раньше всё так работало а сейчас нет, причем вручную могу такую заявку выставить - квик её принимает и сделка происходит, а через скрипт - нет
Всем доброго дня, обновил Квик с 8.7.1.3 до 9.4, перестали работать внешние индикаторы, это которые записываются в папку LuaIndicators в папке квика, подскажите где взять индикаторы для нового 9.4 квика, также я смотрю в ново квике перешли на Луа версии 5.4 - будут ли в нём работать скрипты на прежнем Луа 5.3 ? Если нет то что потребуется в них переделать?
Всем доброго дня, уважаемые разработчики а также все остальные помогите! как известно начиная с версии 8.3.2.5 в квике версия луа повысилась до луа 5.3 В связи с этим возникла необходимость перекомпилировать библиотечки luasocket используемые мной для отправки эл.почты в скрипте, скачал исходники - https://github.com/diegonehab/luasocket/tree/master Там уже готовый проект для MS Visual Studio даже есть, открыл его в MS VC 2019 осталось только указать путь к исходникам луа 5.3 и либе - lua53.lib, все это скачал отсюда - https://sourceforge.net/projects/luabinaries/files/5.3.5/Windows%20Libraries/Static/lua-5.3.5_Win64_... Проект скомпилился отлично, взял скомпиленные библиотечки и - \socket\core.dll и \mime\core.dll - закинул их в папку в которой их ищет скрипт из квика по пути указанному в package.cpath, запускаю скрипт и он мне выкидывает ошибки как на скрине. Т.е. пути все теже и в скрипте все тоже самое как и в предыдущем квике 8.3.2.4 с луа 5.1 и там библиотечки от луасокет отлично загружались и работали, теперь же неработают, но тут еще проблема видимо в том что разработчик luasocket`ов переписал свой код, я уже как то раньше скачивал и компилил его исходники и сейчас я заметил что после компиляции его dll`ки имеют другие свойства, например раньше свойства его длл выглядели как на картинках раньше.jpg и раньше1.jpg - как видно dll имели зависимость от lua53.dll (это легко поправлялось на qlua.dll) и было больше экспортируемых функций, сейчас же свойства его dll имеют вид как на картинках - Сейчас.jpg и Сейчас1.jpg - как видно теперь нет зависимости от lua53.dll, что странно т.к. lua53.lib с свойствах проекта я указывал до компиляции, и экспортируемая функция только одна Может поможет кто или скомпилить лусокеты правильно или уже готовые где нидудь есть для луа 5.3х64?
Всем доброго дня! Уважаемые разработчики а также все остальные! Подскажите есть ли новые внешние индикаторы на луа 5.3? Это которые подключается методом их закидывания их в папку LuaIndicators Довольно долго не следил за этой темой и не обновлял свой Quik 8.3.2.4, как всем известно от версии 8.3.2.4 и младше в квике был Луа версии 5.1, начиная с 8.3.2.5 и старше в квике теперь Луа 5.3, прежние внешние индикаторы на Луа 5.1 теперь не работают, вы как то раньше охотно делились файликом Indicators.zip с индикаторами, поделитесь таким же с индикаторами на луа 5.3?
Здравствуйте, в дополнение к предыдущей теме, попытался получить нужные мне параметры по торговым инструментам, такие как "Оборот", "ГО продавца" и "ГО покупателя" с помощью данной функции - getParamEx, но встает вопрос о её использовании - Формат вызова: TABLE getParamEx (STRING class_code, STRING sec_code, STRING param_name) В частности параметр param_name - что за параметр и как задается? это должно быть в точности название параметра как в таблице? Из мануала следует 3.12.3 Особенности получения значений Таблицы текущих торгов Получение значений параметров Таблицы текущих торгов выполняется функцией getParamEx() или getParamEx2(). Актуальные значения параметров можно получить, если выполнен заказ данных. Способы выполнения заказа данных: • Вручную, выбрав пункт меню Рабочего места QUIK Система / Заказ данных / Поток котировок... и указав необходимые параметры и инструменты на классе; • При включенной настройке Рабочего места QUIK «Исходя из настроек открытых пользователем таблиц» (меню Система / Настройки / Основные настройки..., раздел «Программа» / «Получение данных») и открытой Таблице текущих торгов с необходимыми параметрами и инструментами на классе; Открываю Система / Заказ данных / Поток котировок... и указав необходимые параметры и инструменты на классе; Выбираю соответственно нужные мне FORTS:Фьючерсы, ставлю галочку на "Фильтр инструментов" выбираю там все инструменты( На всякий случай)
и так же ставлю галочку в "Фильтр параметров" и выбираю там все параметры
Так что получается - параметр param_name функции getParamEx должен в точности называться как и в этом окне? Нужный мне параметр получается - "Оборот в деньгах" получется что в данном случае функцию мне надо использовать в виде:getParamEx( "SPBFUT", "RIH0","Оборот в деньгах") Пробовал - результаты одни нули, хотя в таблице данный параметр по этому инструменту совсем не нулевой, в вашем мануале довольно плохо освещено использование этой функции и особенно использование данного параметра, из разряда "догадайся сам"
Здравствуйте, возможно такие темы тут уже обсуждались и не раз, но все же чтото я несовсем понял как это сделать, вопрос такой - как мне получить в скрипте любой нужный параметр имеющий название на русском языке из любой такой же таблицы с название на русском? Пример:
Вот мне надо из этой таблицы для инструмента с нужным кодом, к примеру RIH0 получить такие параметры как Оборот, ГО покупателя и ГО продавца, т.к. в функции getSecurityInfo эти параметры по инструменту не получить Извиняюсьза повтор темы, какие то непонятные глюки с её созданием произошли
Добрый день, зарегистрировался на демо-доступ на все рынки - фондовый срочный и валютный, но на данный момент интересует срочный рынок, т.е. фьючерсы, код клиента 10278, открываю квик, полез на вкладку "Фьючерсы" смотрю - в таблице текущих торгов по фьючерсам нет никакой активности вообще, список фьючерсов есть но никаких цифирок напротив них нет
Полез в редактирование таблицы - но там возможность добавить в таблицу только Акции 1го уровня и инструменты торговли валютой и всё
так где же фьючерсы? Что со срочным рынком?
В настройках счетов клиентский счет SPBFUT0006m добавлен в счета депо
Здравствуйте, вдруг задался глупым вопросом, но всё же, чем самому гадать лучше думаю спросить - время свечи, как на графике так и возвращаемое параметром T ( ds:T(index) ) в Луа скрипте - это что за время - время начала формирования свечи или конца?
Здравствуйте, мне вот стало интересно - если произошел разрыв связи КВИКа с сервером, вызывается функция OnDisconnected, при восстановлении связи вызывается функция OnConnected и после нее работа скрипта возобновляется, если он написан достаточно правильно чтобы не отваливаться из за разрыва связи конечно, так вот в какое место скрипта переходит его выполнение после возобновления связи КВИКа и вызова функции OnConnected? я так понимаю что ни в какое место не переходит а скрипт просто работал вхолостую, если в нём такое было предусмотренно - не выполнять команды которые чреваты остановкой скрипта при отсутствии связи, и при возобновлении связи просто все начнет выполняться где предусмотрена проверка isConnected, или же функция OnConnected передаст управление скрипта в какую либо из предусмотренных функций типа main()? И если я в OnConnected сам пропишу переход к функции main() или OnInit() ? Потому как хочу чтобы скрипт после восстановления связи начал работу с самого начала, правильно ли так сделать?
Здравствуйте, написал для своего скрипта индикатор вычисления полос Боллинджера, опираясь на предыдущее написание написание индикатора AD которое я обсуждал с вами тут https://forum.quik.ru/messages/forum10/message37868/topic4504/#message37868 тогда у меня возникли вопросы - почему мои показания AD не совпадают с вашими показаниями AD из AD.lua на графиках, эти вопросы были решены, а именно вычисление AD (как и практически всех ваших индикаторов) идут у вас начиная с самой 1ой свечи которая получается с биржи и до последней, т.е. за весь диапазон, свой скрипт я поправил после чего мои показания AD стали идти точь в точь с вашими, но при однако же значения вычисляемых полос Боллинджера опять стали несовпадать хоть в этот раз я сразу написал их вычисление с самого начала диапазона как и у вас, причем средняя линия у меня везде совпадает с вашей но несовпадают верхняя и нижняя полосы, т.е. отклонения полос, стал изучать ваш скрипт BB.lua в итоге вижу что у вас полосы боллинджера вычисляются по какой то совсем другой формуле а не по оригинальной, потому и не совпадение, а именно сама формула в целом у вас стандартная -
1. Средняя линия ML (обычное скользящее среднее) рассчитывается по формуле:
ML = SUM (CLOSE, N) / N = SMA (CLOSE, N),
где: — SUM (…, N) — сумма за N периодов; — CLOSE — цена закрытия; — N — количество периодов, используемых для расчета; — SMA — простая скользящая средняя.
2. Верхняя линия TL (средняя линия ML, смещенная вверх на определенное число D стандартных отклонений StdDev) рассчитывается по формуле:
TL = ML + (D * StdDev),
3. Нижняя линия BL (средняя линия ML, смещенная вниз на число стандартных D отклонений StdDev) рассчитывается по формуле:
BL = ML — (D * StdDev).
StdDev - среднеквадратичное отклонение
Далее же - везде где только можно нагуглить чтолибо о полосах Боллинджера везде формула расчета среднеквадратичного отклонения
проанализировав же ваш скрипт BB.lua, а именно место вычисления отклонения от средней линии в функции SD ():
Код
function SD() --Standard Deviation ("SD")
local SD_MA=MA()
local sum = {}
local sum2 = {}
local it = {p=0, l=0}
return function (I, Fsettings, ds)
local Fsettings=(Fsettings or {})
local P = (Fsettings.Period or 20)
local M = (Fsettings.Metod or SMA)
local VT = (Fsettings.VType or CLOSE)
if (P>0) then
if I == 1 then
sum = {}
sum2 = {}
it = {p=0, l=0}
end
local t_ma = SD_MA(I, {Period=P, Metod = M, VType=VT}, ds)
if CandleExist(I,ds) then
if I~=it.p then it={p=I, l=it.l+1} end
local Ip,Ipp,Ippp = Squeeze(it.l,P),Squeeze(it.l-1,P),Squeeze(it.l-P,P)
sum[Ip]=(sum[Ipp] or 0) + GetValueEX(it.p, VT, ds)
sum2[Ip]=(sum2[Ipp] or 0) + GetValueEX(it.p, VT, ds)^2
if it.l >= P and t_ma then
return math.sqrt((sum2[Ip]-(sum2[Ippp] or 0) - 2*t_ma*(sum[Ip]-(sum[Ippp] or 0)) + P*(t_ma^2)) / P)
end
end
end
return nil
end
end
Из которого непосредственно само вычисление отклонения:
Код
sum[Ip]=(sum[Ipp] or 0) + GetValueEX(it.p, VT, ds)
sum2[Ip]=(sum2[Ipp] or 0) + GetValueEX(it.p, VT, ds)^2
И итоговая формула вычисления:
math.sqrt((sum2[Ip]-(sum2[Ippp] or 0) - 2*t_ma*(sum[Ip]-(sum[Ippp] or 0)) + P*(t_ma^2)) / P)
Я понял что ваша формула имеет иной вид, математически её можно записать примерно так:
соответственно - формула другая, дает другие значения ( не совпадающие с оригинальной формулой) в итоге значения верхней и нижней полос отличаются
Хотелось бы услышать ваши обьяснения - что это за формула, откуда она взята, чем обьясняется её использование, для того чтобы лучше понимать её смысл и смысл использования полос Боллинджера вашего вида.
Кстати нехитрым путём я подправил ваш скрипт чтобы он рассчитывал отклонение по стандартной формуле:
Код
function SD() --Standard Deviation ("SD")
local SD_MA=MA()
local sum = {}
local sum2 = {}
local sum3 = {}
local it = {p=0, l=0}
return function (I, Fsettings, ds)
local Fsettings=(Fsettings or {})
local P = (Fsettings.Period or 20)
local M = (Fsettings.Metod or SMA)
local VT = (Fsettings.VType or CLOSE)
if (P>0) then
if I == 1 then
sum = {}
it = {p=0, l=0}
end
local t_ma = SD_MA(I, {Period=P, Metod = M, VType=VT}, ds)
if CandleExist(I,ds) then
if I~=it.p then it={p=I, l=it.l+1} end
local Ip,Ipp,Ippp = Squeeze(it.l,P),Squeeze(it.l-1,P),Squeeze(it.l-P,P)
sum[Ip]=(sum[Ipp] or 0)+(GetValueEX(it.p, VT, ds)-(t_ma or 0))^2
if it.l >= P and t_ma then
return = math.sqrt((sum[Ip]-(sum[Ippp] or 0))/P)
end
end
end
return nil
end
end
И этот индикатор стал давать значения (и рисовать на графике линии соответственно) в точности совпадаемые с рассчетными в скрипте по оригинальной формуле, только лишь что из за этого места
Код
sum[Ip]=(sum[Ipp] or 0)+(GetValueEX(it.p, VT, ds)-(t_ma or 0))^2
Значения полос неправильны в самом начале диапазона на нескольких самых первых свечах, это можно поправить но нет смысла поскольку те давние свечи и значения индикаторов по ним уже никому ненужны а далее же на всем остальном диапазоне расчет идет правильный
И что интересно - мои, т.е. оригинальные полосы Боллинджера, на всём графике во многом совпадают с полосами вычисляемыми вашим скриптом но только в местах где свечи начинают убывать, т.е. снижаться, ваши полосы резко сужаются следуя за свечами, оригинальные же полосы сужаются плавно и неспеша, что исключает вероятность ложных пробоев, зато после окончательного сужения полосы совпадают и с началом нового расширения расширяются одинаково так же полностью совпадая дос следующего сужения и т.д. В общем хотелось бы услышать обьяснение по поводу вашей формулы расчета
Всех приветствую, опять вопрос по индикаторам, стал изучать скрипт индикатора Accumulation/Distribution AD.lua из дополнительно предоставленных индикаторных скриптов для графиков любезно предоставленных компанией ARQATECH https://pastebin.com/ZCjRxVd9 Вот подскажите пожалуйста, функция OnCalculate, из описания - функция вызывается при поступлении новой или изменении существующей свечки в источнике данных для индикатора, возвращает два аргумента - один из них координата x другой координата y я так понимаю, т.е. первый - местоположение свечки в рядяах свечей, второй фактически само значение индикатора
Я запрограммировал в своем скрипте получение индикатора AD непосредственно из значений свечей и в итоге мои значения AD не такие как показывает ваш индикатор на графике, причем что как у меня так и у вас сама формула расчета AD одинаковая -
У вас она в скрипте выглядит как:
function AD() --Accumulation/Distribution ("AD") local tmp = {pp=nil, p=nil} local it = {p=0, l=0} return function (I, Fsettings, ds) if I == 1 then tmp = {pp=nil, p=nil} it = {p=0, l=0} end if CandleExist(I,ds) then if I~=it.p then it={p=I, l=it.l+1} tmp.pp = tmp.p end local CLH=(2*GetValueEX(it.p,CLOSE,ds)-GetValueEX(it.p,HIGH,ds) - GetValueEX(it.p,LOW,ds))*GetValueEX(it.p,VOLUME,ds) local HL=GetValueEX(it.p,HIGH,ds) - GetValueEX(it.p,LOW,ds) if HL==0 then tmp.p = tmp.pp or 0 else tmp.p = CLH/HL + (tmp.pp or 0) end if it.l==1 then if HL == 0 then return 0 else return CLH/HL end else return tmp.p end end return nil end end
((2*datatb:C(candle)-datatb:L(candle))-(datatb:H(candle)))/(datatb:H(candle)-datatb:L(candle)))*datatb:V(candle) Где datatb - таблица с получаемыми значениями свечей Так вот по вашему индикатору AD значения получаются какие то совсем астрономические - скажем для образца возьмем график ИнтерРао с дневным периодом - У вас у меня 08.05.19 6006783,524897 -129967.14285714 07.05.19 6084763,810612 -9633.2300884955 Ну и так далее
Ну и соответственно рассчитываемые по индикатору AD значения осциллятора Чайкина тоже какие то совсем другие, хотя его формула и у меня и у вас тоже абсолютно одинаковая
У вас у меня 08.05.19 11650,613 -18427.413178682 07.05.19 7774,461856 -19034.307618411 Ну и так далее
Раз формулы одинаковые и значения свечей тоже то значит полученные из формулы значения в вашем скрипте еще и после формулы зачем то дополнительно меняются изучив скрипт AD.lua не трудно догадатся что изменяются они в функции OnCalculate в функции ConvertValue(Settings, func(Index, Settings)) где func(Index, Settings) это переименованная в Init функция AD():
function Init() func = AD() return #Settings.line end
function OnCalculate(Index) local Out = ConvertValue(Settings, func(Index, Settings)) local HL = tonumber(Settings.Horizontal_line) if Out then if Out > (HL or 0) then return HL,Out,nil else return HL,nil,Out end else return HL,nil,nil end end
И вот сама функция ConvertValue
function ConvertValue(T,...) local function r(V, R) if R and string.upper®== "ON" then R=0 end if V and tonumber® then if V >= 0 then return math.floor(V * 10^R + 0.5) / 10^R else return math.ceil(V * 10^R - 0.5) / 10^R end else return V end end if arg.n > 0 then for i = 1, arg.n do arg[i]=arg[i] and r(arg[i] * ((T and T.Multiply) or 1), (T and T.Round) or "off") end return unpack(arg) else return nil end end
Будьте любезны обьясните пожалуйста что она делает и зачем? Зачем она дополнительно меняет уже готовое значение функции AD?
Здравствуйте, подскажите пожалуйста возможно ли в свой скрипт получить значения индикатора из открытого графика? (я так понимаю что график должен быть открыт и нужный индикатор на него должен быть добавлен) Кое что тут есть https://forum.quik.ru/messages/forum13/message5399/topic564/#message5399
Есть два пути 1) в самом индикаторе брать данные с другого графика по Идентификатору. Таким образом индикатор сможет использовать любой другой график с указанным Идентификатором. 2) в самом индикаторе добавить код другого индикатора как функцию и брать значения из нее.
Не совсем пойму как это делается, можно поподробнее?
Здравствуйте, я обслуживаюсь у брокера который использует уже несколько подустаревшую версию квика - 7.19, в этой версии квик выдает ошибку при создании копии графика, я как то обращался сюда на форум по этому вопросу, мне тут подсказали что необязательно использовать квик от брокера, я намек понял - скачал с arqatech.com самый последний квик - 7.27 установил и перекинул в него все что касается авторизации квика с сервером моего брокера - файлы ini txk и еще некоторые его dll, вообщем все работает норм но время от времени выскакивают мессиджи: "Недостаточно лицензий", выскакивает как правило при запуске квика, но иногда невыскакивает, и в процессе работы иногда https://cloud.mail.ru/public/Ka27%2Fb8ZiqJWwi "Нарушен порядок рассылки информационного сообщения" обычно выскакивает в процессе работы https://cloud.mail.ru/public/KJmh%2F2hUjVNsYi При работе оригинального брокерского квика - 7.19 скачанного с его сайта таких мессиджей не возникало Вроде все работает нормально, эти сообщения не мешают работать но все таки хотелось бы знать что они значат и возможно ли их исправить
Здравствуйте, помогите, QUIK не выводит таблицы по DDE в Excel - в контекстном меню нажимаю "Вывод через DDE сервер", при незаполненных полях QUIK сам создает новую книгу и лист в EXCEL, при заполненных выбирает их но результат одинаков при попытке вывести данные - выскакивает ошибка -
Не удалось установить DDE соединение с сервером 'excel'. Либо не запущен 'C:\QUIK\Книга2.xlsx', либо в него не загружен лист 'Таблица сделок'. Таблица 'Таблица сделок'
Здравствуйте господа разработчики, в пятницу вечером, 08.03.2019, примерно начиная с 17.30 по моск.времени у меня в квике при работе с брокером Сбербанком случилась следующая неприятность: Квик весь день работал нормально - с утра законнектился и пошел работать, по некоторым своим соображениям я захотел перезапустить квик после чего при попытке коннекта получил следующую ошибку:
Application error: Net error: Удаленный хост принудительно разорвал существующее подключение. Сервер по указанным сетевому адресу и порту не обнаружен. Возможно, Вы пытаетесь установить соединение в нерабочее время, или же указываете неверные сетевой адрес и порт. https://cloud.mail.ru/public/3SDx%2F2JEukHgbA
причем после повторной попытки коннекта квик законнектился, потом почти сразу мне понадобилось еще раз перезапустить квик и после это эту ошибку при попытке коннекта я уже получал непрерывно - в ответ на каждую ошибку, пробовал законнектится много много раз, вплоть до окончания торговой сессии - все бесполезно одна и та же ошибка, даже попробовал из скачанного дистрибутива от Сбербанка установить новый чистый квик в новую папку - и он при коннекте стал упорно выдавать ту же ошибку, т.е. проблема заключалась только на стороне серверной части Квика у Сбербанка, в итоге был потерян час драгоценного времени, возможность выполнить важную работу, сегодня же утром 09.03.19 попробовал законнектится, в старой копии Квика, не в новой, и все нормально законнектилось с первого раза без всяких ошибок, еще сразу же как только проблема возникла гуглил - оказывается такая проблема не нова и ей уже много лет, и пока решения нет так как её решение зависит от вас, вот например https://forum.finam.ru/posts/t12966-Kvik-ne-mozhe-zakonnektit-sjaКлиенты Финам немогли зайти через Квик зато могли зайти через Транзак
Подскажите пожалуйста как можно получить значение УДС? Как я вижу в функции getPortfolioInfo есть возвращаемый параметр fundslevel но что странно он у меня все время 9.99 сколько бы при этом ни был реальный УДС в таблице клиентского портфеля, причем что тоже странно что этот параметр не описан в руководстве по Qlua, можно конечно рассчитать УДС самому по формуле УДС = (Стоимость портфеля - Мин.маржа)/(Нач.маржа – Мин.маржа) но для этого надо получить стоимость портфеля, мин.маржу, нач.маржу а они все у меня в функции getPortfolioInfo имеют значения 0, хотя опять же в терминале в таблице клиентского портфеля они совсем не 0 Вообще getPortfolioInfo все время мне возвращает вот только такие значения: (У одного из известных брокеров, не демо-счет)
Всех приветствую, подскажите пожалуйста - возможно ли чтобы сохранить настройки графика в шаблон со всеми имеющимися на нем индикаторами и их настройками а потом чтобы этот шаблон по умолчанию применялся к новым открываемым графикам, вместе с индикаторами? Такая возможность сохранения текущих настроек графика в шаблон имеется, я её применял, но сохраненный шаблон применяется к новым графикам без индикаторов, только временной интервал и еще какие то мелочи, раскраска линий вроде и отметки сделок заявок и пр.на графике, а это очень плохо поскольку заново на каждом графике открывать по новой кучу всех своих используемых индикаторов и редактировать все их настройки это как то совсем не хорошо
Всем доброго времени суток, подскажите плиз как можно узнать тип произошедшей сделки в скрипте, в частности в функции ontrade, была ли это сделка по корткой позиции ( шорт покупка или продажа) , т.е. с использованием взятых в долг ценных бумаг, или сделка по длинной позиции (лонг покупка или продажа), это конечно можно сделать если задать скрипту присваивать при совершении транзакции соответствующий идентификатор этой транзакции и по этому идентификатору узнавать её в ontrade, но если я совершаю сделку вручную, а не скрипт, а скрипт при этом работает в фоне и записывает мои сделки, тогда я немогу обьяснить скрипту какого типа это была сделка, но надо чтобы он как то сам распознал что это была за сделка, что то ненашел в описаниях таблиц depo_limits, trades, orders ничего чтобы узнать что это был за тип сделки кроме side_qualifier в таблице возвращаемой ontrade но ним еще не все ясно, помоему он у меня все время "0" при любой сделке
Всем доброго времени суток, подскажите кто знает, возможно ли в QUIKе сделать две вещи: 1. Автоматическое возобновление работы скрипта после разрыва связи с сервером и ее восстановления квиком, а то бывает рвется связь, скрипт останавливается - по той причине что в в этот момент не смог получить какие нибудь данные с сервера, но скрипт то об этом не знает а просто данные которые он запрашивал по причине их неполучения с сервера имеют значение nil, в результате из за этого скрипт отваливается с ошибкой, и после реконнекта квика с сервером он уже сам не запустится, и квик его тоже не собирается запускать, а пихать через строчку if isconnected()==1 then .... тоже не дело, в цикле main() я то такую строчку сделал но вот если команды внутри цикла уже начали выполнятся то обрыв связи и отвал скрипта. 2. Возможно ли приостанавливать скрипт по временным условиям (нерабочие часы и дни биржи) и также возобновлять его работу по этим условиям (наступление времени торговой сессии)
Вообще я такую временную приостановку в цикле main() сделал
while isConnected()~=1 or нерабочее время do
sleep (60000)
end
где нерабочее время - функция путем нехитрых вычислений и системного времени выдающая true или false но в итоге в нерабочее время весь квик просто зависает с курсором в виде крутящегося кругляшка а на следующий день при наступлении рабочего времени не развисает функция времени у меня 100% рабочая много раз проверял багов там быть не может
Всех приветствую, подскажите - средствами Qlua можно ли узнать по инструменту возможно ли по нему открытие коротких позиций, т.е. маржинальная торговля? Ни в описании по Qlua ни в самом квике, вручную, я чтото ненашел ничего чтобы посмотреть эту информацию по инструменту, получается надо у своего брокера узнавать какие он предоставляет в долг, составлять такой список и держать его перед глазами? ))))
Всех приветствую, подскажите - читаю полученные результаты при выполнении заявки в функции OnTransReply ( ) там есть поле flags, в таблице возвращаемой этой функцией вот я что то его не пойму, приходят например вот такие вот значения: flags = 2359297 flags = 2490369 если перевести в двоичное значение получаю: 1001000000000000000001 1001100000000000000001
Но в руководстве по qlua ничего не сказано о значении битов для флагов для таблиц заявки, заявки на внебиржевые сделки, сделки, сделки для исполнения выше 9го бита, там можно прочитатать следующее:
бит 0 (0x1) Заявка активна, иначе – не активна бит 1 (0x2) Заявка снята. Если флаг не установлен и значение бита «0» равно «0», то заявка исполнена бит 2 (0x4) Заявка на продажу, иначе – на покупку. Данный флаг для сделок и сделок для исполнения определяет направление сделки (BUY/SELL) бит 3 (0x8) Заявка лимитированная, иначе – рыночная бит 4 (0x10) Разрешить / запретить сделки по разным ценам бит 5 (0x20) Исполнить заявку немедленно или снять (FILL OR KILL) бит 6 (0x40) Заявка маркет-мейкера. Для адресных заявок – заявка отправлена Флаг установлен Значение контрагенту бит 7 (0x80) Для адресных заявок – заявка получена от контрагента бит 8 (0x100) Снять остаток бит 9 (0x200) Айсберг-заявка
И все, в частности мне надо узнать из таблицы OnTransReply ( ) как выполнена заявка - полностью или частично, т.е. весь заявленный в исходной заявке куплен/продан или же куплена часть а часть висит в качестве активной заявки, или же вообще вся заявка зависла в качестве активной, по полю status это не узнать т.к. если заявка вообще принята торговой системой, т.е. не отвергнута, то возвращается status = 3 и все
Всем доброго дня, подскажите кто знает - на демо доступе от разработчиков QUIK функция getPortfolioInfo все время возвращает nil, свои firm_id и client_code указываю правильно, у меня никаких ошибок быть не может, при точно таком же использовании на демо-счетах других брокеров эта функция у меня все норм работает, при точно таком же использовании, без всяких различий в скрипте, ну только что firm_id и client_code там другой конечно же, я бы другими демо-счетами и пользовался поэтому но только вот проблема в том что почти все остальные демо-счета работают в режиме торгов приближенных к реальным - т.е. доступ к торгам по времени в соответствии с реальной работой биржи - т.е. только в рабочие дни с 10:00 и т.д. и только у разрабов QUIKа можно работать каждый день и почти круглосуточно
Всех приветствую, подскажите с помощью функции CreateDataSource - возможно ли получать данные о свечах любых доступных торговых инструментов неоткрывая их график? А проблема такова что я использовал данную функцию в скрипте и обнаружил что для того чтобы эта функция получала данные по инструменту его график должен быть открыт, если график неоткрыт то функция ничего не получает В Система/Настройки/Основные настройки/Программа-получение данных Сначала стояла опция - "Исходя из из настроек открытых пользователем таблиц" Я ее переключил в - "С учетом настроек, выбранных через пункт меню "Система/Заказ данных/Поток котировок" и поставил галочку "Обновлять все данные после расширения списка получаемых инструментов и параметров" Там, допустим меня интересуют акции, включил фильтр инструментов и там добавил в список получаемых ценных бумаг все имеющиеся доступными акции Но ничего не изменилось - CreateDataSource по прежнему получает данные с открытых графиков, даже терминал перезапустил - также не помогло, пробовал и Система/Заказ данных/Перезаказать данные, со всеми галочками, перезапустил терминал - ничего не изменилось
Всех приветствую, подскажите пожалуйста как рассчитать RSI
Читаю вот такое: Расчёт индикатора RSI Формула RSI следующая: RSI = 100 - [100/1 + RS], где RS - среднее значение положительных изменений цены закрытия за определенное число дней,
деленное на среднее значение отрицательных изменений цены закрытия за то же число дней. RS = средний прирост (average gain) / среднее падение (average loss)
где RS - среднее значение положительных изменений цены закрытия за определенное число дней, деленное на среднее значение отрицательных изменений цены закрытия за то же число дней. Скажем, чтобы рассчитать 9-дневный индикатор RSI, сперва надо просуммировать все ценовые приращения (в пунктах) в дни роста за 9-дневный период и разделить сумму на девять. Затем просуммировать все отрицательные изменения цены, отмеченные в дни снижения за 9-дневный период, и разделить сумму на девять. После этого найти относительную силу (RS) путем деления среднего положительного ценового изменения на среднее отрицательное. И наконец, подставить значение RS в формулу RSI и получить осциллятор с амплитудой колебаний от нуля до 100.
Вот не совсем пойму в итоге - так как же рассчитать RS? Скажем за 14 дневный период, получается нужно по свече за день правильно? И как по ним посчитать все ценовые приращения и все отрицательные изменения цены? Что мне суммировать что вычитать?
Здравствуйте, разьясните пожалуйста подробно новичку по Таблице лимитов по денежным средствам, в частности интересует занчение параметров
Входящий остаток, Текущий остаток, Всего, Доступно, Баланс
В частности тренируюсь на демо-счете, накупил акций потом их все продал, теперь у меня в этой таблице такие параметры:Входящий остаток = -25653,35р Текущий остаток = 108974,79р Всего = 108974,79р Доступно = 108974,79р
Баланс = 108974,79р
Какой из этих параметров показывает количество свободных денег оставшихся у меня на счету? Что значит параметр Входящий остаток? Почему он с минусом?
Здравствуйте! Только начал изучать lua по книге Роберто Иерусалимского и у него сразу пошло, без обьяснения, использование неких последовательностей символов в таблицах вроде %q+ или %w+ или %a+ или все тоже самое но без плюса, растолкуйте мне пожалуйста что они значат и что дает добавление знака плюс?