Сергей Нечепуренко (Все сообщения пользователя)

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

Страницы: 1
Как установить поддержку сокетов в скриптах QUIK ?
 
Евгений, вот кусок кода на 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
Какие заявки в стакане с одинаковой ценой удовлетворяются первыми
 
Задал этот вопрос в техподдержку московской биоржи.
Пполучил ответ.
"Заявки будут удовлетворены в хронологической последовательности: первыми уйдут те, что раньше попали в торговую систему."
Какие заявки в стакане с одинаковой ценой удовлетворяются первыми
 

Предположим в стакане заявок по одной цене выставлены на продажу лоты разных пользователей.

Половина заявок в какой то момент времени удовлетворяются.

Вопрос.

Заявки каких пользователей будут удовлетворены на одном уровне цены, если куплена только половина заявок на уровне цены.

Меня интересует валютная секция московской биржи.

Как установить поддержку сокетов в скриптах QUIK ?
 

Сделал, как вы написали. Не заработало.

Стабильно в QUIK на команду

local socket = require("lib.socket")

возникала ошибка

error loading module 'socket.core' from file 'C:\Open_Broker_QUIK\socket\core.dll':

               Не найден указанный модуль.

Потратил три дня. Перепробовал разные варианты.

Стал гуглить и читать форумы.

В этой ветке эту проблему тоже обсуждают

https://github.com/finsight/QUIKSharp/issues/201

И предлагают какие то непонятные танцы с бубном с подменой файла lua5.1.dll

Но по их методике ошибка у меня не исчезла.

В итоге методом тыка и перебора всех вариантов проблему решил следующим образом.

Сокеты начали работать.

1)      Скачал отсюда файл core.dll размером 177152 байт

https://github.com/finsight/QUIKSharp/tree/master/src/QuikSharp/lua/clibs64­/5.1_MT/socket

Это ссылка на тот же сайт что вы дали, но вместо 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 тоже не делал.

Подскажите, чем отличаются файлы?

https://github.com/finsight/QUIKSharp/blob/master/src/QuikSharp/lua/clibs64­­/53_MD/socket/core.dll

Размер 52224. Эту библиотеку подключить не получилось.

И

https://github.com/finsight/QUIKSharp/blob/master/src/QuikSharp/lua/clibs64­­/53_MT/socket/core.dll

размером 177152 байт, с которой нормально заработали сокеты на LUA 5.3

Как установить поддержку сокетов в скриптах QUIK ?
 

У меня версия QUIK 8.9.0.107

Версия LUA 5.3

Раньше использовал сокеты подключая их командой

socket=require("socket")

После переустановки QUIK выдается сообщение

module 'socket' not found:

Подскажите, пожалуйста, где мне скачать и как установить нужную библеотеку, что бы можно было пользоваться сокетами?

RSI - моя имплементация упорно не совпадает с Квиковой
 

"Модифицированное скользящее среднее" это частный случай “экспоненциального скользящего среднего”. Для которого сглаживающая константа равна a=1/n

Где n-длина интервала

Все индикаторы на Lua
 

Делал свою реализацию 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

Индикатор, берущий данные о цене нескольких товаров.
 
Как сделать индикатор в 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] в этот же отрезок времени.
С помощью каких функций в теле индикатора можно обратиться к стоимости другого товара в этот же отрезок времени?
Страницы: 1
Наверх