Исправлена печать повторных пробоев одного того же экстремума в том же сообщении.
smart-lab.ru/blog/704033.php
На минутных барах этот печатный долбёж очень досаждает.
Исправлена печать повторных пробоев одного того же экстремума.
По просьбам играющих 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()
Это дополнение «Снова Фьючерс на индекс ММВБ. Грааль для терпил» smart-lab.ru/blog/699619.php
На этот раз гоняем историю фьючерса GOLD. Но для сопоставимости с MXI сразу конвертируем доллары в рубли по курсам на каждый день торгов.
Игнорируем, что фьючерс на золото торгуется в контанго. Не суть! Используем почти тот же алгоритм, что в предыдущей статье, на те же 73 квартала с марта 2003.
Изменение в том, что WealthLab заглючил на истории золота и в одном баре не закрывает позицию по заданной цене. Пришлось делать роллирование по цене открытия дня, следующего за экспирацией.
Оптимизированные параметры: триггер скользящего стопа 25%, реверс 5%, убыток 10%.
Выигрыш 120788.33 руб. Просадка 30820.10 руб на 08.03.2021. От максимума цены позиции 154559 руб на 06.08.2020 это 19.94%.
Теперь для подсчёта прибыльности я беру не конечную цену актива, но среднюю за все дни, равную 52641.90 руб.
Связанные средства: ГО + резерв = 9306.61 * 1.25 = 11633.26 руб; Вариационка = 52641.90 * 0.25 = 13160.48 руб.
Итого: 24793.73 руб. округлим до 25000 руб.
При среднем выигрыше за квартал 1654.63 руб это даёт квартальную прибыльность 6.62%. На год в среднем 26.47%.
Следует отметить 6 проигрышных подряд кварталов 2012-2013 и ещё 5 случаев по 2 проигрыша подряд. Учитывая, что ФРС уже почти израсходовала свой боезапас, вряд ли возможно повторение 2012 года.
Это дополнение к «Фьючерс на индекс ММВБ. Математические ожидания и реальная ретроспекция» smart-lab.ru/blog/699584.php
Т.к. фьючерс на индекс ММВБ торгуется в бэквордации, его историю можно заменить более длинной историей самого индекса, если: 1) умножить индекс на 10 и 2) роллировать позицию в дни экспирации по цене (Open+Close)/2.
И тогда можно представить, как можно было, играя в MXI (малый фьючерс), пережить и 2008, и 2020 годы.
Подробности алгоритма в предыдущей статье. Последний тест на 73 кварталах от марта 2003 дал для фьючерса MXI выигрыш 50549.20 руб. Наибольшая просадка выигрыша 10923.10 руб на 18.03.2020 от максимума 44498.90 руб 20.01.2020 с объёмом позиции 32268.90 руб (33.85% от объёма).
В 2008 просадка скромнее, Но относительном объёма позиции примерно та же.
Средний выигрыш на квартал 692.50 руб. Относительно связанных средств 15000 руб (завышенная оценка) это даёт квартальную прибыльность 4.62% или 18.47% годовых.
Стоп-лосс сработал только однажды, 06.08.2008. Скользящий стоп фиксировал прибыль 15 раз. Оптимизированные параметры: триггер скользящего стопа 20%, реверс 0%. Убыток 25% на квартал я назначил из психологических соображений.
Следует также отметить три проигрышных подряд квартала в 2011. И ещё два случая по два проигрышных квартала подряд.
На графике показан выигрыш индекса ММВБ, не умноженный на 10
Плоские участки в 2008 показывают досрочные закрытия позиции.
Игра в купи и держи даёт выигрыш 39501.70 руб с просадкой 13610.70 руб.
Можно много рассуждать о возможностях положительного матожидания для фьючерса на индекс ММВБ и даже написать не одну статейку.
smart-lab.ru/blog/699550.php
А можно один раз сделать тестовый прогон по истории торгов. У меня набрана история 26 кварталов MXI (малый фьючерс) с экспирациями с марта 2012 по сентябрь 2019.
Покупаем по открытию после дня предыдущей экспирацции и закрываем либо по убытку (25%), либо скользящим стопом (триггер 25%, реверс-10%) либо по закрытию дня экспирации. И без проскальзываний. Комиссия купли-продажи 1 руб.
С этими оптимизированными параметрами выигрыш 10825.50 руб, на 16.06.2017 просадка 5782 руб от предшествующего максимума выигрыша 7525.50 руб (24.78% от объёма позиции 23332.50 руб на 03.01.2017). Средний выигрыш за квартал 416.37 руб. Убытка в 25% не было ни разу, и только однажды скользящий стоп прибавил тыщонку к выигрышу.
Если закрывать только на экспирации, выигрыш 9423.40 руб, просадка 5781 руб.
Теперь о прибыльности. Гарантийное обеспечение 28.05.2021 на фьючерс MMM1 3911.88 руб. Цена контракта на закрытии 37180.50 руб. Резерв вариационки в 25% от объёма контракта равен 9295.12 руб. Резерв 25% на ГО равен 977.97. Итого связанных средств: 3911.88 + 9295.12 + 977.97 = 14184.97. Округляем до 15000 руб.
Со среднего выигрыща 416.37 руб это даёт на квартал прибыльность 2.78%. На год 11.12%.
Правда, в историю не попали провалы 2008 и марта 2020. Для этих периодов могут потребоваться другие стопы.