Анатолий (Автор тем)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
sendTransaction выдаёт - Данный инструмент запрещен для операции шорт
 
Всем доброго дня, как то пару мес.назад обновил QUIK с 8.3.2.5 (насколько я помню) до 9.4.2.1, у меня есть небольшой вспомогательный Луа скрипт на луа 5.3, до обновления он работал идеально, создавал транзакции на покупку/ продажу без каких либо проблем, как обновил квик до 9.4.2.1 в нём есс-но выбрал в Настройках - lua скрипты  версию lua 5.3.5 для скрпитов индикаторов и скриптов пользователей, и прежние индикаторы на луа и мой скрипт работают норм но до одного момента -

Когда возникает необходимость создать транзакцию (выставить заявку фактически) на покупку или продажу, QUIK выдаёт ошибку:
Код
Данный инструмент запрещен для операции шорт
Т.е. это не результат транзакции, сама транзакция даже не принимается квиком, т.е. пытаюсь скажем продать имеющийся у меня в наличии торговый инструмент примерно таким образом:

Tranres=sendTransaction (
{ACCOUNT=myaccount,
CLIENT_CODE=myclientcode,
SECCODE=GAZP,
CLASSCODE="TQBR",
ACTION="NEW_ORDER",
OPERATION="S",
TYPE="M",
QUANTITY="1",
PRICE="0",

TRANS_ID="1",
EXPIRY_DATE="TODAY"})
[CODE][/CODE]Все без изменений, как и раньше до обновления, раньше всё так работало а сейчас нет, причем вручную могу такую заявку выставить - квик её принимает и сделка происходит, а через скрипт - нет
Обновление QUIK, индикаторы
 
Всем доброго дня, обновил Квик с 8.7.1.3 до 9.4, перестали работать внешние индикаторы, это которые записываются в папку LuaIndicators в папке квика, подскажите где взять индикаторы для нового 9.4 квика, также я смотрю в ново квике перешли на Луа версии 5.4 - будут ли в нём работать скрипты на прежнем Луа 5.3 ? Если нет то что потребуется в них переделать?
Помогите с luasocket для QUIK 8.3.2.5 и старше
 
Всем доброго дня, уважаемые разработчики а также все остальные помогите! как известно начиная с версии 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?
Индикаторы для QUIK старше 8.3.2.4
 
Всем доброго дня! Уважаемые разработчики а также все остальные! Подскажите есть ли новые внешние индикаторы на луа 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 и её параметру param_name
 
Здравствуйте, в дополнение к предыдущей теме, попытался получить нужные  мне параметры по торговым инструментам, такие как "Оборот", "ГО  продавца" и "ГО покупателя"
с помощью данной функции - 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) ) в Луа скрипте - это что за время - время начала формирования свечи или конца?
Восстановление связи QUIK с сервером
 
Здравствуйте, мне вот стало интересно - если произошел разрыв связи КВИКа с сервером, вызывается функция OnDisconnected,  при восстановлении связи вызывается функция OnConnected и после нее работа скрипта возобновляется, если он написан достаточно правильно чтобы не отваливаться из за разрыва связи конечно, так вот в какое место скрипта переходит его выполнение после возобновления связи КВИКа и вызова функции OnConnected? я так понимаю что ни в какое место не переходит а скрипт просто работал вхолостую, если в нём такое было предусмотренно - не выполнять команды которые чреваты остановкой скрипта при отсутствии связи, и при возобновлении связи просто все начнет выполняться где предусмотрена проверка isConnected,  или же функция OnConnected передаст управление скрипта в какую либо из предусмотренных функций типа main()?
И если я в OnConnected  сам пропишу переход к функции main() или OnInit() ? Потому как хочу чтобы скрипт после восстановления связи начал работу с самого начала, правильно ли так сделать?
Вопрос по скрипту индикатора Bollinger Bands
 
Здравствуйте, написал для своего скрипта индикатор вычисления полос Боллинджера, опираясь на предыдущее написание написание индикатора 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 - среднеквадратичное отклонение

Далее же - везде где только можно нагуглить чтолибо о полосах Боллинджера везде формула расчета среднеквадратичного отклонения

такова:
StdDev = SQRT (SUM ((CLOSE — SMA (CLOSE, N))^2, N)/N)

или же графически

Верхняя линия
Нижняя линия

Источников масса:
https://fortrader.org/indicators-forex/bollinger-bands-bb.html
http://tlap.com/o-lentah-bollindzhera/
https://privatfinance.com/indikator-polosyi-bollindzhera/
https://kbrobots.ru/roboty/11-torgovyx-robotov-dlya-quik/polosy-bollindzhera/
И еще много других, и все они содержат одинаковую формулу вычисления отклонения от средней линии

проанализировав же ваш скрипт 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)

Я понял что ваша формула имеет иной вид, математически её можно записать примерно так:

StdDev = SQRT ( (SUM(CLOSE(N)^2)-SUM(CLOSE(N-P)^2)) - 2*MA(C,N-P)*(SUM(CLOSE(N))-SUM(CLOSE(N-P))) + P*MA(C,N-P)^2

Графически она будет выглядеть примерно так:
Ваша формула среднекв. отклонения

соответственно - формула другая, дает другие значения ( не совпадающие с оригинальной формулой) в итоге значения верхней и нижней полос отличаются


Хотелось бы услышать ваши обьяснения - что это за формула, откуда она взята, чем обьясняется её использование, для того чтобы лучше понимать её смысл и смысл использования полос Боллинджера вашего вида.

Кстати нехитрым путём я подправил ваш скрипт чтобы он рассчитывал отклонение по стандартной формуле:

Код
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
Значения полос неправильны в самом начале диапазона на нескольких самых первых свечах, это можно поправить но нет смысла поскольку те давние свечи и значения индикаторов по ним уже никому ненужны а далее же на всем остальном диапазоне расчет идет правильный

И что интересно - мои, т.е. оригинальные полосы Боллинджера, на всём графике во многом совпадают с полосами вычисляемыми вашим скриптом но только в местах  где свечи начинают убывать, т.е. снижаться, ваши полосы резко сужаются следуя за свечами, оригинальные же полосы сужаются плавно и неспеша, что исключает вероятность ложных пробоев, зато после окончательного сужения полосы совпадают и с началом нового расширения расширяются одинаково так же полностью совпадая дос следующего сужения и т.д.
В общем хотелось бы услышать обьяснение по поводу вашей формулы расчета
Вопрос по скрипту индикатора AD
 
Всех приветствую, опять вопрос по индикаторам, стал изучать скрипт индикатора 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

А именно строчки

CLH=(2*GetValueEX(it.p,CLOSE,ds)-GetValueEX(it.p,HIGH,ds) - GetValueEX(it.p,LOW,ds))*GetValueEX(it.p,VOLUME,ds)
HL=GetValueEX(it.p,HIGH,ds) - GetValueEX(it.p,LOW,ds)

Где CLH/HL  и есть AD

У меня AD рассчитывается так -

((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) в самом индикаторе добавить код  другого индикатора как функцию и брать значения из нее.

Не совсем пойму как это делается, можно поподробнее?
Сообщения QUIKa, Нарушен порядок рассылки информационного сообщения, Недостаточно лицензий
 
Здравствуйте, я обслуживаюсь у брокера который использует уже несколько подустаревшую версию квика - 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
 
Здравствуйте, помогите, QUIK не выводит таблицы по DDE в Excel - в контекстном меню нажимаю "Вывод через DDE сервер", при незаполненных полях QUIK сам создает новую книгу и лист в EXCEL, при заполненных выбирает их но результат одинаков при попытке вывести данные - выскакивает ошибка -

Не удалось установить DDE соединение с сервером 'excel'. Либо не запущен 'C:\QUIK\Книга2.xlsx', либо в него не загружен лист 'Таблица сделок'. Таблица 'Таблица сделок'
Application error: Net error: Удаленный хост принудительно разорвал существующее подключение.
 
Здравствуйте господа разработчики, в пятницу вечером, 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   все время мне возвращает вот только такие значения:
(У одного из известных брокеров, не демо-счет)

leverage = 1.000000
portfolio_value = тут реальная сумма
is_futures =
status_coef = 0.000000
open_limit = 0.000000
total_limit_open_pos = 0.000000
fut_rate_go = 0.000000
used_lim_open_pos = 0.000000
is_marginal = 1
total_money_bal = тут реальная сумма
corrected_margin = 0.000000
lim_buy = 0.000000
locked_buy_margin = 0.000000
locked_sell = 0.000000
fut_total_asset = тут реальная сумма
fut_rate_asset = 0.000000
go_for_orders = 0.000000
val_short_net = 0.000000
varmargin = 0.000000
fundslevel = 9.990000
limit_open_pos = 0.000000
locked_buy_asset = 0.000000
is_qual_client =
margin = 0.000000
curr_tag = SUR-EQTV
fut_position_type = 0
av_lim_all = 0.000000
lim_sell = 0.000000
current_bal = тут реальная сумма
open_pos = 0.000000
rate_change = 0.000000
locked_value_coef = 0.000000
lim_all = 0.000000
haircuts = 0.000000
min_margin = 0.000000
locked_buy = 0.000000
cash_leverage = 0.000000
fut_rate_asset_open = 0.000000
init_margin = 0.000000
val_long = 0.000000
val_long_net = 0.000000
client_type = 4
total_locked_money = 0.000000
fut_debt = 0.000000
fut_accured_int = 0.000000
all_assets = тут реальная сумма
fut_asset = 0.000000
val_long_margin = 0.000000
demand = 0.000000
cur_leverage = 0.000000
planed_rate_go = 0.000000
lim_buy_asset = 0.000000
in_assets = тут реальная сумма
in_all_assets = тут реальная сумма
money_locked = 0.000000
is_leverage = МД
cl_var_margin = 0.000000
start_limit_open_pos = 0.000000
acc_var_margin = 0.000000
val_long_asset = 0.000000
opt_liquid_cost = 0.000000
go_for_positions = 0.000000
val_short = 0.000000
profit_loss = 0.000000
assets = тут реальная сумма
assets_without_hc = 0.000000
rate_futures = 100.000000
lim_non_margin =  тут реальная сумма
Шаблон графика со всеми индикаторами и их настройками
 
Всех приветствую, подскажите пожалуйста - возможно ли чтобы сохранить настройки графика в шаблон со всеми имеющимися на нем индикаторами и их настройками а потом чтобы этот шаблон по умолчанию применялся к новым открываемым графикам, вместе с индикаторами? Такая возможность сохранения текущих настроек графика в шаблон имеется, я её применял, но сохраненный шаблон применяется к новым графикам без индикаторов, только временной интервал и еще какие то мелочи, раскраска линий вроде и отметки сделок заявок и пр.на графике, а это очень плохо поскольку заново на каждом графике открывать по новой кучу всех своих используемых индикаторов и редактировать все их настройки это как то совсем не хорошо
Узнать тип сделки (Long/Short) в скрипте
 
Всем доброго времени суток, подскажите плиз как можно узнать тип  произошедшей сделки в скрипте, в частности в функции 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 при такой ошибке:
sec_code = SNGSP
price = 32.9
client_code = 10804
balance = 0
time = 181207
status = 6
first_ordernum = 0
date_time = 18:12:7  273  28/1
gate_reply_time = 0:0:0  0  1/1
class_code = QJSIM
trans_id = 60043
error_source = 3
exchange_code =
uid = 134353
error_code = 108
flags = 2359297
result_msg = Превышен лимит по инструменту
brokerref = 10804
firm_id = NC0011100000
quantity = 13
order_num = 0
server_trans_id = 27
account = NL0011100043

И тут же вслед за неудачной попыткой скрипта я легко вручную купил те же самые 13 акций SNGSP
Что это за ошибка как её избежать?

Подскажите по флагам
 
Всех приветствую, подскажите - читаю полученные результаты при выполнении заявки в функции 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 и все
getPortfolioInfo все время возвращает nil
 
Всем доброго дня, подскажите кто знает - на демо доступе от разработчиков QUIK функция getPortfolioInfo все время возвращает nil, свои  firm_id и client_code указываю правильно, у меня никаких ошибок быть не может, при точно таком же использовании на демо-счетах других брокеров эта функция у меня все норм работает, при точно таком же использовании, без всяких различий в скрипте, ну только что firm_id и client_code там другой конечно же, я бы другими демо-счетами и пользовался поэтому но только вот проблема в том что почти все остальные демо-счета работают в режиме торгов приближенных к реальным - т.е. доступ к торгам по времени в соответствии с реальной работой биржи - т.е. только в рабочие дни с 10:00 и т.д. и только у разрабов QUIKа можно работать каждый день и почти круглосуточно
Функция CreateDataSource, Возможно ли получать данные с её помощью по любому инструменту не открывая его график?
 
Всех приветствую, подскажите с помощью функции CreateDataSource - возможно ли получать данные о свечах любых доступных торговых инструментов неоткрывая их график?
А проблема такова что я использовал данную функцию в скрипте и обнаружил что для того чтобы эта функция получала данные по инструменту его график должен быть открыт, если график неоткрыт то функция ничего не получает
В Система/Настройки/Основные настройки/Программа-получение данных
Сначала стояла опция - "Исходя из из настроек открытых пользователем таблиц"
Я ее переключил в - "С учетом настроек, выбранных через пункт меню "Система/Заказ данных/Поток котировок"
и поставил галочку "Обновлять все данные после расширения списка получаемых инструментов и параметров"
Там, допустим меня интересуют акции, включил фильтр инструментов и там добавил в список получаемых ценных бумаг все имеющиеся доступными акции
Но ничего не изменилось - CreateDataSource по прежнему получает данные с открытых графиков, даже терминал перезапустил - также не помогло, пробовал и Система/Заказ данных/Перезаказать данные, со всеми галочками, перезапустил терминал - ничего не изменилось
Подскажите по расчету RSI
 
Всех приветствую, подскажите пожалуйста как рассчитать 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р

Какой из этих параметров показывает количество свободных денег оставшихся у меня на счету?
Что значит параметр Входящий остаток? Почему он с минусом?
Значение символов из таблиц вроде %q+
 
Здравствуйте! Только начал изучать lua по книге Роберто  Иерусалимского и у него сразу пошло, без обьяснения, использование неких последовательностей символов в таблицах вроде %q+ или %w+ или %a+ или все тоже самое но без плюса, растолкуйте мне пожалуйста что они значат и что дает добавление знака плюс?
Страницы: 1
Наверх