1 подписчик
Используем этот пример для написания торгового робота.
Функции для доступа к источнику данных O, H, L, C, V, T принимают в качестве параметра индекс свечи и возвращают соответствующее значение.
Первое что сделаю, перепишу функцию для себя.
Для расчета МА использую функцию O(idx).
Переменная APeriodMA[idx] хранит расчетные значения МА для каждого бара.
Settings={}
Settings.B_PeriodMA = "1"
function Init()
return 8
end
function MyInit()
APeriodMA = {}
APeriodMA[0] = 0
APeriodMA[1] = 0
PeriodMA = Settings.B_PeriodMA+0
end
function OnCalculate(idx)
if idx == 1 then
MyInit()
end
APeriodMA[idx] = APeriodMA[idx-1]
if idx >= PeriodMA then
mSum = 0
if idx == PeriodMA then
for i = 0, PeriodMA-1, 1 do
mSum = mSum + O(idx - i)
end
APeriodMA[idx] = mSum/PeriodMA
end
if idx > PeriodMA then
APeriodMA[idx] = APeriodMA[idx-1] - O(idx-PeriodMA)/PeriodMA + O(idx)/PeriodMA
end
end
if idx >= PeriodMA then
return APeriodMA[idx]
end
end
Если в папке QUIK нет папки LuaIndicators, то нужно ее создать.
В ней создать файл, скопировать текст.
Около минуты
20 января 2024