Анатолий (Все сообщения пользователя)

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

Страницы: Пред. 1 2 3 След.
QUIK 8.0 x64: что нужно знать перед обновлением на новую версию
 
Цитата
s_mike@rambler.ru написал:
Нужно пересобирать из исходных тестов библиотеку socket под x64
Логично, но проще пока забить на новый 64х разр. квик и пользоваться старым добрым 32х разрядным )))
QUIK 8.0 x64: что нужно знать перед обновлением на новую версию
 
Цитата
Alexey Ivannikov написал:
Рабочее место QUIK версии 8.0 является 64-разрядным приложением. Перед тем как запускать обновление на новую версию, необходимо обязательно ознакомиться со следующими особенностями новой версии.1. Новая версия может некорректно работать с LUA-скриптами, использующими внешние библиотеки dll. Перед обновлением рекомендуем обратиться к разработчикам скриптов за их обновлением.
Как раз возникла соответствующая проблема, уже хотел было открывать тему но прочитав это понимаю что видимо в этом дело, и что же теперь делать?
А проблема вот в чём - Имеется QUIK 7.27.1.18, в нём все норм работает, захотел немного потренироваться на демо счете от arqatech, скачал самый последний QUIK Junior 8.0
установил, перенес из QUIK 7.27.1.18 в новый QUIK Junior 8.0 скрипт и все его сторонние библиотеки в по точно таким же путям в в квик юниор, при запуске скрипта вылетает ошибка - error loading module 'socket.core' from file 'Z:\QUIK-Junior\lua\ssl\socket\core.dll':
    не является приложением Win32.
То есть в QUIK 7.27.1.18 все тоже самое лежит по точно таким же путям и все работает нормально

Что теперь делать?
quik выдает сообщение "Превышено ограничение на количество котировочных окон...", А их в программе открыто всего 3 штуки
 
Иван Ру, Здравствуйте! Решилась ли ваша проблема с сообщением "Превышено ограничение на количество котировочных окон"?
У меня тоже вот такая же проблема началась после того как я скачал и установил QUIK от другого брокера, но той же версии - 7.27.2.1, что и у предыдущего, перенес в новый квик из предыдущего файл wnd с настройками и скрипт, скрипт не привязан к каким либо параметрам прошлого квика, к путям например, и параметрам брокера, и при запуске скрипта, когда сразу когда через некоторое неопределенное время квик начинает сыпать сообщениями - "Превышено ограничение на количество котировочных окон. Одновременно может быть открыто не более 200 окон" всего выскакивает примерно 60-70 таких сообщений одно за другим потом все тихо, и причем скрипт не выполняет тех операций что он совершал в предыдущем квике, но и сообщений об ошибках никаких, и все нужные для работы скрипта библиотеки я перенес в новый квик, все как в предыдущем, как я подозреваю на каком то моменте выполнения скрипта и просходит эта проблема, но почему так - непонятно, ведь всё тоже самое
Вопрос по скрипту индикатора Bollinger Bands
 
Цитата
Николай Камынин написал:
поясню откуда что берется.Данная формула берется из следующей гипотезы.Полагаем что цена отклоняется от оценки среднего значения случайным образом по гауссовскому закону плотности вероятности отклонения тогда с вероятностью 0.95 имеем 1.96*ср.квадр-----------------Но это гипотеза не верна (доказано в прошлом веке)так как закон распределения цены не нормальныйследовательно центр тяжести нельзя считать как среднееследовательно закон двух сигма не работает
Можно ссылочку на какой нибудь ресурс почитать поподробней об этом?

Цитата
Николай Камынин написал:
Вообще-то  зачем городить расчет индикатора когда он есть в КВИКЕпоставьте метку и читайте значения в своем скрипте Зачем изобретать дырку от бублика.
Есть некоторые совершенно очевидные причины иногда "загородить" собственный расчет индикатора в скрипте, но впрочем я не буду распространятся на эту тему, кому это непонятно тому это и ненадо
Вопрос по скрипту индикатора Bollinger Bands
 
Я и говорю что ваши формулы для расчета верхней и нижней полосы такие же как и везде в остальных источниках
То есть BBLower/BBUpper = MA(P,N) –+ k * StDev(P,N)
Но вот среднеквадратичное отклонение  StDev(P,N) у вас рассчитывается иным методом:
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
То есть кв.корень разницы сумм цен, разницы скользящей средней умноженной на 2 и плюс период умноженный на  скользящую средню в квадрате! О как!
В то время как везде где только можно нагуглить среднеквадратичное отклонение  StDev(P,N) рассчитывается намного проще:
StdDev = SQRT (SUM ((CLOSE — SMA (CLOSE, N))^2, N)/N)
то есть кв.корень из суммы разниц цен(обычно закрытия потому и CLOSE) и скользящей средней некоторого периода цен
Кто как решил вопрос уведомления о сделках?
 
Цитата
Nikolay написал:
Я тоже подозреваю, что с интерпретатором lua в Квике не все ладно. У меня также из ZeroBraneStudio все работает. Также не все библиотеки можно подключить в Квике, для примера strict -  Квик падает без слов. Также обнаружил, что внутри фунции SearchItems (в функции проверки) у меня почему-то проверка nil как false не срабатывает. Приходится явно писать ~= nil
Кстати забыл сразу рассказать: у меня тоже по началу были такие проблемы с квиковским интерпретатором луа, но они решились все и больше не появлялись, а вызваны как мне кажется следующим - ты как и все остальные делаете так:
В папку со сторонними библиотеками ложите файл qlua.dll переименовав его в lua51.dll, еще хуже если люди берут lua51.dll откуда нибудь со стороны, из Zerobrane например, не переименовав оригинальный qlua.dll, тогда всякие глюки 100% будут, но и в первом случае - с помощью переименовывания qlua.dll  в lua51.dll я тоже наблюдал различные глюки и сообщения о некоторых ошибках во время выполнения скрипта, все эти ошибки у меня решились так:
1. В каждую папку со сторонними библиотеками ложится оригинальный qlua.dll а всякие lua51.dll удаляются.
2. Есть такая хорошая программка Dependency walker, с её помощь можно посмотреть с какими другими dll связана нужная тебе dll библиотека, но еще удобнее это посмотреть с помощью Total Commander Extended - просто становишся на dll'ку курсором, жамкаешь F3, вкладка Dll Dependency - смотрим - эта библиотека, к примеру ssl.dll требует для своей работы библиотеку lua51.dll, и кстати там будет показано - может ли нужная тебе библиотека связаться со всеми далее необходимыми ей библиотеками, если нет то возле нее будет гореть красный крестик
3. Далее любым HEX редактором, например WinHex, открываем ssl.dll для записи, ищем текст - lua51.dll
находим, далее осторожно! Необходимо стать курсором в текстовое поле отображения файла! не в шестнадцатиричное!  необходимо написать qlua вместо lua51, но при этом существующее положение точки т.е. символа разделения имени файла и расширения не должно измениться, т.е. точку трогать нельзя! qlua это на один символ меньше чем lua51, поэтому "q" писываем вместо "u" и т.д. итого у нас должно получится - lqlua.dll,  после того как писали qlua осторожно переходим в шестнадцатиричное поле и в ту позицию (байт) в которой содержится шестнадцатиричное значение буквы l ставим два нуля - "00" и буква l должна исчезнуть, сохраняем все изменения, открываем ssl.dll в Total'е, или в Dependency walker, смотрим - ssl.dll уже запрашивает не библиотеку lua51.dll а qlua.dll! Так проделываем со всеми своими сторонними библиотеками подключаемыми в скрипте самостоятельно - после этого у меня все проблемы с интерпретатором луа в квике пропали!
Вопрос по скрипту индикатора 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
 
Лол ))))) Вообщем с помощью отладки вашего скрипта индикатора AD.lua выяснил что итоговое значение AD он выдает суммируя мгновенные значения (по формуле для каждой свечки) за весь диапазон доступных с биржи свечей, от самой последней до самой первой, однакож вам видимо трудно было об этом сразу сказать.. ))))
Кто как решил вопрос уведомления о сделках?
 
Цитата
Nikolay написал:
socket  = require("socket")
А у меня такой строчки нету и все работает, короче у меня все прописано вот так:
package.cpath  =  getScriptPath () .. "\\ssl\\?.dll;C:\\ZeroBraneStudio\\bin\\clibs\\?.dll;C:\\ZeroBraneStudio\\bin\\?.dll;C:\\ZeroBraneStudio\\bin\\socket\\?.dll"
package.path  =   getScriptPath () .. "\\?.lua;"..package.path

smtp = require("socket.smtp")
mime = require("mime")
ltn12 = require("ltn12")
ssl = require("ssl")
https = require("ssl.https")

В папке квика - папка lua, в ней папки socket и ssl в них я закинул dll'ки, ssl.lua в самой папке lua, надо подумать какой прогой можно сделать чтобы сделать удобный листинг папок и закинуть их сюда,
Но есть еще один удобный выход который я и предпочел т.к. у меня либа ssl хоть и подключилась и работает однако она доставляет неудобства - с ней скрипт очень долго стартует - минут 5 наверно, почему непонятно, поэтому я от неё отказался и воспользовался прогой Stunnel, ищи в инете, она создает прокси SSL туннель и переправляет направляемый на неё траффик по ssl, и тогда в скрипте


ты отправляешь через неё мыло вот так:


function sendmail (message)
local r,e

r, e = smtp.send{
 from = "somemail@mail.ru",
 rcpt = "recepient@mail.ru",
 source = smtp.message(message),
 password = "password",
 user = "somemail",
 domain = "mail.ru",
 server = "127.0.0.1",
 port = 25,
}

return r,e

end

а в настройках Stunnel указываешь:

[mail-pop3]
client = yes
accept = 127.0.0.1:110
connect = pop.mail.ru:995
verifyChain = yes
CAfile = ca-certs.pem
checkHost = pop.gmail.com
OCSPaia = yes

[mail-smtp]
client = yes
accept = 127.0.0.1:25
connect = smtp.mail.ru:465
verifyChain = yes
CAfile = ca-certs.pem
checkHost = smtp.mail.ru
OCSPaia = yes

Все просто и понятно
И тогда твое мыло и без подключения ssl.dll уйдет на почту на порт 465 по SSL
Кто как решил вопрос уведомления о сделках?
 
Сложно так сказать не видя что у тебя в скрипте и в папках квика, покажи тогда свой кусок скрипта где обьявляются пути

package.cpath  = ...
package.path  = ...

и идет подключение библиотек командой require
Кто как решил вопрос уведомления о сделках?
 
Цитата
Nikolay написал:
Я тоже подозреваю, что с интерпретатором lua в Квике не все ладно. У меня также из ZeroBraneStudio все работает.
С интерпретатором луа в квике все ладно, просто там есть нюансы, у меня были все эти проблемы и я их решил, помоему ты всетаки не все скопировал из окна ошибок, полностью все оттуда скопируй и вставь сюда, или лучше сделай скрин и выложи
Вопрос по скрипту индикатора AD
 
К томуже количеством свечей по которому рассчитывается AD не является количество свечей отображаемых на графике - я хотьь увеличиваю хоть уменьшаю диапазон отображаемого графика, т.е. кол-во свечей на графике, но знаения AD для каждой свечи остаются неизменными, отсюда  вывод что количество свечей у вас в индикаторе фиксированное но не пойму где оно задается
Вопрос по скрипту индикатора AD
 
Только вот непойму где у вас для индикатора AD определяется количество свечей по которым он рассчитывается? В настройках  индикатора на графике нет ничего связанного с выбором периода для расчета, в скрипте AD.lua я тоже чтото ничего связанного с определением диапазона расчета (т.е. с количеством свечек по которому он рассчитывается) невижу
Кто как решил вопрос уведомления о сделках?
 
Цитата
Nikolay написал:
Я подключил все библиотеки, socket подключается нормально. Но при подключении ssl, не находит ssl.core. ssl.lua, собственно, и пытается его включить local core    = require("ssl.core")Т.е. нужна папка \ssl а в ней файл core.dll
Скопируй из квика из окна "Ошибки выполнения скрипта" то что там пишется при твоей попытке выполнить скрипт и выложи это сюда"
Вопрос по скрипту индикатора AD
 
Цитата
Sergey Gorokhov написал:
Следовательно n-1 это предыдущая свечка.
Хорошо -  значит если свечек пять то тогда получается - для 5ой (последней) свечи:
CumAD = ADn + CumADn-1
где CumADn-1 это CumAD для 4ой свечи и т.д.  в итоге каким же тогда будет CumAD для последней, 1ой, свечи? Получается что для 1ой свечи CumAD = ADn и он же будет CumADn-1 для 2ой свечи правильно? т.е. в вашем индикаторе A/D и индикаторе Чайкина они рассчитываются от выбранного интервала (количества свечей взятых для рассчета)?
Вопрос по скрипту индикатора AD
 
Цитата
Sergey Gorokhov написал:
Нет никакого периода. n в формуле обозначает текущую свечку для которой происходит расчет.Например если свечек 5 значит n=5
Тут опять непойму - что же есть тогда tmp.pp (CumADn-1) из tmp.p = CLH/HL + (tmp.pp or 0)? т.е. согласно вашей формуле CumAD = ADn + CumADn-1
Для каждой свечи можно получить только одно значение ADn согласно значениям цен (открытия  закрытия и т.д.) и обьема этой свечи чтоже вы тогда прибавляете к ADn в качестве  CumADn-1 если  говорите что CumADn-1 тоже для этой же свечи?
Вопрос по скрипту индикатора AD
 
Цитата
Sergey Gorokhov написал:
Документация к терминалу в файле info.chm, или можно открыть нажав F1Формулы к индикаторам приведены в следующем разделе:
Ясно спасибо, нетуда смотрел, скажите еще пожалуйста:
1) За какой период получается суммируются вычисленные значения AD? Чему равно n-?
2) Для чего это делается? В литературе по тех.анализу я ненашел ничего о суммировании этого индикатора с его предыдущими значениями, хотя литературы очень много всю ее пересмотреть сложно, можно у вас попросить ссылку на литературу по которой у вас сделан индикатор AD, т.е. с сумрованием тогового значения за n периодов?

Да точно tmp.p = CLH/HL + (tmp.pp or 0)  - это и есть  CumAD = ADn + CumADn-1

Изменил эту строчку на  tmp.p = CLH/HL  в файлах AD.lua и CO.lua  после чего индикатор AD стал совпадать с моим расчетным
но CO по прежнему несовпадает хотя отличается ненамного, у себя CO я рассчитываю как


CO = SMA (AD,3) - SMA(AD,10) - где SMA - среднеарифметическое суммы индикаторов AD за периоды 3 и 10

у вас формула в CO.lua в functions CO()   такая же -   return rS_MA - rL_MA
В настройках индикатора метод подсчета средней - SMA я естественно выставил, почему несовпадение непойму

Ну и хотел еще добавить - ваш индикатор A/D («Накопление/распределение») вовсе не оригинальный индикатор A/D разработанный Ларри Вильмсом в 1972 и вычисляемый по формуле


A/D = ( ( C - O) / ( H - L) ) * V

Ваш индикатор A/D не что иное как индикатор аккумуляции/распределения  VA Чайкина (Volume Accumulation) - накопленный обьем
( т.е. не осциллятор а индикатор)

Который как раз таки и рассчитывается по формуле

VA = ( ( C - L ) - ( H - C ) ) / ( H - L ) ) * V
Сообщения QUIKa, Нарушен порядок рассылки информационного сообщения, Недостаточно лицензий
 
Цитата
Zoya Skvorcova написал:
С этой ошибкой надо разбираться со стороны брокера.
Понятно, ну брокеру я уже написал просьбу - обновить наконец таки свой квик, дальше все зависит от их желания, ну а писать им что я такой хитрый взял у разработчиков самый последний квик и прикрутил его к вам (их серверу) я конечно же не буду )))
Вопрос по скрипту индикатора AD
 
Цитата
Sergey Gorokhov написал:
Да но дальше еще сложение, согласно формуле (которая если что есть в документации)CumAD = ADn + CumADn-1,
Где в вашей документации эта формула? Ненашел,
Где в скрипте индикатора AD.lua этот код CumAD = ADn + CumADn-1 ?
В функции 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

Вижу только в

 if HL==0 then
           tmp.p = tmp.pp or 0
       else
           tmp.p = CLH/HL + (tmp.pp or 0)
       end


похожую строчку   tmp.p = CLH/HL + (tmp.pp or 0)
Получить в скрипт значения индикатора из графика
 
Цитата
Sergey Gorokhov написал:
Функции для получения данных с графиков описаны в документации QLUA.chm
Читал,

getCandlesByIndex Функция предназначена для получения информации о свечках по идентификатору (заказ
данных для построения графика плагин не осуществляет, поэтому для успешного доступа
нужный график должен быть открыт):
Формат вызова:
TABLE t, NUMBER n, STRING l getCandlesByIndex (STRING tag, NUMBER line, NUMBER
first_candle, NUMBER count)
Параметры:
•  tag – строковый идентификатор графика или индикатора,


что указывать в поле tag? Пробовал указывать название индикатора из поля name, т.е. для CO из CO.lua
Settings = {
Name = "*CO (Chaikin Oscillator)",

Указал tag = "*CO (Chaikin Oscillator)" т.е.

t,n,l = getCandlesByIndex( "*CO (Chaikin Oscillator)", data[Security]:Size(),1,1)
В итоге t,n,l мне ничего не вернули, data[Security]:Size() - номер последней свечки, график инструмента с добавленным индикатором открыт, хотя конечно понятно что в аргументах getCandlesByIndex нехватает указания ему графика, откуда функция знает с какого графика ей взять значения индикатора? Но как это все правильно оформить?
Сообщения QUIKa, Нарушен порядок рассылки информационного сообщения, Недостаточно лицензий
 
Цитата
s_mike@rambler.ru написал:
то он покупает недостаточное количество лицензий
когда пользовался квиком от брокера - 7.19 таких сообщений не выскакивало
Вопрос по скрипту индикатора 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
 
Цитата
Imersio Arrigo написал:
Бреткакойто. У меня отлично выводит в 64битный офис
Но есть проги которые по DDE невыводят в офис не своей разрядности, потому я и предположил
QUIK не выводит таблицы по DDE в Excel
 
Цитата
Александр Копяткевич написал:
Ответили Вам в личном сообщении.
Здравствуйте опять, вообщем вы мне там в личном сообщении конечно же толком ничем не помогли но я уже разобрался в чем была проблема - думаю вам это пригодится чтобы потом другим пользователям с такой же проблемой помочь да и может в эту ветку кто зайдет и прочитает - т.к. судя по форуму эта проблема часто случается но толком не решена.
Вообщем у меня была установлена Windows 10 Build 1607, билд винды особенно 10-ки имеет большое значение, чтобы его проверить необходимо:
Пуск - выполнить - msconfig - вкладка сервис - самая верхняя строчка "О программе", Выбранная команда - C:\Windows\system32\winver.exe
Или можно сразу - Пуск - выполнить - winver
И смотрим свой билд
и в этом билде 1607 DDE Server почему то неработал совсем, никакое штудирование многочисленных форумов в инете и пляски с бубном непомогли, только что обнаружил на многих иностранных форумах что и у других людей есть проблемы с DDE в билде 1607, пробовал другие проги которые выводят по DDE в Excel - ничто не выводит, тут же попробовал в Windows 10 Build 1709 - все выводится по DDE без проблем, попробовал в Windows 7 - так же все без проблем. Но тут есть еще одно НО - разрядность проги которая выводит по DDE должна быть такой же как и разрядность установленного MS Office, а т.к. QUIK 32-х битный то и Excel должен быть из MS Office x86, но у меня на Windows 10 Build 1607 изначально был установлен MS Office 64 битный, для работы с QUIK я его снёс вычистил от его остатков винду установил 32-х битный оффис но вполне могло быть что 64х битный офис повредил DDE,  так что оно могло остатся только под 64бит, так что еще одна рекомендация - не ставить вообще на систему 64битный MS Office
QUIK не выводит таблицы по DDE в Excel
 
Цитата
Александр Копяткевич написал:
После сообщите нам о результате. Если ошибка все равно будет появляться, то нужно будет прислать архив папки с терминалом QUIK без ключей нам на  quiksupport@arqatech.com  с ссылкой на эту ветку форума.
Ошибка по прежнему повторяется, выслал вам архив QUIKа, и теперь после всех манипуляций с попытками вывода на
DDE  сервер  посоветованных  вами QUIK при каждом запуске сам теперь открывает  EXCEL  и пытается что то туда вывести, но у него как и раньше ничего не получается, с прежним сообщением об ошибке, как от этого избавиться?
Application error: Net error: Удаленный хост принудительно разорвал существующее подключение.
 
Цитата
новичок написал:
когда 99% мальчегов бегают выпучив глаза совсем по другому поводу ... :)
Ну и что, одно другому не помеха
QUIK не выводит таблицы по DDE в Excel
 
Цитата
Александр Копяткевич написал:
Если возможно, пришлите так же файл Excel, в который Вы пытаетесь сделать экспорт данных.
Только непойму о чем скажет этот файл, абсолютно новый чистый xlsx файл, уже как только не пробовал листы называть, нехочет квик ничего в эксель выводить, проблема видимо во взаимодействии квика с DDE сервером
https://cloud.mail.ru/public/MQhB%2Fizwu35p3a
Application error: Net error: Удаленный хост принудительно разорвал существующее подключение.
 
Цитата
новичок написал:
ну как можно не знать про 8-е марта? ну как?
Что незнать? Незнать почему квик целый день нормально работал, коннектился, а вечером после реконнекта пошли ошибки? Впрочем на ММВБ действительно мог быть выходной я чтото даже не подумал но тем не менее терминал обычно даже в нерабочее время коннектится нормально, просто торгов нет, и кстати когда квик перестал коннектится через вебквик я зашёл нормально
QUIK не выводит таблицы по DDE в Excel
 
Цитата
Александр Копяткевич написал:
Пришлите, пожалуйста, скриншот формы "Вывод через DDE сервер" когда Вы уже выполните все действия и останется только нажать кнопку "Начать вывод". Возможно, Вы не совсем верно ее заполняете.
https://cloud.mail.ru/public/FpUq%2FtcpWvWJ8N  - ваш вариант с пустыми полями
https://cloud.mail.ru/public/FhL8%2FAUqYv7RpA  - мой вариант, если указвать к xlsx файлу полный путь то также не работает
QUIK не выводит таблицы по DDE в Excel
 
Цитата
Александр Копяткевич написал:
Уточните, пожалуйста, если не заполнять поля и выставить настройку "Запускать приложение DDE сервера автоматически", то при нажатии на кнопку "Начать вывод" ошибка тоже появляется?
Да, попробовал тоже появляется - "Не удалось установить DDE соединение с сервером 'excel'. Либо не запущен 'Книга1', либо в него не загружен лист 'Таблица сделок'. Таблица 'Таблица сделок' '"
QUIK не выводит таблицы по DDE в Excel
 
И кстати галочка "Игнорировать DDE-запросы от других приложений" в экселе снята была изначально Office 2010 Standart, как я вижу из форума эта проблема имеет место быть уже давно но однозначного решения еще ненайдено, может вы написали и отладили эту функцию, вывода через DDE сервер, используя ранние редакции MS Office? 2003 например?
QUIK не выводит таблицы по DDE в Excel
 
Цитата
Александр Копяткевич написал:
Попробуйте выполнить следующие действия:1. Если Вы уже создали файл Excel, то запустите этот файл.2. Укажите путь до Excel файла в окне "Вывод через DDE сервер".3. Сотрите все символы, за исключением самого имени файла. В поле "Лист" укажите название листа в файле (в Вашем случае "Таблица сделок", но предварительно убедитесь, что имя листа такое и есть)
И с путём и без пути пробовал, имя файла правильное, лист в нём с таким именем существует, но все равно не выводит, причем если Эксель не открыт то он открывается, открывается этот файл для вывода но выскакивает эта ошибка
QUIK не выводит таблицы по DDE в Excel
 
Здравствуйте, помогите, QUIK не выводит таблицы по DDE в Excel - в контекстном меню нажимаю "Вывод через DDE сервер", при незаполненных полях QUIK сам создает новую книгу и лист в EXCEL, при заполненных выбирает их но результат одинаков при попытке вывести данные - выскакивает ошибка -

Не удалось установить DDE соединение с сервером 'excel'. Либо не запущен 'C:\QUIK\Книга2.xlsx', либо в него не загружен лист 'Таблица сделок'. Таблица 'Таблица сделок'
Application error: Net error: Удаленный хост принудительно разорвал существующее подключение.
 
Почему у вас нет модерирования на сайте, почему такой серьезный ресурс допускает троллинг и спам на сайте как выше? Где возможность пожаловаться на пользователя?
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 эти параметры получить нельзя. Однако, можно их получить, используя функцию getPortfolioInfoEx. Рекомендуем использовать именно getPortfolioInfoEx.
Уже разобрался - надо было в getPortfolioInfoEx указать тип лимита - 2, что соответствует Т2, и там все есть - и Мин.маржа и Нач.маржа, и параметр fundslevel это видимо и есть УДС, только что странно что он не описан в руководстве по Qlua
Как получить значение УДС?
 
Цитата
Александр Копяткевич написал:
К сожалению, в данной реализации можно получить только параметры Стоимость портфеля, Мин.маржа и Нач.маржа, и по ним уже рассчитать УДС.Да, в функции getPortfolioInfo эти параметры получить нельзя. Однако, можно их получить, используя функцию getPortfolioInfoEx. Рекомендуем использовать именно getPortfolioInfoEx.
Я уже  понял что придется рассчитывать самому, только вот что странно и  getPortfolioInfoEx у моего брокера выдает мне почти такую же таблицу как  сверху, т.е. все кроме тех мест где я указал - "реальная сумма", причем  эта сумма выдается только по T0, все остальное - нули, видимо и  Мин.маржу и Нач.маржу придется тоже самому рассчитывать
Как получить значение УДС?
 
Тип клиента - МД
Как получить значение УДС?
 
Подскажите пожалуйста как можно получить значение УДС?
Как я вижу в функции 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 =  тут реальная сумма
Шаблон графика со всеми индикаторами и их настройками
 
Цитата
Zoya Skvorcova написал:
Уточните, регистрируем?
Конечно регистрируйте, у ваших конкурентов - Transaq уже давно есть такая возможность, одним кликом по инструменту открывается график с шаблоном в котором есть ВСЕ - и индикаторы и прочее, да и ещё много каких удобств в transaq есть и в этом плане вы от них к сожалению отстаете
Шаблон графика со всеми индикаторами и их настройками
 
Всех приветствую, подскажите пожалуйста - возможно ли чтобы сохранить настройки графика в шаблон со всеми имеющимися на нем индикаторами и их настройками а потом чтобы этот шаблон по умолчанию применялся к новым открываемым графикам, вместе с индикаторами? Такая возможность сохранения текущих настроек графика в шаблон имеется, я её применял, но сохраненный шаблон применяется к новым графикам без индикаторов, только временной интервал и еще какие то мелочи, раскраска линий вроде и отметки сделок заявок и пр.на графике, а это очень плохо поскольку заново на каждом графике открывать по новой кучу всех своих используемых индикаторов и редактировать все их настройки это как то совсем не хорошо
Кто как решил вопрос уведомления о сделках?
 
В момент выполнения строки registry[s] = ctx:   ctx= SSL context: 0D72EE88    тип - userdata   s = SSL connection: 0D848F00  тип - userdata
sock = tcp{client}:0D846E88    setfd=nil
Вообщем мне кажется что это связано с квиковским интерпретатором луа, т.к. операция registry это сохранение любых значений C кода в специальной общей таблице для всех выполняемых С кодов, вот тут в чем о и проблема, т.к. в других интерпретаторах, том же Zerobrane, такой проблемы нет
Кто как решил вопрос уведомления о сделках?
 
Цитата
SDL написал:
Цитата s_mike@rambler.ru  пишет: Серверов, не нуждающихся, например, в TLS/SSL, уже мало и количество их уменьшается. Обычно это древние сервера. Дописывать библиотеку для поддержки новых стандартов, как я понимаю, никто не собирается.Главное не отчаиваться и слишком быстро не сдаваться.Качаем модуль LuaSec:Проект:  https://github.com/brunoos/luasec Бинарники можно взять тут:  http://love2d.org/forums/viewtopic.php?f=5&t=76728 . Нужны 2 файла - ssl.dll и ssl.lua.Использует библиотеки OpenSSL libeay32.dll и ssleay32.dll. Скачать, если нет, и не забыть обеспечить к ним доступ - через окружение (PATH) или можно кинуть в папку с QUIK.Подключаем:
Код
package.path = ...
package.cpath = ...
ssl = require "ssl"
Добавляем вот такую функцию:
Код
function sslCreate()
  local conn =
  {
     sock = socket.tcp(),
     connect = function(self, host, port)
        local r, e = self.sock:connect(host, port)
        if not r then return r, e end
        self.sock = ssl.wrap(self.sock, {mode = 'client', protocol = 'tlsv1'})
        return self.sock:dohandshake()
     end
  }

  local fnIdx = function(t, key)
     return function(self, ...)
        return self.sock[key](self.sock, ...)
     end
  end

  return setmetatable(conn, {__index = fnIdx})
end
... и отправляем:Кодsocket.smtp.send
{
  from = ...,
  rcpt = ...,
  source = ...,
  server = "smtp.mail.ru",
  port = 465,
  user = "user",
  password = "password",
  create = sslCreate
}И еще вкратце, что это за безобразие такое. Вся соль в возможности smtp.send() luasocket'а (см. доки) задать свою функцию создания сокета для отправки сообщения (create = sslCreate), который по умолчанию делается библиотекой просто как socket.tcp(). Мы делаем то же самое, но только обертываем его в подмененном методе connect, где нужно "договориться" с сервером по протоколу SSL. Всё. Еще в этой функции код для доступа к остальным методам сокета, ведь далее luasocket будет работать с ним как со стандартным.С mail.ru, например, работает без проблем.
Здравствуйте, взял все что необходимо для работы с сокетами SMTP и SSL из ZerobraneStudio и закинул в QUIK, закинул все нужные библиотеки core.dll socket.lua smtp.lua ssl.dll ssl.lua по нужным местам, скопировал ssleay32.dll и libeay32.sdll, скопировал Qlua.dll в lua51.dll, сделал все по рецепту автора, при выполнении скрипт в QUIKе отваливается с сообщением " Lua run time error occurred.",  провел отладку выполнения скрипта через Decoda - результат такой мой скрипт выполняется нормально, потом доходит до отправки емейла - тут тоже все нормально, доходит до строчки create = sslCreate дальше переходит в функцию function sslCreate() дальше при идет нормально и в один из моментов когда в файле ssl.lua доходит до строчки № 134  registry[s] = ctx весь скрипт в QUIKе  тваливается с вот этой вот ошибкой " Lua run time error occurred."

ssl.lua  строчка 134 registry[s] = ctx
Код
local function wrap(sock, cfg)
   local ctx, msg
   if type(cfg) == "table" then
      ctx, msg = newcontext(cfg)
      if not ctx then return nil, msg end
   else
      ctx = cfg
   end
   local s, msg = core.create(ctx)
   if s then
      core.setfd(s, sock:getfd())
      sock:setfd(-1)
      registry[s] = ctx
      return s
   end
   return nil, msg 
end
При том что проверил в ZerobraneStudio мой кусок кода отправляющий емейл и функция автора sslCreate() работают нормально - емейл отправляется без проблем, у кого будут какие соображения в чем проблема?
Подскажите по расчету RSI
 
Цитата
нет написал:
Подскажите, пожалуйста, как вызвать саму функцию RSI?
Её как то можно получить из индикаторов графиков, я не стал разбираться как и написал функцию RSI сам с нуля основываясь на получаемые значения цен из свечей
Узнать тип сделки (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% рабочая много раз проверял багов там быть не может
Доступность инструмента для открытий коротких позиций
 
И все остальные типы клиентов МЛ МП МОП -?
Доступность инструмента для открытий коротких позиций
 
Цитата
Stanislav Tvorogov написал:
Уточним: на демо-версии QUIK Junior клиенты имеют тип "МД"
Цитата
Stanislav Tvorogov написал:
Заполняется для клиентов типа «МД»
Извините за глупый вопрос - но что такое клиенты типа МД? )))  И как мне в будущем на других счетах (Тем более на реальных) узнавать МД ли я или нет? Мелочь но это может быть очень важно
Страницы: Пред. 1 2 3 След.
Наверх