Постов с тегом "Quik Lua": 224

Quik Lua


quik вопрос по синтаксису lua

не могу понять почему два цикла не дает сделать:
Settings={
Name="XXX",
period=25,
  line=
  {
    {
      Name="curve",
      Color=RGB(255,0,0),
      Type=TYPE_LINE,
      Width=1
    }
  } 
}

function Init()  
  return 1
end

function OnCalculate(index)
  if index < Settings.period then
    return nil
  else

    for i=index-Settings.period+1, index do  
    do
      j=1
    end
    for k=1, 10 do  
    do
      j=1
    end


  end 

  return 2
end

end
если второй цикл убираю for k=1, 10 do do j=1 end
то работает, с ним не работает
  • обсудить на форуме:
  • Quik Lua

STATDIV3 доработанный индикатор для quik на языке lua

если индикатор больше 0, то покупаем, если ниже то продаем

скачать можно здесь:dropmefiles.com/09FCu
как устанавливать смотрите предыдущие статьи: https://smart-lab.ru/blog/528424.php
название STATDIV3 это доработанный STATDIV


поведение индикатора на графике:
STATDIV3 доработанный индикатор для quik на языке lua


сам код индикатора:
Settings={
Name="STATDIV3",
period=50,
  line=
  {
    {
      Name="curve",
      Color=RGB(0,0,255),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="line",
      Color=RGB(255,0,0),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="MA",
      Color=RGB(0,0,255),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="MA2",
      Color=RGB(0,128,128),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="line2",
      Color=RGB(0,0,255),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="line3",
      Color=RGB(0,128,128),
      Type=TYPE_LINE,
      Width=1
    }
  } 
}

function Init()
  cache_ind={}
  cache_ind2={}
  cache_ind3={}
  return 2
end

function OnCalculate(index)
  if index < Settings.period then
    return nil
  else
    local sum1=0
    local sum2=0
    local sum0=0
    local sum02=0
    local sum03=0
    for i=index-Settings.period+1, index do  
    do
      if C(i) > O(i) then
        sum1 = sum1 + C(i) - O(i)
        sum2 = sum2 + C(i) - O(i)
      else
        sum2 = sum2 + O(i) - C(i)
      end  
    end 
    cache_ind[index] = sum1/sum2    
    if index > Settings.period+12 then 
--[[
      sum0 = 1*cache_ind[index]+
            (1)*cache_ind[index-1]+
            (1)*cache_ind[index-2]+
            (1)*cache_ind[index-3]+
            (1)*cache_ind[index-4]+
            (1)*cache_ind[index-5]+
            (1)*cache_ind[index-6]+
            (1)*cache_ind[index-7]+
            (1)*cache_ind[index-8]+
            (1/2)*cache_ind[index-9]+
            (1/3)*cache_ind[index-10]+
            (1/4)*cache_ind[index-11]+
            (1/5)*cache_ind[index-12]
--]]
      sum0 = 1*cache_ind[index]+
            (1/2)*cache_ind[index-1]+
            (1/3)*cache_ind[index-2]+
            (1/4)*cache_ind[index-3]+
            (1/5)*cache_ind[index-4]+
            (1/6)*cache_ind[index-5]+
            (1/7)*cache_ind[index-6]+
            (1/8)*cache_ind[index-7]+
            (1/9)*cache_ind[index-8]+
            (1/10)*cache_ind[index-9]+
            (1/11)*cache_ind[index-10]+
            (1/12)*cache_ind[index-11]+
            (1/13)*cache_ind[index-12]

    end
--[[
    sum0 = sum0/(1+1+1+1+1+1+1+1+1+1/2+1/3+1/4+1/5)
--]]
    sum0 = sum0/(1+1/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9+1/10+1/11+1/12+1/13)

       
    cache_ind2[index] = sum0
    if index > Settings.period+50 then   
      sum02 = 1*cache_ind2[index]+
            (1)*cache_ind2[index-1]+
            (1)*cache_ind2[index-2]+
            (1)*cache_ind2[index-3]+
            (1)*cache_ind2[index-4]+
            (1)*cache_ind2[index-5]+
            (1)*cache_ind2[index-6]+
            (1)*cache_ind2[index-7]+
            (1/2)*cache_ind2[index-8]+
            (1/3)*cache_ind2[index-9]+
            (1/4)*cache_ind2[index-10]+
            (1/5)*cache_ind2[index-11]+
            (1/6)*cache_ind2[index-12]
--[[
      sum02 = 1*cache_ind2[index]+
            (1/2)*cache_ind2[index-1]+
            (1/3)*cache_ind2[index-2]+
            (1/4)*cache_ind2[index-3]+
            (1/5)*cache_ind2[index-4]+
            (1/6)*cache_ind2[index-5]+
            (1/7)*cache_ind2[index-6]+
            (1/8)*cache_ind2[index-7]+
            (1/9)*cache_ind2[index-8]+
            (1/10)*cache_ind2[index-9]+
            (1/11)*cache_ind2[index-10]+
            (1/12)*cache_ind2[index-11]+
            (1/13)*cache_ind2[index-12]
--]]
    end
    sum02 = sum02/(1+1+1+1+1+1+1+1+1/2+1/3+1/4+1/5+1/6)
--[[
    sum02 = sum02/(1+1/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9+1/10+1/11+1/12+1/13)
--]]
    cache_ind3[index] = sum0 - sum02
    if index > Settings.period+50 then   
      sum03 = 1*cache_ind3[index]+
            (1/2)*cache_ind3[index-1]+
            (1/3)*cache_ind3[index-2]+
            (1/4)*cache_ind3[index-3]+
            (1/5)*cache_ind3[index-4]+
            (1/6)*cache_ind3[index-5]+
            (1/7)*cache_ind3[index-6]+
            (1/8)*cache_ind3[index-7]+
            (1/9)*cache_ind3[index-8]+
            (1/10)*cache_ind3[index-9]+
            (1/11)*cache_ind3[index-10]+
            (1/12)*cache_ind3[index-11]+
            (1/13)*cache_ind3[index-12]
    end
    sum03 = sum03/(1+1/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9+1/10+1/11+1/12+1/13)

  end  

  if sum1/sum2 > 0.5 and sum03 > 0 then
    sum1 = sum03
  else
    if sum1/sum2 < 0.5 and sum03 < 0 then
      sum1 = sum03 
    else 
      sum1 = 0
    end
  end

  return sum1, 0
end

end
 всем удачи!
  • обсудить на форуме:
  • Quik Lua

Доработал индикатор STATDIV на lua для quik

пользоваться можно так:
если касная кривая выше 0,5 и синяя выше зеленой то логуем
если красная ниже 0,5 и синяя ниже зеленой то шортим
принимаю пожелания по изменению кода индикатора
Доработал индикатор STATDIV на lua для quik


скачать можно здесь:
dropmefiles.com/y4kpv

как установить:
в папке quik создаете папку LuaIndicators туда кидаете текстовый файл с раcширением .lua и содержанием приведенного индикатора, потом запускаете quik и добавляете как обычный индикатор к графику с именем STATDIV

продолжение темы: smart-lab.ru/blog/528145.php

код:

Settings={
Name=«STATDIV»,
period=25,
  line=
  {
    {
      Name=«curve»,
      Color=RGB(255,0,0),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name=«line»,
      Color=RGB(255,0,0),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name=«MA»,
      Color=RGB(0,0,255),

( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

для тех кто хочет много бабок зарабатывать

публикую индикатор собственной разработки под quik, написанный на lua
если его значение больше 0,5 то выставляете заявку на покупку с тек профитом >= стоплоссу
гарантированно будете зарабатывать
подключить его можно так:
в папке quik создаете папку LuaIndicators туда кидаете текстовый файл с раcширением .lua
и содержанием приведенного индикатора, потом запускаете quik и добавляете как обычный индикатор к графику
название его в списке будет STATDIV (статистическое отклонение)
на рисунке отобразил его работу с периодом 25 и 50
его суть в том чтоб показать куда отклонено статистическое распределение вероятностей, вверх или вниз за определенный период
проще говоря, куда вероятнее пойдет рынок вниз или вверх
если значение индикатора выше 0,5 то разрешено лонговать, если ниже то разрешено шортить
рекомендации по подбору периода: период для этого индикатора выбираете как период между двумя
последними локальными вершинами
позже могу математически привести целесообразность его использования

( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

Lua индикатор тикера ищу.

Доброго времени всем.
Я ищу Lua индикатор в Quik, который пишет на графике в левом верхнем углу название инструмента. Однажды наткнулся на него в интернете, счёл что бесполезная вещь и не стал его сохранять. А вот теперь понадобился и самому, но не могу вспомнить где я его видел. Может он есть у кого или кто-нить знает с какого ресурса его можно качнуть? Буду очень признателен в помощи его отыскать.

Изучаем QLua: Ассиметричные фракталы

Добрый.
В одном из видео автор рассказывал об уровнях и использовал индикатор фрактал. Но для того чтобы потенциальные точки находились быстрее, он использовал ассиметричный показатель, например, 4 слева и 3 справа.
Такой индикатор можно построить с помощью Lua.
Параметры: количество свечей слева и справа
Отображение в виде треугольников. Один треугольник было плохо видно, я добавил несколько )
Второй раз пошло легче. Работаем дальше

Исходник (версия «лесенкой»)

скачать

Версия, реализующая логику схожую с типовым индикатором

скачать

  • обсудить на форуме:
  • Quik Lua

Изучаем QLua: Относительный ATR

Доброго дня

Решил попробовать написать некоторые индикаторы для Quik.
Была прочитана книга по языку Роберту Иерузалимски «Программирование на языке Lua» и Документация по языку LUA в QUIK и примеры.
Надо заметить, что язык мне понравился. В нем так мало и так много одновременно!

Первый блин индикатор — что-то похожее на Волатильность Чайкина, только попроще.
Идея: хочется изучить циклы волатильности. За основу берем ATR. Но если рассматривать большие интервалы, то цена может гулять в больших пределах, соответственно приводим ее к текущей цене.
Сделал первый вариант, получил ошибки выполнения — надо добавить обработку ошибок.
Следующий вариант заработал, я посмотрел — очень большой разброс, надо добавить сглаживание. 
Добавил сглаживание, разброс стал поменьше, но все равно немного не то. Добавил отдельное сглаживание для диапазона и для цены (предполагая, что цена меняется медленнее чем периоды волатильности). Уже лучше.
А что если брать не цену закрытия, а например среднюю? Добавил, но оказалось что влияние мизерное.
В общем, уже можно поиграться. 
Исходник

Продолжаю эксперименты. 
  • обсудить на форуме:
  • Quik Lua

Как автоматизировать передачу однотипных заявок каждый день?

    • 09 января 2019, 12:21
    • |
    • Arti
  • Еще
Всем привет!
Скажите, как можно автоматизировать процесс массового создания заявок на покупку бумаг на Московской Бирже каждый день?
Специфика следующая: есть на мониторинге 10-20 корп. облигаций.
Для каждой бумаги есть цена и кол-во, которое я хочу купить (заявка), несколько ниже текущей рыночной цены. Заявки на покупку НЕ условные.
Цена и кол-во бумаг в моих заявках в теч. дня не меняются (для простоты).
На следующий день цена актуализируется (может поменяться) после ручного пересмотра. Но может и не поменяться. То есть опять нужно загрузить список из этих заявок.
Можно, конечно, каждое утро вручную заводить каждую из этих 10-20 заявок, но на это уходит минут 10 каждый день, плюс повышается вероятность ошибки/опечатки.
Список заявок могу вести в Excel.

Подскажите, можно ли либо сделать так, чтобы заявки на покупку на фондофом рынке МБ не отменялись после окончания сессии (либо автоматически пересоздавались), либо как-то упростить процедуру массового ввода заявок с помощью какого-нибудь механизма экспорта таблицы/списка заявок?

P.S. Работаю в Quik/WebQuik/ЛК Открытии.

Торговый робот на Lua для QUIK.

    • 27 декабря 2018, 09:39
    • |
    • XXM
  • Еще

4 года и 4 месяца прошло с выхода поста «Торговый робот на LUA для QUIK» (https://smart-lab.ru/blog/200767.php) про конструктор Lbot. За это время он повзрослел, лишился графического интерфейса и… превратился в младшего брата для Lbot3D. И если раньше для Lbot была пробная версия (с одним инструментом и одним лотом), то теперь, фактически, сам превратился в пробную версию для Lbot3D и, с этого дня, предоставляется в свободное пользование с полным функционалом:

Торговый робот на Lua для QUIK.

Скачать Lbot180.zip можно тут: drive.google.com/open?id=1DL9jGEBm2Uhk89PcQdlK-ObaOe2zihnx
INI-файл написан для демо-QUIK на 3 инструмента — Сбербанк, Газпром и Лукойл. Стратегия на Газпроме — безиндикаторная, на Сбербанке — на скользящих средних, на Лукойле — на пересечениях MACD.

encoding = "UTF-8"
FREQUENCY = 1000
account = NL0011100043, 10110
PositionSize = 300000
xy = 421, 0, 859, 118
;-------------------------------------------------------------------------------
[GAZP]
Security = GAZP, QJSIM, Gazp_moex
WorkSize = 3		//  рабочий объем, в штуках;
LossLimit = 100		// ограничение на убыток по стратегии
OpenSlippage = 10	// допустимое проскальзывание на сделке, в количестве минимальных шагов цены;
OpenLong =  {Close, 1} < {High, 2}	// цена 'close' предыдущей 'полной' свечи превысила 'high' предшествующего ей бара;
OpenShort = {Close, 1} > {Low, 5-2}	// цена 'close' предыдущей 'полной' свечи принизила 'low' 5-2 баров;
StopLoss = 2
TakeProfit = 3, 1, 1
EOD = 18:29:00	//закрытия позиции в указанное время.
autoBot = Y
[SBER]
Security = SBER, QJSIM, Sber_moex
WorkSize = 10
LossLimit = 100
OpenSlippage = 10
OpenLong	= {Ema1} > {Ema2}
CloseLong	= {Ema1} < {Ema2}
OpenShort	= {Ema1} < {Ema2}
CloseShort	= {Ema1} > {Ema2}
autoBot = Y
[LKOH]
WorkSize = 2
Security = LKOH, QJSIM, Lkoh_moex
LossLimit = 225
OpenSlippage = 10
OpenLong	= cross(macd_Lkoh.0, macd_Lkoh.1)
OpenShort	= cross(macd_Lkoh.1, macd_Lkoh.0)
;OpenLong =  {Close, 1} < {Low, 5-2}
;OpenShort = {Close, 1} > {High, 2}
StopLoss = 30
TakeProfit = 50, 10, 10
autoBot = Y


( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

....все тэги
UPDONW
Новый дизайн