Избранное трейдера максим
привет!
у меня в квике стояла камарилла аж с 2014 года, когда вы выложили здесь этот индикатор.
квик обновился до 8 и камарилла пропала.
это не исправить?
-- Camarilla.lua Settings={ Name = "Camarilla", period = 'D', line = { {Name = "S5", Color = RGB(255, 0, 0), Type = 1, Width = 2}, {Name = "S4", Color = RGB(255, 165, 0), Type = 1, Width = 2}, {Name = "S3", Color = RGB(255, 255, 0), Type = 1, Width = 2}, {Name = "PP", Color = RGB(0, 255, 0), Type = 1, Width = 2}, {Name = "R3", Color = RGB(0, 191, 255), Type = 1, Width = 2}, {Name = "R4", Color = RGB(0, 0, 255), Type = 1, Width = 2}, {Name = "R5", Color = RGB(139, 0, 255), Type = 1, Width = 2}, } } local math_floor = math.floor local levels = 0 local ydH, ydL, ydC, ydO = {},{},{},{} local PP, R3, R4, R5 = 0,0,0,0 local S3, S4, S5 = 0,0,0 local delta = 0 local cl = 0 local predThisDay=0 local function dTs(t) return 100*(100*t.year+t.month)+t.day; end local OldDay = '' -- для выделения начала торгового дня function Init () local t=getDataSourceInfo() local tt = t.interval if tt == -3 then message('Месячный график не обрабатывается.',1) return end return 7 end function OnCalculate (index) local time tt=T(index); ---время из свечи --local ThisDay=dTs(tt) -- дата в формате yyyyMMdd local tDay=dTs(tt) -- дата в формате yyyyMMdd local ThisDay = tDay if Settings.period == 'W' then ThisDay=tt.week_day -- номер недели end if index == 1 then --message('First ThisDay = '..tostring(ThisDay),1) local t=getDataSourceInfo() --7.2.5 Функция предназначена для получения информации об источнике данных для индикатора. local scale = getSecurityInfo(t.class_code, t.sec_code).scale -- NUMBER, Количество значащих цифр после запятой mul = 10^scale -- возведение в степень local tt = t.interval if tt == -3 then tt = 'месяц' elseif tt == -2 then tt = 'неделя' elseif tt == -1 then tt = 'день' else tt = tt..' мин.' end --message(t.sec_code..'('..t.class_code..'), цифр после запятой: '..scale..', mul = '..mul..', дата = '..ThisDay,1) levels = levels + 1 if ThisDay ~= OldDay then OldDay = ThisDay end predThisDay = ThisDay -- delta = H(index) - L(index) cl = C(index) R5 = (H(index) / L(index))*cl calcLevels(index) local per = 'daily' if Settings.period == 'W' then per = 'weekly' end message('Camarilla '..per..', Т = '..tt..', © xsharp.ru 20.06.2015', 1) return end if Settings.period == 'W' then if ThisDay < OldDay then -- для неделек OldDay = OldDay + 1 if OldDay ~= ThisDay then OldDay = ThisDay end levels = levels + 1 delta = ydH[levels-1] - ydL[levels-1] cl = ydC[levels-1] R5 = (ydH[levels-1] / ydL[levels-1])*cl calcLevels(index) --if index<120 then --message('index= '..tostring(index)..', Смена недели: '..tostring(ThisDay)..', OldDay: '..tostring(OldDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1) --end predThisDay = ThisDay else if ThisDay ~=predThisDay then --message('index= '..tostring(index)..', ThisDay= '..tostring(ThisDay)..', predThisDay: '..tostring(predThisDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1) predThisDay = ThisDay OldDay = OldDay + 1 end ThisDayF(index) end elseif Settings.period == 'D' then if ThisDay ~= OldDay then -- для дневок OldDay = OldDay + 1 if OldDay ~= ThisDay then OldDay = ThisDay end levels = levels + 1 delta = ydH[levels-1] - ydL[levels-1] cl = ydC[levels-1] R5 = (ydH[levels-1] / ydL[levels-1])*cl calcLevels(index) --if index<120 then --message('index= '..tostring(index)..', Смена недели: '..tostring(ThisDay)..', OldDay: '..tostring(OldDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1) --end predThisDay = ThisDay else if ThisDay ~=predThisDay then --message('index= '..tostring(index)..', ThisDay= '..tostring(ThisDay)..', predThisDay: '..tostring(predThisDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1) predThisDay = ThisDay OldDay = OldDay + 1 end ThisDayF(index) end elseif Settings.period == 'H4' then if ThisDay ~= OldDay then -- для дневок OldDay = OldDay + 1 if OldDay ~= ThisDay then OldDay = ThisDay end levels = levels + 1 delta = ydH[levels-1] - ydL[levels-1] cl = ydC[levels-1] R5 = (ydH[levels-1] / ydL[levels-1])*cl calcLevels(index) --if index<120 then --message('index= '..tostring(index)..', Смена недели: '..tostring(ThisDay)..', OldDay: '..tostring(OldDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1) --end predThisDay = ThisDay else if ThisDay ~=predThisDay then --message('index= '..tostring(index)..', ThisDay= '..tostring(ThisDay)..', predThisDay: '..tostring(predThisDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1) predThisDay = ThisDay OldDay = OldDay + 1 end ThisDayF(index) end end return S5, S4, S3, cl, R3, R4, R5 end function round(value) return math_floor(value*mul + 0.5) / mul end function ThisDayF(index) ydC[levels] = C(index) if H(index) > ydH[levels] then ydH[levels] = H(index) end if L(index) < ydL[levels] then ydL[levels] = L(index) end end function calcLevels(index) ydO[levels] = O(index) ydH[levels] = H(index) ydL[levels] = L(index) ydC[levels] = C(index) -- R3 = cl + delta * 1.1/4 R4 = cl + delta * 1.1/2 -- S3 = cl - delta * 1.1/4 S4 = cl - delta * 1.1/2 S5 = cl - (R5-cl) -- R5 = round(R5) R4 = round(R4) R3 = round(R3) S3 = round(S3) S4 = round(S4) S5 = round(S5) end
"Если хочешь зарабатывать — лучше строить торговые системы, а не прогнозы". Тимофей Мартынов.
Здравствуйте, дамы и господа!
Каким же требованиям должна отвечать торговая система (далее – ТС)? Напомню, что бессистемная, основанная на субъективных оценках торговля это игра с отрицательным математическим ожиданием выигрыша и потеря денег при использовании такого подхода – вопрос времени и количества совершенных сделок (смотрите статью "Опыт — мудрость глупцов!").
1. ТС должна быть алгоритмизирована в виде торгового робота – только такой подход дает возможность проверить гипотезу о поведении котировки, заложенную в ТС, смоделировав сделки по правилам ТС с использованием известной истории изменения котировок на длительных временных интервалах, включающих различные рыночные ситуации (продолжительные тренды, флэтовые периоды, резкие (новостные) изменения и пр.) Тестирование ТС торговлей в реальном времени практически неприменимо, так как из-за бесконечной вариативности торговых систем может просто не хватить жизни для проверки достаточного их количества, а действительно прибыльная ТС — золотой самородок в куче пустой породы. Кроме того, серия тестов на истории с различными параметрами ТС позволяет найти оптимальные их значения для различных финансовых инструментов, например, расстояния до уровней стоп-лосса и тейк-профита для инструментов с различной волатильностью.
А вот и табличка по S&P500!
https://docs.google.com/spreadsheets/d/11epplwQPMo2cLZSFLD_G7dXBuV6eX01-66TJZpK4dBA/edit?usp=sharing
Первым делом, делаем свою собственную копию: «Файл» -> «Создать копию».
1. Это лайт-версия: аналогично на странице Main – в зеленое поле вписывается целевая сумма в $.
Чуть ниже вносятся только тикеры и только количество купленных уже акций. Данные можно скопировать из каких-то своих таблиц, будь то Excel или Google-таблица (можно скачать брокерский отчет в личном кабинете брокера в формате Excel), а можно просто вбить вручную.
2. На вкладке “S&P500” автоматически проверяется соответствие вбитых вами тикеров с существующими, и расставляются купленные акции в правильные поля. Если какая-то компания становится в индексе выше или ниже (такое происходит почти каждый день, особенно на дне индекса), цифры автоматически следуют за тикером, ничего корректировать не надо. Поля В, С, D, E загружаются автоматически и обновляются каждый день. Поля G, H, I, J, AB загружаются автоматически и обновляются каждые 20-30 минут. Поля K, O, P, Q от того, какую сумму вы вбили в «Цель (капитал)». Поля R, S, T зависят от того, какие тикеры вы вбили и сколько купленных акций вписали. Поля U, V, W, X несут информацию о дивидендах и обновляются 1-2 раза в неделю. Поле «Кризис-радар» вставлено просто так, в развлекательных целях, читайте пометку (наведите на черный уголок над надписью «Кризис-радар»). На этой вкладке вообще ничего редактировать не нужно.
ОФЗ. Или рублевая ключевая ставка завышена, или завышены цены ОФЗ. Взгляните таблицу: даже пятилетние бумаги торгуются с доходностями ниже ключевого уровня 7,25%. Облигации учитывают уже не только последнее, но и предстоящие понижения ставки. Произойдут ли эти понижения, покажет будущее. Факт в том, что рынок ОФЗ очень оптимистичен. Последний раз сопоставимый оптимизм наблюдался в начале 2018 года. Тогда за ним последовала жесткая коррекция. Сейчас, возможно, ситуация не настолько тревожна. На диаграмме хорошо видно снижение доходностей в первую очередь «короткого конца». В 2018-м активнее снижались доходности длинных бумаг. И все же, когда половина ликвидных выпусков торгуется заметно ниже ключевой ставки, как минимум, о потенциале роста рынка и цен говорить уже поздно.
Добрый день, Господа!
Хочу поделиться с вами проделанной мною работой на тему отбора недооцененных акций. Методика отбора всем известная – стоимостная и не учитывающая дивидендную политику. Лично у меня нет времени гоняться за новостями и дивидендами.
Данные из отчетностей за последние 5 лет я свёл в таблицу Excel, в которой очень удобно делать выборки и сортировки.
Из отчетностей я брал только: количество акций, активы, обязательства, капитал, выручка, чистая прибыль. С помощью полученных данных получил капитализацию, коэффициент закредитованности и мультипликаторы Р/Е, Р/В. Таблицу буду дорабатывать, но костяк уже сформирован.
Да, и Реальная цена акции рассчитана по формуле Капитал/Кол-во акций, а не Активы/Кол-во акций. ИМХО только капитал более-менее говорит о реальной стоимости компании.
Сортировку сделал следующую:
— Оставил только компании с размером активов свыше 10 млрд. руб.;
— Убрал все компании, получившие хоть раз за 5 лет убыток;
Значение цена — чистая прибыль позволяет быстро сравнить несколько абсолютно разных по капитализации компаний и сделать правильный выбор в пользу тех, которые в данный момент наиболее выгодные с точки зрения доходности.
Допустим у вас есть деньги и вы хотите купить квартиру (или несколько) для сдачи в аренду. Есть вариант квартиры с большой площадью стоимостью 100 000 долларов. Также можно на эти деньги купить 2 квартиры поменьше, по 50 тысяч каждая. Что же выбрать?