1. Уважаемые трейдеры!
    Форум трейдеров объединяет профессионалов в единое сообщество, где все могут общаться между собой, делиться мнением и участвовать в совместных покупках в складчину.
    Если вы торгуете на финансовых рынках- форекс, бинарные опционы, ММВБ, СМЕ, NYSE и вас интересуют выгодные совместные покупки, то мы приглашаем вас на наш форум.
    Данный портал является форумом совместных покупок различных товаров для трейдинга на финансовых рынках форекс, бинарных опционов, ММВБ, CME, NYS. Торговые эксперты(советники, роботы), торговые системы и стратегии, индикаторы, видеокурсы и т.д. Это дает вам возможность совместно выкупать различные товары по очень выгодным ценам для ВАС.
    Все Мы с Вами знаем, что в интернете, зачастую, недобросовестные продавцы пытаются реализовать нам с Вами много различного хлама с красивыми картинками и заоблачными преимуществами после покупки, обещая, что только купив их инфопродукт - вы сразу станете прибыльным трейдером. Совместное приобретение в складчину дает возможность получить инфопродукт или же торгового робота в несколько десятков раз дешевле его начальной стоимости.
    Очевидным преимуществом наших складчин – это то, что Мы не берем никаких дополнительных комиссий с пользователей нашего форума, а благодаря адекватной и дружелюбной администрации вы всегда получите обратную связь.
    Регистрируйтесь! Вместе дешевле! Вместе Мы сможем больше!
    *Это объявление можно закрыть нажав крестик в правом верхнем углу этого блока.
    Скрыть объявление

Скачать индикатор на LUA для QUIK своими руками

Тема в разделе "Индикаторы", создана пользователем nikolz, 21 ноя 2020.

  1. nikolz

    nikolz Проходил мимо Пользователь

    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    С нами:
    14 дней
    Известно, что в торговом терминале QUIK есть встроенные индикаторы и есть возможность написать собственный индикатор на языке программирования LUA.

    Сравнительно просто написать индикатор на основе параметров свечи, либо используя данные с графика другого индикатора.

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

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

    В данной заметке выкладываю пример создания собственного индикатора в торговом терминале QUIK на основе любых параметров с возможностью сохранения истории индикатора для дальнейшего отображения либо использования в торговых роботах.

    Обобщенный алгоритм построения такого индикатора следующий:

    Скрипт индикатора условно разделяется на две части.

    В первой его части function param() рассчитываем наш индикатор.

    Во второй части function OnCalculate(i) обеспечиваем сохранение значений индикатора в файле и отображение на графике.

    Пример такого индикатора, который рассчитывает отношение спроса и предложения.

    name="nk_BID_OFFER"
    Settings={}; Settings.Name =name; Settings.line ={};
    -----------------
    function param()
    pr1=tonumber(getParamEx (clas,sec,"NUMBIDS").param_value);
    pr2=tonumber(getParamEx (clas,sec,"NUMOFFERS").param_value);
    if pr2 and pr1 and pr2~=0 then x_par=0.001*math.floor(1000*pr1/pr2);end
    end
    -----------------
    function OnCalculate(i)
    local size=Size(); local Ti=T(i);
    DT=100*(100*(Ti.year-2000)+Ti.month)+Ti.day;
    TT=100*(100*Ti.hour+Ti.min)+Ti.sec;
    if i==1 then
    local tinfo=getDataSourceInfo();
    cl,se,int=tinfo.class_code,tinfo.sec_code,tinfo.interval;
    path=getScriptPath().."/"..cl..se.."_"..int.."_"..name;
    i_old=0;
    else
    local fn=path..DT..".txt";
    if DT~=D_old then
    if file then file:close(); end
    file=io.open(fn,"r+");
    if file then file:seek("cur"); s_ind=file:read(); end
    end
    x_par=nil;
    if size>i then
    if s_ind then
    local t={}; for s1 in string.gmatch(s_ind,"%S+") do
    t[#t+1]=tonumber(s1); end
    if TT and #t>0 and TT>=t[1] then x_par=t[2];
    s_ind=file:read(); end
    end
    else
    if file==nil then file=io.open(fn,"w"); file:close();
    file=io.open(fn,"r+"); end
    param();
    if x_par and i_old~=i and x_par>0 then
    local s=tostring(TT).." ".. tostring(x_par).."\n";
    if file then file:seek("end"); end
    file:write(s); file:flush(); end
    end
    end
    D_old=DT;T_old=TT;x_old=x_par; i_old=i;
    if x_par then
    if x_par>1 then return x_par else return nil,x_par end
    end
    end
    ----------------
    function Init()
    local t=Settings.line;
    t[#t+1]={Name= "x1",Color=RGB(0,255,0),Type =4,Width = 2}
    t[#t+1]={Name= "x2",Color=RGB(255,0,0),Type = 4,Width =2}
    return #t
    end
    ---------------
    function OnDestroy () if file then file:close(); end end
    Данный скрипт создает файл в каталоге индикаторов и пишет в него время и значение индикатора.

    Если значение индикатора больше 1, то его цвет на графике будет зеленый, иначе -красный.

    Пример индикатора на графике (третье окно сверху).

    [​IMG]
     

  2. Zoodas

    Zoodas Опытный трейдер Пользователь

    Сообщения:
    654
    Симпатии:
    222
    Пол:
    Мужской
    С нами:
    4 года 4 месяца 14 дней
    Спасибо. Это всё или еще что-нибудь выложите?