Блог им. kurd
Исправлена печать повторных пробоев одного того же экстремума.
По просьбам играющих smart-lab.ru/vopros/703796.php
В Quik'е нельзя только предсказывать будущее.
Индикатор Breakout рисует на графике котировок точки пробоя для экстремумов заданного числа Num баров. Для последнего интервала Num баров показывает уровни экстремумов.
Значение Num и признак Print печати сообщений на пробои можно поменять через параметры индикатора.
Чтобы в Quik'е использовать этот индикатор, поместите нижеследующий код в текстовый файл Breakout.lua, а сам этот файл в подкаталог LuaIndicators в том каталоге Quik'а, где лежит файл info.exe.
Чтобы метки пробоев были виднее, индикатор следует поместить после графика котировок. Эти метки позволят на глазок определить прибыльность пробойной стратегии.
-- Ростислав Дмитриевич Кудряшов, СПб, 2021
-- Индикатор Breakout для Quik: min и max Num баров
Settings = {
Name = "_Breakout"
,line = {
{Name = "Min"
,Color = RGB (255,0,0)
,Type = TYPE_LINE
,Width = 1}
,{Name = "Max"
,Color = RGB (0,255,0)
,Type = TYPE_LINE
,Width = 1}
,{Name = "Lwr"
,Color = RGB (255,255,0) -- Жёлтый
,Type = TYPE_TRIANGLE_DOWN
,Width = 1}
,{Name = "Upr"
,Color = RGB (0,128,255) -- Тёмно-Голубой
,Type = TYPE_TRIANGLE_UP
,Width = 1}
}
,Num = 10
,Print = 1 -- или 0
}
Scan = 0 -- При загрузке Quik сканирует 1 раз
function Init()
return #Settings.line
end
function OnChangeSettings()
Scan = 0
end
function OnCalculate (index)
local n, mn, mx, ini, fin, upr, lwr, printFlag
n = Settings.Num
if n < 1 or index <= n then
if index == 1 then
Scan = Scan + 1
SetRangeValue (3, 1, Size(), nil)
SetRangeValue (4, 1, Size(), nil)
end
return nil
end
mn = math.huge
mx = -math.huge
ini = index - n
fin = index - 1
for i = ini, fin do
mn = math.min (mn, L(i) or mn)
mx = math.max (mx, H(i) or mx)
end
printFlag = Settings.Print > 0 and index == Size() and Scan > 1
lwr = GetValue (index, 3)
upr = GetValue (index, 4)
if not lwr and L(index) and L(index) < mn then
if printFlag then
message (Settings.Name ..": Dn ".. mn)
end
lwr = mn
end
if not upr and H(index) and H(index) > mx then
if printFlag then
message (Settings.Name ..": Up ".. mx)
end
upr = mx
end
if index == Size() then
SetValue (ini-1, 1, nil)
SetValue (ini-1, 2, nil)
SetRangeValue (1, ini, fin, mn)
SetRangeValue (2, ini, fin, mx)
else
mn, mx = nil
end
return mn, mx, lwr, upr
end -- OnCalculate()
это про мальчика что — ли индикатор ?
Большинство трейдеров — мужчины.
Поэтому, думаю, индикатор про девочку трейдерам понравился бы больше.