Блог им. SerSer

Простенький реверсивный индикатор (QLUA)

Реверсивный индикатор на основе EMA с простым алгоритмом исполнения.

Всем кто хочет пользоваться — Пользуйтесь!

Всем кто хочет модернизировать — Пользуйтесь!

Простенький реверсивный индикатор (QLUA)



PS
Не грааль!!!


Settings = 
{
        Name = "xSarEma",
        period = 21,
        period2 = 256,
        deviation=2,
        line=
        {
                {
                        Name = "Sar",
                        Color = RGB(0, 64, 0),
                        Type = TYPET_BAR,
                        Width = 3
                },
                {
                        Name = "EMA",
                        Color = RGB(0, 128, 0),
                        Type = TYPE_LINE,
                        Width = 2
                }
        ,
                {
                        Name = "BBB",
                        Color = RGB(0, 0, 255),
                        Type = TYPE_TRIANGLE_UP,
                        Width = 1
                }
        ,
                {
                        Name = "SSS",
                        Color = RGB(255, 0, 0),
                        Type = TYPE_TRIANGLE_DOWN,
                        Width = 1
                }
        }
}

----------------------------------------------------------
function cached_SAR()
        local cache_SAR={}
        local cache_ST={}
        local EMA={}
        local BB={}
        
        return function(ind, _p, _p2,_ddd)
                local period = _p
                local index = ind
                local sigma = 0

                if index == 1 then
                        cache_SAR={}
                        cache_ST={}
                        EMA={}
                        BB={}
                        
                        BB[index]=0
                        cache_SAR[index]=L(index)-2*(H(index)-L(index))
                        EMA[index]=(C(index)+O(index))/2
                        cache_ST[index]=1
                        return nil
                end
                ------------------------------
                        EMA[index]=(2/(_p/2+1))*C(index)+(1-2/(_p/2+1))*EMA[index-1]
                        BB[index]=(2/(_p2/2+1))*(C(index)-EMA[index])^2+(1-2/(_p2/2+1))*BB[index-1]
                        cache_SAR[index]=cache_SAR[index-1]
                        cache_ST[index]=cache_ST[index-1]

                        sigma=BB[index]^(1/2)

                if index ==2 then
                        return nil
                end
------------------------------------------------------------------              
                if cache_ST[index]==1 then
                                
                        cache_SAR[index]=math.max((EMA[index]-sigma*_ddd),cache_SAR[index-1])
                                                
                        if (cache_SAR[index] > C(index)) then 
                                cache_ST[index]=0
                                cache_SAR[index]=EMA[index]+sigma*_ddd
                                return  cache_SAR[index], EMA[index], nil,C(index)
                        end
                end
----------------------------

                if cache_ST[index]==0 then
                                
                        cache_SAR[index]=math.min((EMA[index]+sigma*_ddd),cache_SAR[index-1])
                
                        if (cache_SAR[index] < C(index)) then 
                                cache_ST[index]=1
                                cache_SAR[index]=EMA[index]-sigma*_ddd*1
                                return cache_SAR[index], EMA[index], C(index),nil
                        end
                end
                
----------------------------------
                                                                
                return cache_SAR[index], EMA[index], nil, nil
                        
        end
end
----------------------------

function Init()
        mySAR = cached_SAR()
        return 4
end

function OnCalculate(index)
        return mySAR(index, Settings.period, Settings.period2,Settings.deviation)
end



★25
22 комментария
Для ленивых — файл 
avatar
Скачал файл, пишет ошибки выполнения скрипта
avatar
my_profit, файл поместите в папку LuaIndicators в корневой папке Квика (если нет такой папки — создайте), после чего кнопка «добавить график» и выберите индикатор
avatar
Сергей С., Квик 7 не видит
avatar
my_profit, у меня тоже 7.
avatar
my_profit, Должно быть так



avatar
Quik 7 все видит. Тот же Параболик.
Beekeeper, по картинке — аналог, но совершенно другой алгоритм, и меньше ложных сигналов



avatar
Сергей С. спасибо ещё раз большое за предоставленные индикаторы для quik, можно вас попросить ещё добавить индикаторы если это возможно.
Юрий Мисевра, Какие?
avatar
а чем от параболика отличается?
Правильный трейдинг, Параболик не рисует горизонтальные поддержки
avatar
Маркин Павел, я вижу. Принцип интересен) Там вроде ATR есть..? как-то он фильтрует параболик?
Правильный трейдинг, там совсем ни разу нет даже малейшего намека на алгоритм параболика.
динамическая поддержка в виде отступа от EMA
avatar
Маркин Павел, ой я вот про этот
smart-lab.ru/blog/344625.php#comment6101408
Правильный трейдинг, это сравнение стандартного параболика и данного индикатора
avatar
Маркин Павел, возможно я на луа релюшке " роботе возьму значения с ваших хороших индиков. переключать сделки будет?
avatar
френк френков, может  не корректно переключать
avatar
Маркин Павел, как переписать короткую программку автостопа на луа с купайла. много колбэков ответа транзакции и какие то вспомогательные.
нртр робот сделал.бросает.не коорректно.уровень пляшет иногда.треугольничек
avatar
купайлом не занимался — не хочу даже вникать в него.
пляшет, потому что для текущей свечки — это тестирование поддержки/сопротивления, а она ещё не закончила своё формирование, для робота можно использовать только значение по предыдущей свечи, т.е. по факту пробития — изменения тренда, а не по тестированию ценой поддержки/сопротивления 
avatar

теги блога Маркин Павел

....все тэги



UPDONW