Избранное трейдера OnlyHuman
В поисках площадки для трансляции своих идей по ММК, которая отлично ложиться на идеи стоимостного анализа наткнулся на пост
— Контрольный список Уоррена Баффета — 5000+ рейтинговых акций
По мотивам книги Практическая баффетология автор выделил несколько правил
Правило 1 — Стабильная прибыль (рост за 5 лет / TTM> 0%)
Правило 2 — Хорошее покрытие долга (можно выплатить долг в течение <3 лет)
Правило 3 — Высокая рентабельность капитала (в среднем> 15% за 5 лет)
Правило 4 — Высокая доходность инвестированного капитала (> 12% в среднем за 5 лет)
Правило 5 — Создание FCF (TTM FCF> 0 долл. США)
Правило 6 — Обратный выкуп акций? (Количество акций сегодня <количество акций 5 лет назад)
Правило 7 — IRR больше, чем у долгосрочного казначейства (начальная ставка доходности> 1,1%)
Правило 8 — ERR больше 12% (ожидаемая доходность> 12% — рассчитана с использованием оценок роста аналитиков)
И проделал огромную работу по оценке акции, где за соответствие каждому правилу акция получала 1 балл
Исправлена печать повторных пробоев одного того же экстремума.
По просьбам играющих 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()


Здесь приведу описание простой тактики от Райана Джонса. ПРОСТОЙ МЕТОД ТОРГОВЛИЯ слишком много говорил об эффективных и неэффективных методах с точки зрения простой логики рыночного процесса. Следующий метод, возможно, самый простой и логичный. Помимо этого, немногие системы или методы дают результаты, которые вы увидите на следующих нескольких страницах. |

--[[
параметры:
Procent - процент зигзага
--]]
Settings={
Name="ZIG_SMA",
Procent=2,
lim=20,
div=2.0,
line=
{
{
Name = "ZIG_SMA",
Type =TYPE_LINE,
Width = 2,
Color = RGB(0,0, 0)
}
}
}
function Init()
y1 = nil
y2 = nil
x1 = 1
x2 = 1
return 1
end
function OnCalculate(index)
de = Settings.Procent
lim = Settings.lim
div = Settings.div
vl = C(index)
if index == 1 then
y1 = vl
y2 = vl
else
if C(index) > y1*(1+de/100) and y1 < y2 then
x2 = x1
y2 = y1
x1 = index
y1 = C(index)
else
if C(index) > y1 and y1 >= y2
then
x1 = index
y1 = C(index)
end
end
if C(index) < y1*(1-de/100) and y1 > y2 then
x2 = x1
y2 = y1
x1 = index
y1 = C(index)
else
if C(index) < y1 and y1 <= y2
then
x1 = index
y1 = C(index)
end
end
end
per = math.floor((x1 - x2)/div)
if per < lim then
per = lim
end
ss = 0
k=0
for i = index - per, index do
if i >= 1 then
ss = ss + C(i)
k=k+1
end
end
if k ~= 0 then
vl=ss/k
end
return vl
end