Как установить поддержку сокетов в скриптах QUIK ?
Пользователь
Сообщений: Регистрация: 13.03.2016
26.12.2020 17:37:25
, вот кусок кода на LUA для подключения к серверу.
Код
socket=require("socket.core")
tcp = socket.tcp()
tcp:settimeout(1)
local host, port = "127.0.0.1", 1020
if tcp:connect(host, port) then
print("connect OK "..host..":"..port)
else
print("connect Error")
end
...
tcp:close()
Сервер у меня на Delphi 7
Какие заявки в стакане с одинаковой ценой удовлетворяются первыми
Пользователь
Сообщений: Регистрация: 13.03.2016
11.12.2020 23:28:09
Задал этот вопрос в техподдержку московской биоржи. Пполучил ответ. "Заявки будут удовлетворены в хронологической последовательности: первыми уйдут те, что раньше попали в торговую систему."
Какие заявки в стакане с одинаковой ценой удовлетворяются первыми
Пользователь
Сообщений: Регистрация: 13.03.2016
11.12.2020 11:36:59
Предположим в стакане заявок по одной цене выставлены на продажу лоты разных пользователей.
Половина заявок в какой то момент времени удовлетворяются.
Вопрос.
Заявки каких пользователей будут удовлетворены на одном уровне цены, если куплена только половина заявок на уровне цены.
Меня интересует валютная секция московской биржи.
Как установить поддержку сокетов в скриптах QUIK ?
Пользователь
Сообщений: Регистрация: 13.03.2016
23.11.2020 14:17:27
Сделал, как вы написали. Не заработало.
Стабильно в QUIK на команду
local socket = require("lib.socket")
возникала ошибка
error loading module 'socket.core' from file 'C:\Open_Broker_QUIK\socket\core.dll':
Не найден указанный модуль.
Потратил три дня. Перепробовал разные варианты.
Стал гуглить и читать форумы.
В этой ветке эту проблему тоже обсуждают
И предлагают какие то непонятные танцы с бубном с подменой файла lua5.1.dll
Но по их методике ошибка у меня не исчезла.
В итоге методом тыка и перебора всех вариантов проблему решил следующим образом.
Сокеты начали работать.
1) Скачал отсюда файл core.dll размером 177152 байт
Это ссылка на тот же сайт что вы дали, но вместо 5.1_MD я качаю 5.1_MT
2) В папке C:\Open_Broker_QUIK\ создал папку socket
3) Положил туда core.dll размером 177152 байт скачанный на шаге 1)
4) В скрипте LUA сокеты подключаю командой socket=require("socket.core")
Никаких других действий не делал. package.path и package.сpath не менял.
Вашего шага 2 тоже не делал.
Подскажите, чем отличаются файлы?
Размер 52224. Эту библиотеку подключить не получилось.
И
размером 177152 байт, с которой нормально заработали сокеты на LUA 5.3
Как установить поддержку сокетов в скриптах QUIK ?
Пользователь
Сообщений: Регистрация: 13.03.2016
18.11.2020 21:17:29
У меня версия QUIK 8.9.0.107
Версия LUA 5.3
Раньше использовал сокеты подключая их командой
socket=require("socket")
После переустановки QUIK выдается сообщение
module 'socket' not found:
Подскажите, пожалуйста, где мне скачать и как установить нужную библеотеку, что бы можно было пользоваться сокетами?
RSI - моя имплементация упорно не совпадает с Квиковой
Пользователь
Сообщений: Регистрация: 13.03.2016
24.05.2019 17:19:51
"Модифицированное скользящее среднее" это частный случай “экспоненциального скользящего среднего”. Для которого сглаживающая константа равна a=1/n
Где n-длина интервала
Все индикаторы на Lua
Пользователь
Сообщений: Регистрация: 13.03.2016
24.05.2019 16:47:09
Делал свою реализацию RSI так что бы она в точности совпадала с реализацией в quik.
Скачал последний файл с примерами реализаций индикаторов.
Посмотрел.
Очень сложный, не читабельный код! Разбираться в алгоритме индикатора по такому коду чрезвычайно сложно.
Комментарии в тексте кода очень бы помогли, а комментариев в коде нет.
Разобрался в вашем коде. Написал свою реализацию RSI намного проще.
Проверил. Результаты RSI она выдает такие же как у вас.
Вот моя реализация RSI.
Код
Settings = {
Name = "rsi",
line = {{
Name = "Horizontal line (top)",
Type = TYPE_LINE,
Color = RGB(140, 140, 140)
},
{Name = "Horizontal line (bottom)",
Type = TYPE_LINE,
Color = RGB(140, 140, 140)
},
{Name = "RSI2",
Type = TYPE_LINE,
Color = RGB(221, 44, 44)
}
},
Horizontal_line="20"
}
function Init()
smoothUp={} --в этом массиве храним сглаженные значения периодов роста
smoothDown={}--в этом массиве храним сглаженные значения периодов падения
return #Settings.line
end
-----------------------------------------------------------
function OnCalculate(Index)
local Out =RSI(Index)
local HL = tonumber(Settings.Horizontal_line)
if HL then
return 50+HL,50-HL,Out
else
return nil,nil,Out
end
end
-----------------------------------------------------------
function RSI(I)-- функция выдает значение RSI для свечи номер I
local valUp,valDown
if I==1 then --Для 1-й свечи результата нет
return
end
local Val=C(I) --Цена закрытия в эту минуту
local ValPrev=C(I-1) --Цена закрытия в предыдущую минуту
if Val>=ValPrev then --Если цена закрытия уувеличилась
valUp=Val-ValPrev
valDown = 0
else
valUp=0
valDown=ValPrev-Val
end
if I==2 then --для 2-й свечи устанавливает сглаженное значение
smoothUp[I]=valUp
smoothDown[I]=valDown
else --Для свечи начиная с 2-й
smoothUp[I]=(smoothUp[I-1]*13+valUp)/14 --Вычисляем сглаженное значение этой свечи для периодов роста
smoothDown[I]=(smoothDown[I-1]*13+valDown)/14 --Вычисляем сглаженное значение этой свечи для периодов падения
end
return 100*smoothUp[I]/(smoothUp[I]+smoothDown[I]) --получаем результирущее значение RSI
end
Индикатор, берущий данные о цене нескольких товаров.
Пользователь
Сообщений: Регистрация: 13.03.2016
13.03.2016 09:35:09
Как сделать индикатор в LULA, который строит данные на основе цен нескольких источников данных? Сделал простой индикатор, работает
Код
Settings=
{
Name = "obratn", --имя индикатора, с которым он будет отображаться в диалоге:
line = {
{
Name = "obratn",
Color = RGB(200,200,200),
Type = TYPE_LINE,
Width = 1
}
}
}
function Init()
return 1 -- количество линий индикатора
end
---------------
function OnCalculate(index)
local v=C(index);
if (v>1) then
return 1/v;
else
return nil;
end
end
Хочу что бы индиктор мог брать исходные данные о ценах на другие биржевые товары. Например, что бы индикатор на графике курса рубль/доллар учитывал в формуле стоимость фьючерса по нефти BR-4.16 [Price] в этот же отрезок времени. С помощью каких функций в теле индикатора можно обратиться к стоимости другого товара в этот же отрезок времени?