пользоваться можно так:
если касная кривая выше 0,5 и синяя выше зеленой то логуем
если красная ниже 0,5 и синяя ниже зеленой то шортим
принимаю пожелания по изменению кода индикатора
скачать можно здесь:
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),
Type=TYPE_LINE,
Width=1
},
{
Name=«MA2»,
Color=RGB(0,128,128),
Type=TYPE_LINE,
Width=1
}
}
}
function Init()
cache_ind={}
cache_ind2={}
return 4
end
function OnCalculate(index)
if index < Settings.period then
return nil
else
local sum1=0
local sum2=0
local sum0=0
local sum02=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/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/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+24 then
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/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9+1/10+1/11+1/12+1/13)
end
return sum1/sum2, 0.5, sum0, sum02
end
end
всем удачи!