Quik Lua

Сайт продукта: https://forum.quik.ru/forum10/
Lua — язык программирования, который используется в программировании торговых роботов под популярный в России терминал Quik.
  1. Аватар Vitaliy
    LUA - код инструмента - вопрос
    Доброго дня, уважаемые коллеги! 

    Возник у меня вопрос. Пишу я робота, написал робота, все красиво — хочу, к примеру, его продать, либо же хочу просто не заморачиваться более влезанием в код или еще что — не суть. Вот у меня в роботе прописан код инструмента. Можно ли как-то сделать так, чтобы при смене инструмента после экспирации робот автоматически стал использовать новый код? Может через идентификатор, который вешается на график или еще как. 

    С индикаторами все просто — там берем getDataSourceInfo и готово. А вот именно со скриптом как быть? Дергать эту информацию из какого-либо индикатора и передвать ее в скрипт тоже не особо красивое решение задачи.

    Буду рад, если есть идеи.

    С уважением, Виталий.

    Авто-репост. Читать в блоге >>>
  2. Аватар Eugene Bright
    LUA: Построитель графиков. Просто поделиться. (по заявкам - сложение и вычитание графиков)
       Предыдущий краткий постик вызвал определенный интерес, что настраивает на позитив.

       Как это водится, возникли и пожелания.
      Одно из них, в силу простоты реализации решения, выкладываю. Реализованы дополнительные две кнопки построения графиков суммы и разности двух источников.
      Скрин новой возможности:

    Сложение и вычитание графиков

    Пока всё просто...

    ссылка на архив -здесь.

    Авто-репост. Читать в блоге >>>
  3. Аватар Turbo Pascal
    TurboStop (автостоп)
    Искал скрипт по автоматическому выставлению стопа при входе в сделку. Когда-то пользовался скриптом, который заказывал давным давно у какбыгобота (который конечно пришлось переписывать), но и он прекратил работать при переходе на QUIK 8.

    Вариантов для квика нашел немного.

    Из платного: несколько, от 1500 до 12000, в зависимости от наглости продавца (но никак не характеризует сам скрипт). Жаба не завизировала, ибо, на мой взгляд, это скрипт простой, как винтовка Мосина (странно что разработчики квика никак это не сделают, хотя их уже давно просят).

    Из бесплатного:
    1) http://o-s-a.net/forum/threads/23
    Не попробовал, т.к. скачать так и не удалось. Авторизоваться на этом кривом сайте то ещё приключение.
    2) Автостоп от какбыгобота. У него всего две проблемы: он не наботает, и он тащит с собой закрытые библиотеки и EXE-файл для настройек, которые и так можно поправить в текстовых файлах. Это стрём — х.з. что наш знаменитый говнокодер туда встроил.

    Авто-репост. Читать в блоге >>>
  4. Аватар Денис Базарнов
    Прилипала для Quik


    Всем привет. В своих прошлых постах я писал, что увлекся анализом обезличенных сделок.
    Вот что описывал:
    https://smart-lab.ru/blog/583818.php
    https://smart-lab.ru/blog/584792.php

    В комментариях и личных сообщениях меня активно просили разработать аналог «Прилипалы» для Квика (Quik). Ну не прошло и полгода, как сделал. Забрать можно вот отсюда:
    https://кбс.онлайн/soft.html

    На странице есть бесплатная версия, полностью аналогичная таблице в Excel, пользуйтесь на здоровье.

    Но… ну или как говорил Джобс «Ах да, забыл сказать… » — в своих поисках я ушел дальше, а именно:
    1) Реализовал индикацию изменения скорости сделок. Как сделал и зачем? Как: считаю каждую минут число сделок, через минуту с момента запуска скрипта начинаю делить общее число сделок на количество прошедших минут. Так получаем среднюю скорость. Чем больше прошло времени, тем объективнее средняя скорость. Ну а резкое изменение скорости фиксируется когда текущая скорость вдвое выше средней. Зачем: на момент осуществления больших сделок резко вырастает скорость. Почему? Представьте «боковое» движение: цена меняется не сильно, кто-то «немного» покупает, кто-то продает. И тут приходят «ребята с большими деньгами» и выкупают большой объем акций, тем самым закрывая большой объем выставленных заявок. Поэтому и скорость резко увеличивается.
    2) Подгружаю весь архив обезличенных сделок с начала торгового дня. Предидущая версия Прилипалы (та которая в Excel-е) — работала в режиме реального времени.
    3) Начал экспериментировать с Телеграммом — создал канал kbs.online (



    Авто-репост. Читать в блоге >>>
  5. Аватар Eugene Bright
    LUA: Построитель графиков. Просто поделиться.
    Бэктесты, построенные непосредственно в QUIK'e, формируют прогнозные PL тестируемых стратегий в виде простых одномерных индексированных таблиц LUA.
        Но прежде, чем детально копаться в стратегии и манипулировать параметрами (мой LUA-тестер «заточен» и на ввод «точечных» наборов параметров и на перебор Монте-Карло), будет логично качественно оценить направление результатов. Так сказать, посмотреть тренд прибыльности: есть она, эта прибыль, или её стратегия даже не прогнозирует...
       Поскольку, как я писал в предыдущем посте, я — не академик в софте, то просто написал свой графопостроитель.
       Наверное, он смотрится наивно, но, может быть, он и в таком виде сгодится. Обрабатывает сразу 5 файлов (iup позволяет не больше 20 за раз).

      Скрины в порядке манипуляций:

    Главная форма

    Выбрать файл - источник данных

    Авто-репост. Читать в блоге >>>
  6. Аватар Fin-65
    Нужен индикатор MACD для квика, стандартный не катит, нужен как в МТ4 стоял. второй который залил на яндекс yadi.sk/d/hbfIYDrc_rNXWw

    код
    //+------------------------------------------------------------------+
    //| Custom MACD.mq4 |
    //| Copyright 2005-2014, MetaQuotes Software Corp. |
    //| www.mql4.com |
    //+------------------------------------------------------------------+
    #property copyright «2005-2014, MetaQuotes Software Corp.»
    #property link «www.mql4.com»
    #property description «Moving Averages Convergence/Divergence»
    #property strict

    #include <MovingAverages.mqh>

    //--- indicator settings
    #property indicator_separate_window
    #property indicator_buffers 2
    #property indicator_color1 Silver
    #property indicator_color2 Red
    #property indicator_width1 2
    //--- indicator parameters
    input int InpFastEMA=12; // Fast EMA Period
    input int InpSlowEMA=26; // Slow EMA Period
    input int InpSignalSMA=9; // Signal SMA Period
    //--- indicator buffers
    double ExtMacdBuffer[];
    double ExtSignalBuffer[];
    //--- right input parameters flag
    bool ExtParameters=false;

    //+------------------------------------------------------------------+
    //| Custom indicator initialization function |
    //+------------------------------------------------------------------+
    int OnInit(void)
    {
    IndicatorDigits(Digits+1);
    //--- drawing settings
    SetIndexStyle(0,DRAW_HISTOGRAM);
    SetIndexStyle(1,DRAW_LINE);
    SetIndexDrawBegin(1,InpSignalSMA);
    //--- indicator buffers mapping
    SetIndexBuffer(0,ExtMacdBuffer);
    SetIndexBuffer(1,ExtSignalBuffer);
    //--- name for DataWindow and indicator subwindow label
    IndicatorShortName(«MACD(»+IntegerToString(InpFastEMA)+","+IntegerToString(InpSlowEMA)+","+IntegerToString(InpSignalSMA)+")");
    SetIndexLabel(0,«MACD»);
    SetIndexLabel(1,«Signal»);
    //--- check for input parameters
    if(InpFastEMA<=1 || InpSlowEMA<=1 || InpSignalSMA<=1 || InpFastEMA>=InpSlowEMA)
    {
    Print(«Wrong input parameters»);
    ExtParameters=false;
    return(INIT_FAILED);
    }
    else
    ExtParameters=true;
    //--- initialization done
    return(INIT_SUCCEEDED);
    }
    //+------------------------------------------------------------------+
    //| Moving Averages Convergence/Divergence |
    //+------------------------------------------------------------------+
    int OnCalculate (const int rates_total,
    const int prev_calculated,
    const datetime& time[],
    const double& open[],
    const double& high[],
    const double& low[],
    const double& close[],
    const long& tick_volume[],
    const long& volume[],
    const int& spread[])
    {
    int i,limit;
    //---
    if(rates_total<=InpSignalSMA || !ExtParameters)
    return(0);
    //--- last counted bar will be recounted
    limit=rates_total-prev_calculated;
    if(prev_calculated>0)
    limit++;
    //--- macd counted in the 1-st buffer
    for(i=0; i<limit; i++)
    ExtMacdBuffer[i]=iMA(NULL,0,InpFastEMA,0,MODE_EMA,PRICE_CLOSE,i)-
    iMA(NULL,0,InpSlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
    //--- signal line counted in the 2-nd buffer
    SimpleMAOnBuffer(rates_total,prev_calculated,0,InpSignalSMA,ExtMacdBuffer,ExtSignalBuffer);
    //--- done
    return(rates_total);
    }
    //+------------------------------------------------------------------+

  7. Аватар XoraX
    Бесплатный робот на quik XoraX боковик на lua, нефть Brent (обновление)
    Давно я сюда ничего не писал. Некогда было и работы много.
    Ну ладно, поехали ))

    Что нового в роботе, для тех кто следит:

    Появились стопы. Правда они выставляются только на 0,5 бакса от текущей цены в моменте или от максимальной покупки
    К стопам можно прибавить(накинуть) дополнительных контрактов, по желанию
    Отрегулировать расстояние до стопов
    Добавился коридор, выше которого робот перестанет покупать
    Свечной анализ который можно регулировать в моменте работы робота. Свечной анализ влияет на размер профита в рамках максимальной и минимальной цены.


    Бесплатный робот на quik XoraX боковик на lua, нефть Brent (обновление)


    Робот обожает волатильность, это важно знать. 

    Шортить бот не умеет

    Отдаю так как есть, без претензий ко мне

    Сразу хочу обратиться к тем кто пожелает его поставить и попробовать. 

    Легких денег не бывает и граалей тоже


    Авто-репост. Читать в блоге >>>
  8. Аватар Врач-бондиатОр
    Вопрос по Луа 3 - работа циклов

    Зарегистрировался для развития на форуме Арки и в разделе по программированию на Луа нашел код (https://forum.quik.ru/forum10/topic5664/)
    Смысл в том, что автор хочет продавать актив поштучно пока в портфеле не останется какое-то количество бумаг.
    На мой взгляд полезная вещь.
    Когда я его попробовал на демо квике, то начались бесконечные продажи (как и у автора).
    Судя по записям, проблема не решена.
    Может кто подскажет как решить вопрос?

    <code class="rainbow" data-language="lua">   while stopped == false do
    
          Quotes_1 = getQuoteLevel2("SPBFUT", "SRU0")
    
          Bid_Count_1 = tonumber(Quotes_1.bid_count)
    
          if Bid_Count_1>1 then
             aa= tonumber(Quotes_1.bid[Bid_Count_1].quantity)
             SetCell(Table, 1, 1, tostring(aa))
          end
    
          local asset = getFuturesHolding("SPBFUT", "SPBFUT****","SRU0",0).totalnet
    
          repeat
    
                if aa>1 and asset>0 then
    
                   local ID_B_Order=10
                   local OrderSell = {
                         ["ACTION"]="NEW_ORDER",
                         ["ACCOUNT"]= "SPBFUT****",
                                ["OPERATION"] = "S",
                         ["CLASSCODE"]="SPBFUT",
                                ["SECCODE"] = "SRU0",
                                ["PRICE"] = "0",
                         ["QUANTITY"] = tostring(1),
                         ["TRANS_ID"] = tostring(ID_B_Order),
                         ["TYPE"] = "M",
                         }
                   local Err_Order = sendTransaction(OrderSell)
                   message(Err_Order)
                end
    
                asset=asset-1
    
                sleep(1000)
    
          until asset==5<br />end</code>


    Авто-репост. Читать в блоге >>>
  9. Аватар Stanislav petrov
    qlua написать скрипт, вывод таблицы в csv файл
    сейчас вывожу по dde в excel.
    Можно через lua выводить выбранные таблицы в csv файлы с интервалом 5-10мин, сразу после запуска quik?

    Авто-репост. Читать в блоге >>>
  10. Аватар Евгений Шибаев
    QLua скринер, или то, о чём мечтал Weddy!
    Всем, привет!
    Мечты сбываются (и не только у Газпрома)! Weddy, надеюсь этим постом я полностью закрываю ваше ТЗ.
    QLua скринер, или то, о чём мечтал Weddy!
    Суть скринера в вышеизложенном пожелании. Т.к. первый и второй скринеры не удовлетворяли требованиям ТЗ Weddy.
    Надеюсь, теперь все ок. Выглядит так:
    QLua скринер, или то, о чём мечтал Weddy!

    Авто-репост. Читать в блоге >>>
  11. Аватар стажер
    бюджетный вариант удаленного робота на виртуальном сервере
    Последние пару дней смотрел вебинар организованный Альфадиректом и Мосбиржей по торговле с помощью роботов в системе AD4. Альфа не изменяет своей стратегии и пытается разрабатывать (имхо напрасно) «велосипед». Но сейчас не о них. Я давно пытаюсь понять, возможно ли реализовать торговлю с помощью смартфона, но при этом иметь возможность использовать свои стратегии/советники. Все «тяжелые» варианты типа TCЛаб и прочие меня не устраивают, т.к. мое кредо — чем проще, тем надежнее и дешевле. Мне хотелось бы услышать критику уважаемой аудитории СЛ своего видения на бюджетный вариант удаленного «робота/советника» на виртуальном сервере. В качестве ПО, я считаю, что QUIK со встроенным QLUA, вполне подойдет для простейших вычислений. Для обработки инфы и организации интерфейса (подойдет даже эл почта), мне проще использовать Python 3. Мои эксперименты с VPS показали, что можно запустить эту связку  Windows XP — QUIK — QLUA — Python   и, вполне сносно работать, на самом дешевом варианте с 512 МБ / 7 ГБ (RAM/HDD). Стоимость аренды такого сервера меньше 100 р в месяц. Торговые поручения можно выставлять «ручками» через мобильное приложение. Уверен, что подобное решение имеет право на жизнь для случая, если сигналы приходят не чаще чем несколько раз в день.

    Авто-репост. Читать в блоге >>>
  12. Аватар Врач-бондиатОр
    Вопрос 2 по Lua
    Всем привет!

    Продолжаю изучать волшебный мир Луа в волшебном мире Квика и добрался до размещения скриптом заявок.
    На текущий момент есть такой скрипт (в общем виде).

    local SecCode = «LKU0»
    local Quantity=1

    function main()

    while stopped == false do


    local Quotes = getQuoteLevel2(«SPBFUT», SecCode)
    local Offer_Price = tonumber(Quotes.offer[1].price)
    local Offer_Vol = tonumber(Quotes.offer[1].quantity)

    --отправка формы заявки
    local LimitOrderBuy = { ххххх}

    --условие входа в лонг

    if Offer_Vol>10 then
    message(Order)
    local Order = sendTransaction(LimitOrderBuy)
    end

    sleep (200)
    end

    Смысл его такой: если количество лукойла в первой строке стакана больше 10, то покупается 1 бумага и работа скрипта завершается.
    Так как скрипт срабатывает при определенном условии, то для перезапуска используется while stopped == false do и sleep (200).
    Прикол в том, что при наступлении условия, скрипт начинает бомбить заявки по 1 шт  пока не кончаются деньги (виртуальные).

    Вопрос: какой размыкатель цикла можно тут использовать, чтобы после покупки 1 бумаги работа скрипта завершилась?

    На ресурсах есть getItem, битовые флаги и пр., но изложено это как-то непонятно.
    Помогите плиз..)
    ЗЫ: обещаю поставить лайк хорошим ответам )




    Авто-репост. Читать в блоге >>>
  13. Аватар Евгений Шибаев
    QLua скринер. Обновление.
    Всем привет!
    В продолжение топика «QLua скринер в 10 строк кода. Или „за базар отвечаю“, можно качать обнулённый обновлённый скринер.
    Выглядит так в статике:
    QLua скринер. Обновление.
    А так в динамике.
    Если в прошлом скринере отображалось изменение текущей цены от цен закрытия за соответствующее количество торговых сессий (список „срезов“ задается пользователем), то в этом будет две таблицы. Первая таблица — изменение текущей цены от предыдущих хаев (чуть не оговорился...) за N-торговых сессий, вторая — от предыдущих лоёв.
    В первой таблице от минимумов выделена строка с длинными ОФЗ. Видно, что минимум цены за 30 торговых сессий был на прошлой сессии.
    А во второй таблице, мы видим, что Яндекс и Магнит обновили сегодня свои максимумы за последние 90 торговых сессий.
    Таким образом, техзадание (ТЗ) участника тусовки Weddy практически выполнено, остается доделать, как он просил, тот же функционал, только относительно списка заданных дат.

    Авто-репост. Читать в блоге >>>
  14. Аватар Врач-бондиатОр
    Вопрос 1 по Lua
    Всем привет!

    Начал изучать Lua для квика и сразу возник вопрос:
    К примеру, скрипт создает таблицу с интересующими параметрами по инструменту.
    В таблице новая строка создается командой InsertRow(#table ID, -1).
    После этого в нее добавляются параметры через команду setCell

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

    Добавление еще раз InsertRow(#table ID, -1) создает новую строку, а копипаст «заполняющих» команд с параметрами другого тикера новую строку не заполняет...



    Авто-репост. Читать в блоге >>>
  15. Аватар Евгений Шибаев
    QLua скринер в 10 строк кода. Или "за базар отвечаю".
    Всем привет!
    Никогда не давайте обещаний которые не можете выполнить. Во-первых — это портит карму. Во-вторых, за сказанное нужно отвечать. В далеких (не очень) 90-х, если человек не держал слова, к нему приезжали «санитары» с электроприборами, типа дрель, паяльник, утюг — все перечислять не буду, чтобы не пугать читателя, т.к. пост многие найдут полезным не только для торговли, но и для написания собственного кода. Так вот, пообещал я человеку, дело было так:
    QLua скринер в 10 строк кода. Или "за базар отвечаю".
    Мой родной язык, помимо русского, Common Lisp. С недавних пор породнился с Питоном. А тут луа, да еще с Квиком вперемешку. Не фиг было обещания давать. Больше времени потратил на изучение структур данных луа и особенностей QLua. Сам код был написан за пару часов, как увидите ниже — чё там писать-то...
    Как я обещал — пользователь Смартлаба Weddy получает код бесплатно, как и остальные участники тусовки. Ну а я, в качестве вознаграждения получаю приобретенный опыт. Проверял сегодня — работает с любым Квиком (6, 7, 8). Конечно дополнительных «наворотов» я не делал, как в идеале желал Weddy, но это уже детали.

    Авто-репост. Читать в блоге >>>
  16. Аватар Rostislav Kudryashov
    Библиотека luacom для Quik 8.6 с Lua 5.3.5 свяжет с Excel'ом и с чем угодно через COM-интерфейс.
    На github.com/davidm/luacom/issues/24 указан адрес дистрибутива github.com/moteus/luacom

    Авто-репост. Читать в блоге >>>
  17. Аватар VladEK
    Индикатор для QUIK на LUA
    Добрый день.

    Ищу специалиста, который напишет индикатор для QUIK на LUA.
    Для обсуждения условий, прошу оставить контакты либо в личку, либо в этой теме.

    Также буду благодарен, если кого то рекомендуете или напишите специализированный ресурс.

    Авто-репост. Читать в блоге >>>
  18. Аватар Дмитрий К
    Как я переехал на версию Quik 8.5 ничего не перекомпилируя и не переделывая в роботах. Лайфхак для нубов в программировании.
    Из за того, что у меня накрылся на прошлой неделе арендуемый физический сервер, я решил его проапгрейдить  заодно установить в ВТБ новый квик.
    В ВТБ  в частности постоянно прилетало сообщение, что надо устанавливать новый квик, что то там с нумерацией заявок на срочном рынке, а так же о том, что версия ЛУА, встроенного в квик, тоже проапгрейдится, и возможно скрипты работать не будут.

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

    Ну ладно, деваться некуда, тем более, что когда с сайта ВТБ качаешь дистрибутив квика, там сейчас безвариантивно доступна только версия 8.5

    Установил запустил. Скрипт, как и следовало ожидать, на первый взгляд, заработал сразу, без всяких «перекомпиляций». Потому что он написан в блокноте, а переводит в машинный код его (если я правильно понимаю, как все устроено) непосредственно встроенный в квике модуль ЛУА. 

    Авто-репост. Читать в блоге >>>
  19. Аватар Евгений
    Алготрейдинг. Получение данных свечей средствами QLUA и запись их в .CSV

    Алготрейдинг. Получение данных свечей средствами QLUA

    Очень часто бывает необходимо получить данные последних N-свечей различного интервала инструмента торговли. К сожалению, в справке QLUA нет достаточно полных примеров кода работы получения данных. В скрипте приведён пример получения данных интервала М1 инструмента BRN0 в формате <Инструмент> <Дата> <Время> <Цена_Open> <Цена_High> <Цена_Low> <Цена_Close> <Объем>. Данные пишутся в CSV формат.
    Почему просто не выводить по DDE график и обрабатывать его в чём-нибудь более приятном? Есть простые вещи, для которых нет необходимости в таких конструкциях (проанализировать резкое изменение объема, найти определенную формацию/комбинацию свечей, а затем вывести в quik сообщение).
    -------------------------------------------------------------------------------------------------------
    --- Функция получения результатов свечей в .CSV в виде:
    --- <Инструмент> <Дата> <Время> <Цена_Open> <Цена_High> <Цена_Low> <Цена_Close> <Объем>
    --- BRN0	1	20200605	200100	42.15	42.16	42.1	42.1	2150
    -------------------------------------------------------------------------------------------------------
    is_run=true
    
    -- Параметры
    tInstr="BRN0" --код инструмента/бумаги
    classcode="SPBFUT" --код класса инструмента/бумаги, если нужен фондовый рынок - вводить TQBR вместо SPBFUT
    iNterval=INTERVAL_M1 --таймфрейм
    -- доступные таймфреймы указаны в справке Quik (qlua.chm в папке с quik) по поиску CreateDataSource
    -- пример INTERVAL_H1
    corrTime=3 --Время МСК. C сервера время приходит без корректировки.
    pFile="w:\\temp" --путь, где будет создаваться файл
    cBars=10 --сколько свечей надо вывести
    --настройка параметров
    
    function OnInit()
    	out_file=io.open(pFile .."\\"..tostring(tInstr)..".csv","w")
    	is_run=(out_file~=nil)
    	ds=CreateDataSource(classcode, tInstr, iNterval ) --создаем источник данных
    	ds:SetUpdateCallback(NewChartData) --обновление последних данных
    end
    
    function strText(int)
    	local m=tostring(int)
    	local mLen=string.len(int)
    
    	if mLen==1 then
    		Output="0" .. tostring(m)
    	else Output=m
    	end
    	return Output
    end
    
    function main()
    	while is_run do
    	local Size=ds:Size() --Получение количества всех свечей в источнике данных
    
    	if cBars>Size then
    		cBars=Size-1
    	end
    
    	for i=Size-cBars, Size, 1 do
    		local O=ds:O(i) -- Значение цена открытия свечи
    		local H=ds:H(i) -- Значение High для свечи
    		local L=ds:L(i) -- Значение Low для свечи
    		local C=ds:C(i) -- Значение Close для свечи
    		local V=ds:V(i) -- Значение Volume для свечи
    		local T=ds:T(i) -- Значение Time для свечи
    
    		sTime=os.time(T)
    		datetime=os.date("!*t",sTime)
    
    		--вывод в файл
    		out_file:write(tInstr..";"..tostring(iNterval)..";"..tostring(datetime.year)..tostring(strText(datetime.month))..tostring(strText(datetime.day))..";"..tostring(strText(datetime.hour + corrTime))..tostring(strText(datetime.min))..tostring(strText(datetime.sec))..";"..tostring(O)..";"..tostring(H)..";"..tostring(L)..";"..tostring©..";"..tostring(V).."\n")
    		out_file:flush() --запись данных
    	end
    		out_file:close()
    		sleep(1000)   -- приостановка на 1 секунду
    		out_file=io.open(pFile .."\\"..tostring(tInstr)..".csv","w")
    	end
    end
    


    Авто-репост. Читать в блоге >>>
  20. Аватар 3Qu
    Измерение волатильности. Выбор индикатора.
    Иногда для ТС требуется измерение волатильности. Написал два индикатора, вначале простой, потом более сложный. Каждый из них имеет совершенно разные принципы работы, каждый имеет свои преимущества и недостатки. И, вот, сижу, чешу репу, и не могу выбрать.
    Смотрим рисунок:
    Измерение волатильности. Выбор индикатора.
    В более хорошем разрешении картинку можно посмотреть здесь.
    На разницу числовых показаний можно не обращать внимания, это вопрос калибровки.
    Все настройки индикаторов на картинке полностью идентичны.

    Те, у кого в Квик уже есть Lua 5.3.5 могут посмотреть индикаторы в своем терминале. Скачать скомпилированные индикаторы можно здесь.




    Авто-репост. Читать в блоге >>>
  21. Аватар VladEK
    Индикатор в LUA для Квик
    Добрый день.

    Решил написать индикатор на LUA. Подскажите, пожалуйста, есть ли уже стандартная функция (или куда можно посмотреть), которая, например, на 15 минутном графике получит данные свечки с дневки.

    Авто-репост. Читать в блоге >>>
  22. Аватар 3Qu
    Quik 8.5.2.11, Lua 5.3.5. Первые впечатления.
    Quik, по сравнению с версией 8.2, стал несколько лучше. Меньше подвисает, но иногда бывает. Мелкие, наверно несущественные, изменения в интерфейсе — не сразу и заметил.
    Lua 5.3.5, по сравнению с Lua 3.1, летает. То, что исполнялось несколько секунд, теперь пролетает практически мгновенно. В программах Lua никаких изменений делать не пришлось, мною не использовались специфические для Lua 5.1 конструкции.
    Вот, DLL, цепляющиеся к Lua, все упали, в буквальном смысле. Пару дней разбирался, несколько изменился C-API, пришлось переделывать функции luaopen в DLL. Помогли ребята с http://quikluacsharp.ru/, если что — смотрите решение у них.
    В DLL, по идее, еще надо переделывать int на 64 бит целое (при компиляции куча алармов на эту тему), но, кроме номеров заявок в обозримом будущем, не обязательно. Кроме заявок-сделок, таких номеров в инструментах нет. Пока, по крайней мере.

    Авто-репост. Читать в блоге >>>
  23. Аватар Евгений Шибаев
    КВИК-->Lua-->Python. Трансляция данных из КВИКа в Питон в реальном времени
    Всех с пятницей — самоизолятницей!
    Представляю общественности Python-сервер (в 9 строк кода) для получения данных из КВИКа в Питон через луа-скрипт в режиме реального времени.
    Для примера приведу получение тиковых данных по SIM0.
    Нам понадобятся следующие ингредиенты.
    1. Понятное дело КВИК, версии ниже 8 или 8.5.2 и выше.
    2. Питон Jupyter Notebook (Anaconda 3)
    3. Луа-скрипт, взятый из Jatotrader (в нем буквально изменено пару строк)
    Как работает сервер можно посмотреть в этом видео (1 мин. 38 сек.) Ну и по правилам хорошего тона, естественно сам текст ниже.


    Авто-репост. Читать в блоге >>>
  24. Аватар 3Qu
    Замотала, эта Lua.
    Давненько я не брал в руки шашки не писал индикаторов на Lua. Вчера ближе к ночи приспичило перенести старый отработанный индикатор с Python в терминал на Lua-QLua.
    Взял, как водится, какой-то готовый, и начал его переделывать. Дел, в общем, немного, вместо одной линии нарисовать три, и оставив болванку везде поменять код. Python, в общем, похож на Lua (все языки программирования оч. похожи), а потому, берем код Python, в Notepad++ копипастим его в Lua индикатор, немного исправляем синтаксис, немного исправляем код под особенности индикаторов, и через 20 минут готово.
    Пытаемся добавить на график. Счас! Индикатор вообще не виден.
    Начинаем корежить код и танцевать с бубном. Че сделали, так и не поняли, но индикатор в меню настроек появился — победа! Но, не тут-то было. Однако, добавить не удается, тут же вылетает. Опять танцы с бубном.
    Теперь добавляется, но Quik наглухо виснет и падает. Но, зато начал писать ошибку — строка 86, там какой-то nil. Какой еще nil, там строка, типа, buff[i] = a*b[i]^2 + c*d[i]^2. Да, сколько можно? Откуда там nil? Бредятина какая-то.

    Авто-репост. Читать в блоге >>>
  25. Аватар Grafta
    Lua индикатор для Quik, Bollinger Bands %b Oscillator. Кому интересно....
    Кому интересно, переделал индикатор Bollinger Bands (ВВ.lua) под осциллятор Bollinger Bands  %B   

    В теме  https://smart-lab.ru/blog/623989.php



    Ниже копипаст как его интерпретировать:


    Как интерпретировать график индикатора

    По принципу своей работы индикатор %b – это моментум- осциллятор, сходный, например, со стохастиком. Однако есть и отличия: если у стохастического осциллятора цены колеблются в интервале от 1 до 100, то у нашего индикатора цена может и выходить за эти пределы, например, значение может быть 1,15 или -0,15, что означает- цена находится выше или ниже на 15% от ширины ленты. То, что формально интервал обозначен уровнями 0 и 1, не должно вас путать – это одно и то же, но умноженное на коэффициент 100.


    Но что означают, все эти нулевые или единичные уровни?

    Это означает, что если:

    • График на уровне=0, то цена находится на нижней границе полосы Боллинджера,
    • График на уровне=1, значит, цена на верхней границе,
    • График на уровне 0,5 – цена находится на скользящей средней,
    • График ниже уровня=0 означает, что произошел прорыв полосы в сторону падения,
    • График выше уровня=1 – прорыв полосы в сторону повышения.


    Авто-репост. Читать в блоге >>>
Чтобы купить акции, выберите надежного брокера: