Постов с тегом "lua": 338

lua


Macd.lua

    • 23 ноября 2014, 14:48
    • |
    • XXM
  • Еще
                                                       
                                                       Воскресное чтиво.
                                                       В образовательных целях.

------------------------------------------------------------------------
— Macd.lua, © hismatullin.h@gmail.com, 23.11.2014
— Короткий период: period1
— Длинный период: period2
— Количество периодов сигнальной скользящей средней: period3
— метод усреднения линий: Exponential
------------------------------------------------------------------------
Settings =
     {
          Name = «Macd»,
          period1 = 12, period2 = 26, period3 = 9,
          line=
               {
                    {Name = «Macd», Color = 8404992, Type = 1, Width = 2},
                    {Name = «Sign», Color = 32768, Type = 1, Width = 2}
               }
     }
-------------------------------
function Init()
     Macd = cached_Macd()
     return 2
end
-------------------------------
function OnCalculate(index)
     return Macd(index, Settings.period1, Settings.period2, Settings.period3)
end
-------------------------------
function average(_start, _end)
     local sum=0
     for i = _start, _end do
          sum=sum+C(i)
     end
     return sum/(_end-_start+1)
end
-------------------------------
function cached_Macd()
     local cache_EMA_long={}
     local cache_EMA_short={}
     local cache_MACD={}
     local cache_Sign={}
     return function(ind, _p01, _p02, _p03)
          local n_ema_short = 0 --теущий EMA короткий
          local p_ema_short = 0 --предыдущий EMA короткий
          local n_sign = 0 --теущий sign
          local p_sign = 0 --предыдущий sign
          local period_short = _p01
          local period_long = _p02
          local period_sign = _p03
          local index = ind
          local k_short = 2/(period_short+1)
          local k_long = 2/(period_long+1)
          local k_sign = 2/(period_sign+1)
          if index == 1 then
               cache_EMA_long = {}
               cache_EMA_short = {}
               cache_MACD = {}
               cache_Sign={}
          end
          -----------------------------------------------
          if index < period_long then
               cache_EMA_long[index] = average(1,index)
               return nil
          end
          p_ema_long = cache_EMA_long[index-1] or C(index)
          n_ema_long = k_long*C(index)+(1-k_long)*p_ema_long
          cache_EMA_long[index] = n_ema_long
          -----------------------------------------------
          if index < period_short then
               cache_EMA_short[index] = average(1,index)
               return nil
          end
          p_ema_short = cache_EMA_short[index-1] or C(index)
          n_ema_short = k_short*C(index)+(1-k_short)*p_ema_short
          cache_EMA_short[index] = n_ema_short
          -----------------------------------------------
          --считаем сигнальную
          cache_MACD[index] = n_ema_short-n_ema_long
          p_sign = cache_Sign[index-1] or cache_MACD[index]
          n_sign = k_sign*cache_MACD[index]+(1-k_sign)*p_sign
          cache_Sign[index] = n_sign
          -----------------------------------------------
          return n_ema_short-n_ema_long, n_sign
     end
end
------------------------------------------------------------------------ 

SuperScalp. Первая звезда на погонах.

    • 17 ноября 2014, 13:27
    • |
    • XXM
  • Еще
SuperScalp, версия 1.1. (начало здесь: http://smart-lab.ru/blog/207666.php)
 
SuperScalp. Первая звезда на погонах.

1. написан на QLUA, для ФОРТС, с исходным кодом, приправлен комментариями;
2. бесплатен, без ограничения сроков, «Free software». 
3. без графики и хоткеев всяких.

Настройки — в строках кода:

function getInitParameter()
       account = 'SPBFUT00995'
       classCode = 'SPBFUT'
       secCode = 'SRZ4'
       workSize = 10
       OpenSlippage = 50
       Frequency = 500
end


Скачать: SuperScalp.lua

Каждому трейдеру - свой Грааль!

    • 16 ноября 2014, 10:53
    • |
    • XXM
  • Еще
Каждому трейдеру - свой Грааль!

Как-то Lafert  спрашивал:
а треугольнички на графике- покупки и продажи? Если да, то у Вас Грааль
 
 
Даю более подробный ответ:

— LowHigh.lua © xsharp.ru, 03.10.2014
Settings = {
     Name = 'LowHigh',
     line = {
          {Name = 'Low',
          Color = 16711680,
          Type = 10,
          Width = 2},
          {Name = 'High',
          Color = 32768,
          Type = 11,
          Width = 2}}}
function Init()
     return 2
end
function OnCalculate(i)
     return L(i),H(i)
end

On-Line получение данных из Quik в Java и не только

    • 14 ноября 2014, 23:51
    • |
    • П М
  • Еще
Как говорится, делай добро и бросай его в воду.
Выношу на свет плоды своих трудов. Трудов не одного дня. На текущий момент это же решение уже работает у меня в составе робота.
Проверено.

Что это такое: с помощью скрипта QApi.lua на стороне Quik организуется сервер, который умеет принимать команды с клиента и отдавать ему результаты выполнения этих команд.

какие команды и данные может выдавать скрипт
— получение стакана по заданной бумаге (class, security)
— получение последних N свечей по заданной бумаге   (class, security, interval, count)
— получение времени сервера
— получение торговой даты
— получение статуса квика — подключен он к серверу или нет

Зачем это надо: работает достаточно быстро — десятые доли секунды, стакан отдаётся с разной скоростью, т.к. скрипт для начала ждёт чтобы стакан изменился (гарантированно последние данные), не требует на стороне квика никаких настроек и открытых графиков. всё что надо — запустить скрипт.

( Читать дальше )

Немного про приказы WLD4 и еще меньше саморекламы.

    • 05 октября 2014, 18:30
    • |
    • XXM
  • Еще
Основные приказы WLD4 состоят из комбинаций двух групп слов:
1. Buy, Sell, Short, Cover;
2. AtMarket, AtClose, AtStop, AtLimit.
и дополнительно двух команд: Sell- и CoverAtTrailingStop.
Всего их — 18.
Немного про приказы WLD4 и еще меньше саморекламы. 
BuyAtMarket — Вход в длинную позицию на открытии Бара.
BuyAtClose — Вход в длинную позицию на закрытии Бара.
BuyAtStop — Вход в длинную позицию, если цена достигает указанного StopPrice. Позиция будет открыта, если цена пересечет, или превысит указанный StopPrice.
BuyAtLimit — Вход в длинную позицию, если цена достигает указанного LimitPrice. Позиция будет открыта, если цена пересечет, или снизится до уровня LimitPrice.


( Читать дальше )

SuperScalp - новобранец полка приводов для QUIK.

    • 03 октября 2014, 09:11
    • |
    • XXM
  • Еще
Приводов для быстрого ввода заявок так много, что времени нет для их рассмотрения.
Несть числа им, да и обзоров море:
1. smart-lab:  Статья: анализ скальперских приводов
2. smart-lab:  Супер список приводов для торговли на бирже!!!
3. 2stocks  :  На выбор скальперу — обзор 14 приводов
4. quik        :  Полезные ссылки
А вот простого, как «три аккорда», незатейливого — не было.
Теперь он есть:
SuperScalp - новобранец полка приводов для QUIK.

1. написан на LUA, с исходным кодом, приправлен комментариями;
2. бесплатен, без ограничения сроков, «Free software».
3. без графики и хоткеев всяких.
Настройки — в строках кода:
  • account = 'SPBFUT00R86' — код торгового счета
  • classCode = 'SPBFUT' — код класса
  • secCode = 'SRZ4' — код бумаги
  • WorkSize = 10 — рабочий размер
  • OpenSlippage = 50 — проскальзывание
  • FREQUENCY = 500 — частота привода (в миллисекундах)
Скачать: SuperScalp.lua
UPD 04.10.2014г. Привод написан для FORTS.
 
 
 

Робот на LUA для QUIK. Торговые сделки по ценовым уровням.

    • 08 сентября 2014, 15:48
    • |
    • XXM
  • Еще
В роботе lbot есть две возможности работы с ценовыми уровнями. Проиллюстрирую настройку в ini-файле на примере сделки покупки актива при снижении до определенной величины 8000 пунктов:
1. OpenLong = {Close} <= {8000}
При этом робот получает указание купить, как только цена актива станет ниже или равно 8000 пунктов.
2. OpenLong = {Close} <= {Level8000}
В этом случае мы должны на график цены добавить индикатор уровня цены, присвоив ему идентификатор «Level8000». Уровень может настраиваться параметром «level».

Текст индикатора: Робот на LUA для QUIK. Торговые сделки по ценовым уровням.
— Level8000.lua

Settings=
{
       Name = «L8000»,
       level = 8000,
       line=
       {
              {
              Name = «Level»,
              Color = RGB(255, 0, 0),
              Type = TYPE_LINE,
              Width = 2
              }
       }
}

function Init()
       return 1
end

function OnCalculate(index)
       if index == 1 then
              t=getDataSourceInfo()
              message(t.sec_code..", level="..Settings.level..", interval="..t.interval,2)
       end
       return Settings.level
end

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

    • 27 августа 2014, 10:34
    • |
    • XXM
  • Еще
Написал скрипт на языке Lua для торгового терминала QUIK.
И назвал его Торговый робот «Lbot».
Предназначил для автоматизации выполнения торговых операций на фондовом рынке.
Обязал выполнять операции купли-продажи заданной ценной бумаги на фондовом рынке путем выставления лимитированных биржевых заявок.
Научил понимать слова из правил торговой стратегии, задаваемой из файла настроек в формате ini:
  • OpenLong — вход в длинную позицию;
  • CloseLong — закрытие длинной позиции;
  • OpenShort — открытие короткой позиции;
  • CloseShort — закрытие короткой позиции;
  • StopLoss — закрытие позиции по стоп-лоссу;
  • TakeProfit — закрытие позиции по тэйк-профиту.
Lbot, LUA for QUIK
Добавил возможность управления позициями путем нажатий соответствующих кнопок.

Подробнее на сайте: http://www.xsharp.ru/




Quik lua to C# коннектор ?

    • 27 июля 2014, 12:03
    • |
    • SL
  • Еще
Здравствуйте, 

Вопрос собственно такой: Как связать квик с помощью lua с программой написаной на C# ?

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

Буду благодарен за любую инормацию по даной теме .

Спасибо.

Спредовый робот на HackTrade

Доработал фреймворк HackTrade до версии 1.4.

Теперь можно удобно работать со стаканом
Обратите внимание, что по умной заявке сначала открывается позиция лучшим бидом, потом позиция приводится к 0 лучшим оффером.
Подход не стандартный, но оцените удобство: если снять заявку, робот поставит новую, чтобы добить недостающий объём.



( Читать дальше )

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