За N бар считаем средний объем.
Считаем среднее изменение цены на этих барах, где объем ниже от среднего умноженного на 1.5
Если изменение цены на текущем баре по модулю больше, чем полученное средняя цена, то принимаем ее с таким же знаком, но со значением средней цены. Строим таким образом сглаженный график цены и торгуем по нему.
Вывод: график цены становится более горизонтальный, а это значит, что для анализа нового графика больше подходит осцилляторы, а не средние. Удобнее будет каналы строить, например, Боллинджера. И сам график становится более плавный без шума.

--[[
индикатор: индикатор сглаживания цены
параметры:
--]]
Settings={
Name="modi_price_v1",
line=
{
{
Name = "cur1",
Type =TYPE_LINE,
Width = 2,
Color = RGB(0, 0, 0)
},
{
Name = "c <a name="cut"></a> ur2",
Type =TYPE_LINE,
Width = 2,
Color = RGB(255, 0, 0)
},
{
Name = "cur3",
Type =TYPE_LINE,
Width = 2,
Color = RGB(0, 255, 0)
}
}
}
function Init()
return 3
end
function OnCalculate(index)
if index == 1 then
ind = {}
ind[index] = O(index)
else
ind[index] = ind[index-1]
end
if index > 10 then
avgVs = 0
for i = index-10, index-1 do
avgVs = avgVs + V(i)
end
avgV = avgVs/10
avgPs = 0
avgPcnt = 0
for i = index-10+1, index-1 do
if avgV*1.5 > V(i) then
avgPs = avgPs + math.abs(O(i)-O(i-1))
avgPcnt = avgPcnt+1
end
end
if avgPcnt ~= 0 then
avgP = avgPs/avgPcnt
end
if avgV*1.5 > V(index) then
ind[index] = ind[index-1]+O(index)-O(index-1)
else
if O(index)-O(index-1) > 0 then
ind[index] = ind[index-1]+avgP
else
ind[index] = ind[index-1]-avgP
end
end
end
return ind[index]
end
Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.