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

Lua


Линейная регрессия в помощь...

Добрый день!

Для всех QUIKеров в свободное пользование индикатор линейной регрессии (LUA).
Линейная регрессия в помощь...
Settings = 
{
        Name = "xLinReg",
        period = 128,
        deviation=2,
        line=
        {
                {
                        Name = "xLinReg",
                        Color = RGB(0, 0, 255),
                        Type = TYPE_LINE,
                        Width = 3
                },
                {
                        Name = "xLinReg",
                        Color = RGB(192, 0, 0),
                        Type = TYPE_LINE,
                        Width = 3
                },
                {
                        Name = "xLinReg",
                        Color = RGB(0, 128, 0),
                        Type = TYPE_LINE,
                        Width = 3
                }
        
        }
}



----------------------------------------------------------
----------------------------------------------------------
----------------------------------------------------------
function c_FF()
        
        local AMA={}
        local CC={}
        
        return function(ind, _p,_ddd)
                local period = _p
                local index = ind
                
                local vol = 0
        
                local sigma = 0
                local sigma2 = 0

                local aav = 0
                local bb = 0
                local ZZZ = 0


                                                
                if index == 1 then
                        AMA={}
                        CC={}
                        
                        CC[index]=(C(index)+H(index)+L(index))/3
                        AMA[index]=(C(index)+O(index))/2
                        
                        return nil
                end
                
                ------------------------------
                AMA[index]=AMA[index-1]
                CC[index]=(C(index)+H(index)+L(index))/3
                ---------------------

                if index < (_p) then return nil end
                ----------------------------------------------------
                                
                period =_p
                if index < period then period = index end
        --------------- 
                sigma=0
                sigma2=0
                aav=0
                ZZZ=0
                for i = 0, period-1 do
                        ZZZ=CC[index+i-period+1]
                        aav=aav+ZZZ
                        sigma=sigma+ZZZ*(-(period-1)/2+i)
                        sigma2=sigma2+(-(period-1)/2+i)^2
                end
                
                ------------------------
        bb=sigma/sigma2
        aav=aav/period
                
        AMA[index]=aav+bb*((period-1)/2) ---------линейная регрессия
        -------------------------------
                
                sigma=0
                sigma2=0
                sigma3 = 0
                for i = 0, period-1 do
                        ZZZ=CC[index+i-period+1]
                        sigma2=aav+bb*(-(period-1)/2+i)
                        sigma=sigma+(ZZZ-sigma2)^2

                end
                sigma=(sigma/period)^(1/2)
                
                
                for i = 1, period-1 do
                        ZZZ=aav+bb*(-(period-1)/2+i)
                        SetValue(index+i-period+1, 3, ZZZ)
                        SetValue(index+i-period+1, 2, ZZZ+sigma*_ddd)
                        SetValue(index+i-period+1, 1, ZZZ-sigma*_ddd)

                end     
                        SetValue(index+0-period+1, 3, nil)
                        SetValue(index+0-period+1, 2, nil)
                        SetValue(index+0-period+1, 1, nil)
                
                
                ----------------------------------
                                                                
                        return AMA[index]-sigma*_ddd,AMA[index]+sigma*_ddd, AMA[index]
                        
        end
end
----------------------------    ----------------------------    ----------------------------
----------------------------    ----------------------------    ----------------------------
----------------------------    ----------------------------    ----------------------------

function Init()
        myFF = c_FF()
        
        return 3
end
function OnCalculate(index)
        
        
        
        return myFF(index, Settings.period,Settings.deviation)
        
                
end


Продолжение: http://smart-lab.ru/blog/337978.php



Для QUIK индикатор Parabolik учитывающий волатильность

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

 Для QUIK индикатор Parabolik учитывающий волатильность

Видно, что он дает меньше перескоков (красный), чем обычный Parabolik (черный). Хорошо себя зарекомендовал для выходов из позиций, открытых по тренду. На вход в боковике конечно будет давать ложные сигналы, как и обычный Parabolik (но меньше!), создатель которого не рекомендовал только его использовать для открытия позиций.

Код индикатора:

Settings = {
Name = "Parabolic ATR",
Period_ATR=14,
line = {{
                Name = "Parabolic ATR",
                Type = TYPE_POINT,
                Color = RGB(255,0,0),
                Width = 2
                }
                }
}

old_idx=0
long=false
short=false
revers=false


function Init()
        return 1
end

function OnCalculate(idx)
if idx<Settings.Period_ATR then
return nil
else
if idx==Settings.Period_ATR  then
psar={}
psar[idx]=L(idx)
long=true
hmax=H(idx)
per_ATR=Settings.Period_ATR
local TR=0
for js=(idx-per_ATR),idx-1 do
TR=(TR+H(js)-L(js))
end
Old_ATR=TR/per_ATR
revers=true
else

if idx~=old_idx then
local TR=0
for js=(idx-per_ATR),idx-1 do
TR=(TR+H(js)-L(js))
end
local ATR=TR/per_ATR
af=ATR/(Old_ATR+ATR)
af=af/10
Old_ATR=ATR
if long then
if hmax<H(idx-1) then
hmax=H(idx-1)
end
psar[idx]=psar[idx-1]+af*(hmax-psar[idx-1])
end
if short then
if lmin>L(idx-1) then
lmin=L(idx-1)
end
psar[idx]=psar[idx-1]+af*(lmin-psar[idx-1])
end
revers=true
end
if long and L(idx)<psar[idx] and revers then
psar[idx]=hmax
short=true
long=false
lmin=L(idx)
af=Step
revers=false
end
if short and H(idx)>psar[idx] and revers then
psar[idx]=lmin
long=true
short=false
hmax=H(idx)
af=Step
revers=false
end
end

old_idx=idx

return psar[idx]
end
end



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

Индикаторы для QUIK - ASCTrend

После семинара В. Олейника захотелось в своем квике получить индикатор ASCTrend, но т.к. на просторах интернета не смог его найти, то решил сделать свой путем переработки кода для MT5. На авторство не претендую, просто вдруг кому пригодится.
Синяя точка под свечой — сигнал на покупку, красная над свечой — сигнал на продажу.

Краткое описание.

По большому счету — это обычный трендовый индикатор, который своими точками указывает на момент разворота тренда, пусть и не всегда удачно, но идеальных индикаторов не существует. Для формирования торговых сигналов используется стандартный индикатор Larry Williams` Percent Range.
Параметр у данного индикатора всего один, но он очень важен, так как отвечает за частоту появления точек на графике. Этот параметр не может быть меньше «3», так как индикатор начинает работать нестабильно и часто неправильно. Но при увеличении значения не значит, что сделки будут появляться часто, как раз наоборот, фильтр становится жестче и сигналов становится меньше, что позволяет отлавливать более затяжные тренды.
Взято отсюда: http://findicators.com/indikator-asctrend



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

Mt5, квик и вечность.

Была такая программа mt3. В этой программы свечки стороились по bid и ask, а
главное была dll, через которую можно получить необходимые торговые данные и
торговать. Многие написали роботы и даже свои собственные терминалы.
И вот выходит mt4, dll уже нет, свечи строятся по bid. И все нужно переписывать
на mql4. А интерфейс напоминает mt3 и принципиально не изменился. Народ начинает кодить :)
И вот появляется mt5. Я его загружаю и что я вижу: интерфейс принципиально
не изменился с mt3, зато появился супер скоростной mql5, который даже не имеет колбеков.
Слава богу Pipe реализовали. И когда говоришь, что на дворе 2016 год, у меня много мониторная
система, несколько тайм-фреймов и куча символов. И я не могу нормально работать в многомониторной системе — неудобно,
а при этом тут же надо запускать тестер стратегий, и т. д.
И когда разработчикам говоришь, ребята у вас ничего принципиально не поменялось в плане удобства работы

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

QUIK: отказ от поддержки встроенного языка QPILE


Очевидное свершилось!
Продвинутые алготрейдеры итак уже давно отказались от QPILE и перешли на LUA.
Теперь и сами разработчики уходят от QPILE.

QPILE, QUIK

Письмо от разработчиков QUIK.

Тема:    QUIK: отказ от поддержки встроенного языка QPILE

Здравствуйте!

В течение ближайшего года мы планируем рассмотреть вариант с прекращением
поддержки встроенного в Рабочее место QUIK языка QPILE. Этот интерпретатор
скриптового языка был разработан нашей компанией в 2002г. В течение 10 лет язык
развивался по пожеланиям пользователей, добавлялись новые возможности,
клиенты с помощью него создавали свои собственные расчетные таблицы,

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

Используется ли еще Вами язык QPILE и если да - существуют ли какие-либо препятствия к решению этих задач средствами LUA?

Используется ли еще Вами язык QPILE и если да - существуют ли какие-либо препятствия к решению этих задач средствами LUA?

Да, используется.
Да, используется, есть препятствия к решению этих задач средствами LUA.
Нет, не используется.
Всего проголосовало: 52
Здравствуйте!

       В течение ближайшего года мы планируем рассмотреть вариант с прекращением поддержки встроенного в Рабочее место QUIK языка QPILE. Этот интерпретатор скриптового языка был разработан нашей компанией в 2002г. В течение 10 лет язык развивался по пожеланиям пользователей, добавлялись новые возможности, Вы с помощью него создавали свои собственные расчетные таблицы, писали роботов и делали интеграции с другими продуктами.
       В 2012г. мы приняли решение об отсутствии перспектив его дальнейшего развития, в результате чего в Рабочее место QUIK был встроен интерпретатор скриптового языка LUA. QPILE прекратил свое развитие, но поддержка была сохранена. Последующие 4 года мы пропагандировали применение LUA, который в текущий момент является основным инструментом, используемым для разработки клиентских скриптов в QUIK.
       Тем не менее, перед принятием окончательного решения об отказе от поддержки QPILE, нам хотелось бы понять — используется ли еще Вами данный язык и если да — существуют ли какие-либо препятствия к решению этих задач средствами LUA? В случае положительного ответа просьба отвечать в данной ветке форума.

Sergey Gorokhov, forum.quik.ru/forum9/topic1792/

Визуализация сделок на графике в QUIK.

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

Нашел в этом топике подходящий скрипт http://smart-lab.ru/blog/279473.php, автору — спасибо!

Скрипт рабочий, но для меня был неудобен формат данных в trades.csv. Первый столбец содержал данные в формате <ГГГГ-ММ-ДД ЧЧ: ММ: СС>;<ТИКЕР>..., т.е. дата и время сделки были в одной ячейке. Мой скрипт (История позиций © Михаил Понамаренко), сохраняющий сделки, имеет иной формат <ГГГГММДД><ЧЧММСС><ТИКЕР>… Приводить данные по моим сделкам в соответствии с форматом скрипта LCHI.lua — гемор. Недолго подумав, я решил, вместо постоянного переформатирования своих данных, один раз внести изменения в код скрипта. Что и было сделано.

Но это не всё! Я использую несколько субсчетов (кодов клиента) и мне хотелось видеть во всплывающих подсказках (hints) по какому коду клиента была проведена сделка. Код скрипта был доработан, в trades.csv добавлен еще один столбец с текстовыми данными, можно так же использовать его для добавления комментов к сделке.

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

Lbot3D: углубление внутреннего содержания.

    • 14 апреля 2016, 08:51
    • |
    • XXM
  • Еще
                                                         

Открылась бездна звезд полна;
Звездам числа нет, бездне дна.
                     М. В. Ломоносов

Конструктор стратегий Lbot позволяет создавать разнообразные торговые стратегии.
Он хорош для составления долгосрочных стратегий: входы и выходы из позиций — по рыночным ценам, в арсенале — весь набор индикаторов QUIK.
Созданный на его основе конструктор Lbot3D — программа с бо́льшими возможностями: входы и выходы возможны по лимитированным заявкам, и по одному инструменту могут быть запущены одновременно неограниченное количество стратегий, совершенно независимых друг от друга. Они могут управлять своими долями от части денежных средств, выделенных для этого инструмента из общего депозита.

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

Тестирование стратегий в QUIK. LbotTest 1.8

    • 10 апреля 2016, 12:10
    • |
    • XXM
  • Еще
Предыдущая запись про тестирование в QUIK тут: http://smart-lab.ru/blog/316390.php
Сейчас — продолжение игр с простановкой меток.
Добавлена возможность настройки параметров меток: ALIGNMENT, TRANSPARENCY, TRANSPARENT_BACKGROUND (расположение картинки относительно текста и прозрачность).
Также возможно присвоение убыточным и прибыльным сделкам разных меток:

При наличии двух дополнительных файлов- картинок: buy_loss.bmp и sell_loss.bmp, сделки, закрывающие позиции с убытком, будут отображаться этими изображениями.
При наличии двух дополнительных файлов- картинок: buy_profit.bmp и sell_ profit.bmp, сделки, закрывающие позиции с прибылью, будут отображаться этими метками.
Если дополнительных меток не будет, то сделки «купить» и «продать» будут изображаться файлами по умолчанию:  buy.bmp и sell.bmp.

описания: нет (

скачать: http://www.xsharp.ru/tester



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

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