Quik Lua

Сайт продукта: https://forum.quik.ru/forum10/
Lua — язык программирования, который используется в программировании торговых роботов под популярный в России терминал Quik.
  1. Аватар Serg
    Все слолмалось, или что я упустил?

    Сегодня сломался робот на клуа (автостоп + по мелочи) и странные ГО — дробные и разные продавца и покупателя, на примере фьюча сбера. Может кто знает что произошло? Там чего то на бирже меняли, но почему все поломалось то?
  2. Аватар Boris Litvinov
    Продолжение Средневзвешенная цена фьючерса,контроль набора позиций в QUIK

    Вчера написал скрипт на LUA
    Вычисление средней для Фьюча. 
    но как обычно прежде чем доверить ему боевой режим крези тест.
    Который не смог пройти.
    Как это работает. Колбек OnTrade складывал value. BUY как есть,
    Sell наделял "-"  
    После делил на количество лотов. И всё работало.
    А да, там приходит по три пакета, поставил фильтр что бы одни и те же trade_num (Номер сделки в торговой системе)не учитывались

    В общем если торгую одним лотом всё гуд. Но стоит кинуть большим лотом. Или делать много сделок подряд. Беда
    Такое ощущение что колбеки не приходят. Простейший парсинг и сложение value не работает. 
    Что делаю не так? На форуме квика смешали всё в кучу. OnTransReply,  OnTrade, OnOrder.
    Тут одно не пашет OnTrade. А там проверки перепроверки устроили говно скрипты не рабочие. ОНО ТУПО НЕ ПАШЕТ, какие блядь проверки. Когда не приходят кол беки с 2015 года ваши темы, и не одна не рабочая. Рассинхрон полный. В общем ХЕЛП

    И ещё, после того как сработал колбек OnTrade, в его теле вызываю функцию в которой происходит пересчет текущей позы.
    И что вы думаете, сделка исполнена, а поза прежняя. И только спустя какое то время срабатывает правильный пересчет
    Он происходит из кол бека OnFuturesClientHolding (Функция вызывается терминалом QUIK при изменении позиции по срочному рынку)
    Разрыв в пределах секунды. Вот такой тормоз!!!!!!!!
    ХЕЛП по первому пункту. почему пропускаются кол беки?
    Готов их дождаться, только они не приходят, не с задержкой не без неё. 
    И зря вы думаете что ШАРПЫ, АЛАБЫ в целом вся эта глючная шляпа кого та спасет. Там это всё работает через эту же прослойку!
    И только добавит новых глюков.  Удачных глючных трейдов!



  3. Аватар Alex Hell
  4. Аватар kahuna
    В связи с блокировкой telergam.Подскажите идею оповещалки для бота на lua.

    В связи с блокировкой telergam.
    Подскажите идею оповещалки для бота на lua.
    СМС оповещение у меня сделано через свой модем,
    но хочется что-нибудь халявное как с telegram.
  5. Аватар bakiforest@mail.ru
    ZigZag на КВИК

    Здравствуйте ВСЕМ! Обращаюсь с просьбой. Скачал индикатор ZigZag на LUA. Попытался его установить на КВИК. Ничего не получается. Сначала создал папку QUIK/LuaIndicators, в нее скачал два варианта ZigZag))). Открыл КВИК — в окне установки индикаторов ZigZag не отображается(((.
    КВИК перезагружал-безрезультатно.В папке LuaIndicators лежат файлы:Bot4Sale.dll,ZigZag.lua,Zigzag_nl.lua,Zigzag_full.lua, Описание.txt и папка ZigZag с файлами:ZigZag.lua,Zigzag_nl.lua,Zigzag_full.lua, Описание.txtМ.б. что-то лишнее?
    Помогите пжл.
  6. Аватар Маркин Павел
    Стакан на графике | LUA QUIK

    Просто, коротко, минималистично.

    Стакан на графике | LUA QUIK
    Файл:
    xQuote.lua

    Как запустить:

    1. Скопировать в папку LuaIndicators и добавить индикатор.

    2. в свойствах графика инструмента прописать наименование идентификатора.
    Стакан на графике | LUA QUIK

    3. В свойствах индикатора прописать тоже наименование индикатора
    Стакан на графике | LUA QUIK

    4.Окно котировок (стакан) должно быть открытым!!!

    5. Наслаждаемся)))

    Распаковать в папку LuaIndicators и добавить индикатор.

  7. Аватар Alex Hell
    (QUIK Lua) Здравствуйте, я знаю что вас задолбали такие как я) но прошу помочь с кодом, конкретно нужен код для получения цены открытой позиции,цена нужна для выставления точного стоп ордера. Спасибо

    (QUIK Lua) Здравствуйте, я знаю что вас задолбали такие как я) но прошу помочь с кодом, конкретно нужен код для получения цены открытой позиции, цена нужна для выставления точного стоп ордера.Спасибо
  8. Аватар gardist
    график нефть в рублях в Квике

    1. В папке с Квиком создаем директорию LuaIndicators.
    2. В этой папке создаем файл br_rub.lua, туда записываем:

    Settings = 
    {
    Name = «BR_RUB»,
    tag = «USDRUB»,
    tag1 = «BR»,
    line=
    {
    {Name = «brent_rub», Color = RGB(0, 0, 255), Type = 1,Width = 1}
    }
    }

    function Init()
    return 1
    end

    function OnCalculate(index)
    local Out = (getCandlesByIndex(Settings.tag1, 0, index-1, 1)[0].close or 0) * (getCandlesByIndex(Settings.tag, 0, index-1, 1)[0].close or 0)
    if Out > 0 then
    return Out
    else
    return nil
    end
    end

    1. В Квике создаем график с курсом доллара (USDRUB_TOM).
    2. К графику добавляем график с брентом (BR-3.18).
    3. Идем в настройки графика, в разделе Дополнительно указываем Идентификатор: BR -для графика с брентом, USDRUB- для графика с курсом.
    4. Добавляем индикатор (выбираем из выпадающего списка BR_RUB).
    график нефть в рублях в Квике
    5. Уменьшаем ненужные поля. Если график не отобразился — даблкликаем на графике — жмем Применить:
    график нефть в рублях в Квике
    ссылка на файл

    кросспост rffx.ru

  9. Аватар Boris Litvinov
    Тиковый торговый движок на LUA. Первый сделки

    Первые сделки по тренду.
    Тиковый торговый движок на LUA. Первый сделки
    Контр тренд. Но контр не стал торговать. 
    И там и там плюс
    Тиковый торговый движок на LUA. Первый сделки





  10. Аватар Boris Litvinov
    Тест на стабильность системы транзакций для движка LUA

    стабильный круг без остановок связанных с защитными функциями не срабатывания,
    двойными транзакциями, рассинхронизацией. Тест дал минимум 300мск 
    Это на всё что способен сервак квик!!!
    Но опять же, на демо сервере. 
    Ускорил написание копи пестам, частей скрипта Sergey Pavlov
    З
    а что ему благодарен.
  11. Аватар Boris Litvinov
    Тиковый движок интрадей + простейший скальпер бот Lua

    Ранее рассмотрели движок, + простейший бот "контртренд"
    Рассмотрим работу простейшего скальпер, интрадей бота. На остове того же движка.
    Скоро продемонстрирую систему транзакций скальпера, его стабильность, скорость  и
    не возможности рассинхронизации с рынком,  поговорим о проскальзываниях!

    доступность написания, простота скрипта  торгового робота, не сложнее примера ниже
    Тиковый движок интрадей + простейший скальпер бот Lua




     

  12. Аватар Boris Litvinov
    Интрадей движок на lua, за выходные

    Понимаю что STOK SHARP для программистов. 
    +После тестов стабильности, пришел к вывожу что S# не стабилен!
    Развиваю конечно и эту ветку...
    Но.Решил переписать движки с Qpile на Lua. Который стабильней в разы. Собственным опытом.
    Движок интрадей — скальпер.

    А вот скрипт простейшего бота что на видео. Простота!
    Интрадей движок на lua, за выходные




     

  13. Аватар Nikolay_2323
    Реализация Алгоритма под Quik

    Добрый день!

    Ищу исполнителя по реализации алгоритма под Quik.
    Алгоритм не сложный. Расчертить уровни лесенкой и исполнять по ним входы/выходы.
    Предложения напишите в личку пожалуйста.




    Помогите, пожалуйста, плюсами с выводом на главную....

    Заранее спасибо!
  14. Аватар Настя Степанцовва
  15. Аватар AlexGood
    Установка индикаторов Квик

    Друзья, добрый вечер! Подскажите каким образом установить в Квик 7.14.1.7 пользовательские индикаторы (.lua)?
  16. Аватар Sergey Pavlov
    Как в квике получить текущую позицию по бумагам

    Коллеги! Помогите решить простую задачку.

    Дано: имеются позиции по бумагам (TQBR).

    Надо: получить текущую позицию по каждой бумаге при помощи LUA.

    Пробовал пользоваться таблицами depo_limits, firm_holding и account_balance.

    Хоть каких-то чисел добился лишь через таблицу depo_limits следующим кодом:
    pos1={}
    pos2={}
    for j=0,getNumberOf("DEPO_LIMITS")-1 do
     pos1[#pos1+1]=getItem("DEPO_LIMITS",j).sec_code
     pos2[#pos2+1]=getItem("DEPO_LIMITS",j).currentbal
    end
    Проблема такого варианта в том, что он показывает ненулевые значения в currentbal только для позиций, которые были открыты ранее (возможно, по которым прошло +2 дня). По позициям, которые были открыты сегодня, он точно показывает 0.

    Подскажите, как правильно решить эту задачку?

    Премного благодарен:)
  17. Аватар nicknh
    Индикаторы для Квика

    Всем привет.

    Я писал для себя несколько индикаторов для Квика. Все они здесь - https://github.com/nick-nh/qlua.
    Часть — подсмотренные и адаптированные идеи, часть сам писал. Никогда не думал их делать закрытыми.
    Возможно, кому-то будут полезными.

    Да простит меня Тимофей, дам ссылку на МФД, где я выкладывал их ранее c описанием.
    forum.mfd.ru/forum/poster/?id=85696
  18. Аватар Dzam
    Справочник Lua для Quik


    Справочник Lua для Quik

     
    В статье речь пойдет о новом справочнике luaq.ru
    У каждого разный подход к созданию роботов: одни заказывают у разработчиков, другие используют программы и строят алгоритмы из кубиков, третьи пишут сами использую языки программирования.

    Я хочу рассказать о проблемах и решениях написания роботов на языке Lua для платформы Quik. Я не храню в голове весь справочник функций, которые предоставляют языки и платформы. Почти у каждого есть свой online справочник (кроме quik Lua). Когда-то был сайт qlua.net (или .org). Но срок домена закончился и сайт ушел в другом направлении. Конечно можно открыть PDF версию справочника и искать там, но это не всегда удобно. Да и этих PDF несколько и иногда они ссылаются друг на друга. Предоставленные примеры скорее вызывают улыбку. Есть несколько огромных примеров работы с таблицами и «Пример реализации игры «Крестики-нолики»». Оба примера настраивают на торговый лад. :)
    Я периодически использовал ресурс https://quikluacsharp.ru очень полезный и хороший ресурс, где много всего. Но искать конкретные функции и их описание не так удобно. В итоге создал свой справочник, точнее свой ресурс www.luaq.ru
    Тут можно найти описание каждой функции, таблицы, на которые ссылается функция или ее параметры, а также бесплатно (пока бесплатно) заказать примеры для конкретных функций. Прошу любить и не жаловаться. Шутка. Жаловаться можно и нужно.
  19. Аватар Кирков Алексей
    lua

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

    Многолетнее использование Lua в QUIK`е подтолкнуло к идее использовать скриптовый язык в других приложениях.
    Из всего немногочисленного набора того, что есть для C# удалось найти:
    — NLua — 18K скачиваний в NuGet
    — LuaInterface -?
    — NeoLua – 50k скачиваний в NuGet
    — LuBox – 1k скачиваний в NuGet

    Автор проекта LuaInterface давно не поддерживает проект и прямо говорит, что NLua успешно продолжает его дело.

    NeoLua – наиболее популярен среди программистов в NuGet.

    LuBox показался удобным и наиболее «молодым» проектом.

    Кто-нибудь из смартлабовцев использовал какую-то из этих библиотек для встраивания Lua-скриптов? Поделитесь опытом использования: плюсы, минусы, баги.

     

     

     

  20. Аватар GVS
  21. Аватар h.
    Баги QUIK. алготрейдерам

    Добрый день.
        Собирал, через коннектор(самописный) Lua и C++, дату с квика: лента, стакан, ои и пр.
        Обнаружил, что свернутый в трей КВИК начинает общаться с сервером раз в 10-15 сек.Баги QUIK.  алготрейдерам

        Пакеты трафика не анализировал через tcpdump и пр. проги, но по косвенным признакам: помимо нагрузки сети и «моргания лампочки модема  :-)», вижу, что и в записанном файле дата представленна неровными временными срезами.

        Уважаемые знатоки вопрос:
     1) есть ли, в настройках QUIK, возможность исправить вышеизложенное.
     2) присутсвует ли в МТ5 или (др. проги по совету)  такая проблема.
     3) какой софт вы используете.
  22. Аватар Sergey Pavlov
    Код робота на LUA для QUIK

    В двух словах: робот анализирует спот, выставляет лимитные и стоп-лимитные заявки по фьючерсу. Делает пересчет сигналов по выбранному тайм-фрейму, снятие выставленных заявок, запись в файл текущего состояния, ведение логов, сообщения, запрос текущей позиции и пр. Из робота удалена алгоритмика вычисления сигнала и в текущем виде скрипт будет иметь сигнал на покупку на каждом баре.

    Предназначается для новичков в алготрейдинге, что-то типа болванки.

    Важно: выставление заявок я закомментировал, поэтому можете смело запускать этот скрит, он не натворит ужаса по счету.

    require"QL"
    
    log = "sbrf.log"
    seccode = "SRM6"
    lots_in_trade = 80
    accnt = ""
    better = -5
    chart = "sberbankxxx"
    is_run = true
    prev_datetime = {}
    len = 100
    basis = 9
    k_bal = {0,1,2,3}
    sell = false
    buy = false
    id = 0
    first = true
    
    function trade_signal(shift)
            number_of_candles = getNumCandles(chart)
            bars_temp,res,legend = getCandlesByIndex(chart,0,number_of_candles-2*len-shift,2*len)
            bars={}
    
            i=len
            j=2*len
            while i>=1 do
                    if bars_temp[j-1].datetime.hour>=10 then
                            sk=true
                            if bars_temp[j-1].datetime.hour==18 and bars_temp[j-1].datetime.min==45 then
                                    sk=false
                            end
                            if sk then
                                    bars[i]=bars_temp[j-1]
                                    i=i-1
                            end
                    end
                    j=j-1
            end
    
            t = len+1
    
            do_sell = false
            do_buy = true
    
            value = 0
            if do_sell then value = 1 end
            if do_buy then value = -1 end
            toLog(log,"value="..value.." on candle: "..bars[len].datetime.year.."-"..bars[len].datetime.month.."-"..bars[len].datetime.day.." "..bars[len].datetime.hour..":"..bars[len].datetime.min.."   O="..bars[len].open.." H="..bars[len].high.." L="..bars[len].low.." C="..bars[len].close.." V="..bars[len].volume)
            return value
    end
    
    function mysplit(inputstr, sep)
            if sep == nil then
                    sep = "%s"
            end
            local t={} ; i=1
            for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
                    t[i] = str
                    i = i + 1
            end
            return t
    end
    
    function OnInit(path)
            log=getScriptPath()..'\\'..log
            toLog(log,"==========OnInit: START")
            toLog(log,"==========OnInit: FINISH")
    end
    
    function OnStop()
            is_run = false
            toLog(log,"==========OnStop: script finished manually")
    end
    
    function CheckBit(flags, bit)
       -- Проверяет, что переданные аргументы являются числами
       if type(flags) ~= "number" then error("Ошибка!!! Checkbit: 1-й аргумент не число!"); end;
       if type(bit) ~= "number" then error("Ошибка!!! Checkbit: 2-й аргумент не число!"); end;
       local RevBitsStr  = ""; -- Перевернутое (задом наперед) строковое представление двоичного представления переданного десятичного числа (flags)
       local Fmod = 0; -- Остаток от деления
       local Go = true; -- Флаг работы цикла
       while Go do
          Fmod = math.fmod(flags, 2); -- Остаток от деления
          flags = math.floor(flags/2); -- Оставляет для следующей итерации цикла только целую часть от деления
          RevBitsStr = RevBitsStr ..tostring(Fmod); -- Добавляет справа остаток от деления
          if flags == 0 then Go = false; end; -- Если был последний бит, завершает цикл
       end;
       -- Возвращает значение бита
       local Result = RevBitsStr :sub(bit+1,bit+1);
       if Result == "0" then return 0;
       elseif Result == "1" then return 1;
       else return nil;
       end;
    end;
    
    function killorders(ccode,scode)
        for i=0,getNumberOf("orders")-1,1 do
            local t=getItem("orders", i)
            if t ~= nil and type(t) == "table" then
                if( t.seccode == scode and CheckBit(t.flags, 0) == 1) then
                    local transaction={
                        ["TRANS_ID"]=tostring(math.random(2000000000)),
                        ["ACTION"]="KILL_ORDER",
                        ["CLASSCODE"]=ccode,
                        ["SECCODE"]=scode,
                                            ["ACCOUNT"] = accnt,
                        ["ORDER_KEY"]=tostring(t.ordernum),
                    }
                                    res=sendTransaction(transaction)
                end
            end
        end
    end
    
    function killstoporders(ccode,scode)
        for i=0,getNumberOf("stop_orders")-1,1 do
            local t=getItem("stop_orders", i)
            if t ~= nil and type(t) == "table" then
                if( t.seccode == scode and CheckBit(t.flags, 0) == 1) then
                    local transaction={
                        ["TRANS_ID"]=tostring(math.random(2000000000)),
                        ["ACTION"]="KILL_STOP_ORDER",
                        ["CLASSCODE"]=ccode,
                        ["SECCODE"]=scode,
                                            ["ACCOUNT"] = accnt,
                        ["STOP_ORDER_KEY"]=tostring(t.ordernum),
                    }
                                    res=sendTransaction(transaction)
                end
            end
        end
    end
    
    
    function main()
            toLog(log,"==========main: START")
            while is_run do
                    if isConnected() == 1 then
                            ss = getInfoParam("SERVERTIME")
                            if string.len(ss) >= 5 then
                                    hh = mysplit(ss,":")
                                    str=hh[1]..hh[2]
                                    h = tonumber(str)
                                    if (h>=1000 and h<1400) or (h>=1405 and h<1845) or (h>=1905 and h<2350) then
                                            if first then
                                                    for ti = 50,2,-1 do     trade_signal(ti) end
                                                    if buy and not sell then message(seccode.." Current state: green and buy",1) end
                                                    if sell and not buy then message(seccode.." Current state: red and sell",1) end
                                                    if buy and sell then message(seccode.." ERROR: green and red",1) end
                                                    if not buy and not sell then message(seccode.." WARNING: nothing",1) end
                                                    first = false
                                            end
                                            prev_candle = getPrevCandle(chart,0)
                                            if not isEqual(prev_candle.datetime,prev_datetime) then
                                                    current_value = trade_signal(1)
    
                                                    if current_value ~= 0 then
                                                            optn = "B"
                                                            if current_value==1 then optn = "S" end
                                                            curvol=0
                                                            no=getNumberOf("FUTURES_CLIENT_HOLDING")
                                                            if no>0 then
                                                                    for i=0,no-1,1 do
                                                                            im=getItem("FUTURES_CLIENT_HOLDING", i)
                                                                            if im.sec_code==seccode then
                                                                            curvol=im.totalnet
                                                                            end
                                                                    end
                                                            end
                                                            trvol = -current_value*lots_in_trade-curvol
                                                            if trvol ~= 0 then
                                                                    killorders("SPBFUT",seccode)
                                                                    killstoporders("SPBFUT",seccode)
                                                                    f = io.open(getScriptPath().."\\sbrf2_pos.txt","r")
                                                                    sbrf2_pos=f:read("*n")
                                                                    f:close()
                                                                    f = io.open(getScriptPath().."\\sbrf3_pos.txt","r")
                                                                    sbrf3_pos=f:read("*n")
                                                                    f:close()
                                                                    pr,n,l = getCandlesByIndex ("futsber", 0, getNumCandles("futsber")-1, 1)
                                                                    local trans =
                                                                    {
                                                                            ["ACTION"] = "NEW_ORDER",
                                                                            ["CLASSCODE"] = "SPBFUT",
                                                                            ["SECCODE"] = seccode,
                                                                            ["ACCOUNT"] = accnt,
                                                                            ["OPERATION"] = optn,
                                                                            ["PRICE"] = toPrice(seccode,pr[0].close+current_value*better),
                                                                            ["QUANTITY"] = tostring(math.abs(curvol-sbrf2_pos-sbrf3_pos)),
                                                                            ["TRANS_ID"] = tostring(getTradeDate().month*100+getTradeDate().day+id)
                                                                    }
                                                                    id = id+1
                                                                    --res = sendTransaction(trans)
                                                                    message(seccode.." Send : " .. res, 2)
                                                                    toLog(log,"Send: ".. res)
                                                                    for btr=0,200,5 do
                                                                            local trans =
                                                                            {
                                                                                    ["ACTION"] = "NEW_STOP_ORDER",
                                                                                    ["CLASSCODE"] = "SPBFUT",
                                                                                    ["SECCODE"] = seccode,
                                                                                    ["ACCOUNT"] = accnt,
                                                                                    ["OPERATION"] = optn,
                                                                                    ["PRICE"] = toPrice(seccode,pr[0].close-current_value*btr),
                                                                                    ["STOPPRICE"] = toPrice(seccode,pr[0].close-current_value*(btr+better)),
                                                                                    ["QUANTITY"] = tostring(6),
                                                                                    ["TRANS_ID"] = tostring(getTradeDate().month*100+getTradeDate().day+id),
                                                                                    ["EXPIRY_DATE"] = "GTC"
                                                                            }
                                                                            id = id+1
                                                                            --res = sendTransaction(trans)
                                                                            message(seccode.." Send : " .. res, 2)
                                                                            toLog(log,"Send: ".. res)
                                                                    end
                                                                    if current_value == 1 then
                                                                            message(seccode..' RED: buy->sell',1)
                                                                            toLog(log,"RED signal")
                                                                    else
                                                                            message(seccode..' GREEN: sell->buy',1)
                                                                            toLog(log,"GREEN signal")
                                                                    end
                                                            else
                                                                    if current_value == 1 then
                                                                            message(seccode..' RED: buy->sell',1)
                                                                            toLog(log,"RED signal, but nothing to do")
                                                                    else
                                                                            message(seccode..' GREEN: sell->buy',1)
                                                                            toLog(log,"GREEN signal, but nothing to do")
                                                                    end
                                                            end
                                                    else
                                                            if buy and not sell then toLog(log,"Nothing to do. Current state: green and buy",1) end
                                                            if sell and not buy then toLog(log,"Nothing to do. Current state: red and sell",1) end
                                                            if buy and sell then toLog(log,"Nothing to do. ERROR: green and red",1) end
                                                            if not buy and not sell then toLog(log,"Nothing to do. WARNING: nothing",1) end
                                                    end
                                                    prev_datetime = prev_candle.datetime
                                            end
                                    end
                            end
                    end
                    sleep(5*1000)
            end
            toLog(log,"==========main: FINISH")
    end
    
  23. Аватар Albus (Игорь Китаев)
    Скорость серверов Открытия

    Мой друг несколько лет назад написал программу на Луа. Она выставляет в КВИК и сразу снимает 20 заявок. Это происходит по очереди, одна заявка за другой. Робот замеряет сколько времени ушло на выставление и сколько времени на снятие. Заявки ставятся далеко от рынка, поэтому сделок не происходит.
    Вот сегодняшний тест серверов брокера Открытие. Я арендую виртуалку с московским IP, так что все заявки выставляются из Москвы.
    Речь про эти сервера, которые можно выбирать при залогинивании в КВИК.
    Скорость серверов Открытия

    -1-
    Выделенный сервер с повышенной скоростью и мощным железом. Он платный. С него торгует мой робот, которому нужна скорость.
    Вот тест сервера:
    Скорость серверов Открытия
    Данные в секундах. То есть средняя задержка выставления заявки 71 миллисекунда. Средняя задержка снятия 61 миллисекунда. Это конечно не ХФТ, но всё равно неплохо.
    -2-
    Следующий сервер Открытия — «Сервер 1 Билайн». Он доступен для всех.
    Скорость серверов Открытия
    Как видите, робот всё равно ставит этому серверу твёрдую пятёрку. Потому что средняя задержка постановки 229 миллисекунд и средняя задержка снятия 213 миллисекунд — это очень хороший результат для обычного (не платного) сервера.

    -3-
    Следующий общедоступный сервер Открытия. Сервер 1 Макомнет.
    Скорость серверов Открытия
    Скорость почти такая же как у предыдущего.
    -4-
    Сервер с названием «Открытие сервер 3»
    Скорость серверов Открытия
    Цифры почти такие же. И опять робот ставит оценку «пять».
    -5-
    Открытие Сервер 4 Макомнет. Крутейший из бесплатных.
    Скорость серверов Открытия
    103 миллисекунды — средняя задержка выставления
    116 миллисекунд — средняя задержка снятия.
    Это самый быстрый результат среди бесплатных серверов Открытия. Он всего в два раза медленнее платного выделенного сервера. Мои роботы, которым не нужна высокая скорость, торгуют с него. 
    -6-
    И последний «Сервер 4 Реллайн». 
    Скорость серверов Открытия
    Задержка постановки 235
    Задержка снятия 203.
    То есть он обычный середнячок. «Пятёрка», но не «пять с плюсом».
    ----------
    Большой выбор серверов — это огромное преимущество для брокера. До Открытия я торговал в Неттрейдере. У них удобный личный кабинет, красиво считается доходность портфеля, наглядно учитываются сделки, но… сервер всего и один и постоянно глючит. Бывало что несколько дней подряд час-полтора КВИК не работал. И перескочить на другой сервер было нельзя, потому что сервер всего один. А каждое утро в 10-30 у них на этом сервере запускалась какая-то программа, может быть бэк офиса, может быть бухгалтерии, которая что-то интенсивно считала и вызывала дикие невыносимые тормоза в клиентских КВИКах. 
    Поэтому я сбежал от них в Открытие. 
    Такие дела. 
    Всем удачных торгов!
  24. Аватар jeremy
    Нужен робот для Quik

    Комрады, кто пишет для QUIK на lua/Qlua/qpile? К кому можно обращаться?
  25. Аватар 222
    Lua

    Всем добрый день. Появилась необходимость написать робота, но из языков программирования знаю только R, а говорят необходимо изучать lua.  Подскажите есть ли у кого опыт работы с данным языком, на сколько он сложен или возможно пойти по какому то другому пути?
     
Чтобы купить акции, выберите надежного брокера: