Избранное трейдера 222
«Свыше десяти лет, трейдинг — основной доход.
Я торгую практически каждый день, мне это нравится.»
«Почему ФОРТС? Чем рынок моложе, тем больше на нем неэффективности.
Низкие комиссионные, хорошая скорость доступа. Низкий порог входа.
Удобное время работы.»
«Почему фьючерсы? Если трейдер не контролирует риски, то он игрок.
Для спекулянта это дешевле и быстрее.»
«Торговля это не ремесло и не наука. Это бизнес.
К трейдингу нельзя относиться как к авантюре, игре и хобби. Только как бизнес.»
«Так как это не наука, поэтому опытный трейдер не может передать знания.
Каждый треqдер должен пройти свой путь
Когда имеешь график функции, такой как опционные цены, то можно подобрать функцию которая ляжет на этот график. У меня есть целая коллекция таких функций. Но я вам хочу представить функцию, которой можно дать объяснения и потом долго доказывать, что она правильная.
В природе много различных процессов, которые математически описываются одними и теми же математическими формулами. Возьмем за основу процесс, график которого очень схож с прайсингом опционов.
В первой части мы рассмотрели «теорему о средней волатильности» где, обозначили такое свойство:волатильности могут на разных таймфреймах значительно отличаться друг от друга. Но они всегда будут со временем сходится к одному значению.
Вот, на этом свойстве и будет построен индикатор. Для индикатора нам нужны волатильности на различных таймфреймах. В качестве индикатора волатильности берутся два стандартных индикатора, но которые по сущности показывают одно и тоже.
Price Channel (PC) или ценовой канал. Индикатор представляет из себя две линии, которые ограничивают канал колебаний цены. Верхняя граница канала обозначает уровень локального максимума за прошедшие N периодов, а нижняя граница – уровень локального минимума за тот же промежуток времени. Таким образом, цена ограничивается максимальными точками колебаний – экстремумами за N периодов.
Пару недель назад беседовал со старой знакомой. Посетовал на застой в текущих делах. В ответ получил ответ, мол, тяжелые дни бывают у всех. Дни? А если застой продолжается месяцы? Кварталы? А может год-два? Как найти в себе мотивацию работать на перспективу в таких условиях? Без получения награды за свои усилия. И с растущей тревожностью относительно успеха всего предприятия.
Хотелось бы вывести за скобки «работу за зарплату». Если человек ежемесячно получает награду за свои усилия, то ни о каком кризисе говорить не приходится, даже если работа не вызывает восторга.
Но вот если вы предприниматель, старающийся раскачать бизнес в кризисные времена; или трейдер, год-два сидящий без прибыли. А может у вас просто интересное перспективное хобби, которому вы посвящаете уже много лет. И последнее время успехи в котором совсем не радуют.
Бретт Стинбаджер, автор зачетной книги «Психология трейдинга», дает, например, четкую причину неудач большинства трейдеров (и не только):
По поводу нужности математики для трейдинга поломано не мало копий (информацию можно легко найти в интернете). Что характерно, кто разбирается в математике, тот говорит «Да, нужна», кто не очень — соответственно «Нет». Особенно мне запомнилась видео дискуссия между двумя моими хорошими знакомыми, один из которых (апологет математики) создал с нуля брокерскую компанию, продал ее и сейчас трудится в Финам, а другой оппонент, самый известный продавец краевых опционов,… ну вы знаете что и как.
Сам я в математике разбираюсь крайне слабо, несмотря на то, что в одном из моих дипломов записана специальность «математик». Поэтому статьи Дмитрия Новикова и комментарии его оппонентов, к сожалению, зачастую вводят меня в ступор. Самое обидное, что практическая польза ну никак не улавливается.
В силу такой ограниченности, приходится пользоваться простыми вещами, такими как, к примеру, правило трех сигм.
Поэтому для таких как я, предлагаю к рассмотрению модель продажи краевых опционов с последующим управлением позицией, основанную на упомянутом выше правиле.
--Массив с Тикерами, добавьте нужные тикеры aTickerList = {"MSNG", "GAZP", "LKOH", "SIBN", "GMKN","ROSN", "SBER", "TATN", "NVTK", "IRAO", "RSTI", "SBERP", "PHOR", "SNGS", "TRNFP", "VTBR", "FEES", "MVID", "RASP", "MFON", "AFLT", "MAGN", "ALRS", "MTSS", "MOEX", "RTKM", "MGNT", "NLMK", "SNGSP", "CHMF", "MTLR", "HYDR", "MFON", "RSTI", "PLZL", "BANEP", "POLY" }; --Функция поиска цены function fGetPrice(sTickerName, sNum) --Подключаемся к источнику данных local ds=CreateDataSource("TQBR", sTickerName, INTERVAL_D1); while (Error=="" or Error == nil) and ds:Size() ==0 do sleep(10) end; if Error ~="" and Error ~=nil then message("Error: "..Error, 1) end; local sSize=ds:Size(); local sCurrentPrice=ds:O(sSize); local sLastWeekPrice7=0; local sLastWeekPrice14=0; --Берем цену закрытия свечи неделю назад sLastWeekPrice7=ds:C(sSize-4); --Берем цену закрытия свечи 2 недели назад sLastWeekPrice14=ds:C(sSize-8); --Вычисляем проценты local sPrc7=math.floor((100-((sLastWeekPrice7*100)/sCurrentPrice))*100)/100; local sPrc14=math.floor((100-((sLastWeekPrice14*100)/sCurrentPrice))*100)/100; --Заполняем таблицу значениями SetCell(t_id, sNum, 0, tostring(sTickerName)); SetCell(t_id, sNum, 1, tostring(sCurrentPrice),sCurrentPrice); SetCell(t_id, sNum, 2, tostring(sLastWeekPrice7),sLastWeekPrice7); SetCell(t_id, sNum, 3, tostring(sLastWeekPrice14),sLastWeekPrice14); SetCell(t_id, sNum, 4, tostring(sPrc7),sPrc7); SetCell(t_id, sNum, 5, tostring(sPrc14),sPrc14); --Текущая цена больше цены прошлой недели - раскрашиваем зеленым if sCurrentPrice>sLastWeekPrice7 then fGreen(sNum); end; --Текущая цена меньше цены прошлой недели - раскрашиваем красным if sCurrentPrice<sLastWeekPrice7 then fRed(sNum); end; --Текущая цена больше цены прошлой недели и цена прошлой недели больше цены позапрошлой недели --раскрашиваем желтым if sCurrentPrice>sLastWeekPrice7 and sLastWeekPrice7>sLastWeekPrice14 then fYellow(sNum); end; end; --- Функция создает таблицу function CreateTable() -- Получает доступный id для создания t_id = AllocTable(); -- Добавляет 6 колонок AddColumn(t_id, 0, "Тикер", true, QTABLE_INT_TYPE, 15); AddColumn(t_id, 1, "Сегодня", true, QTABLE_INT_TYPE, 15); AddColumn(t_id, 2, "Неделя", true, QTABLE_INT_TYPE, 15); AddColumn(t_id, 3, "2 Недели", true, QTABLE_INT_TYPE, 15); AddColumn(t_id, 4, "Неделя (%)", true, QTABLE_INT_TYPE, 15); AddColumn(t_id, 5, "2 Недели (%)", true, QTABLE_INT_TYPE, 15); -- Создаем t = CreateWindow(t_id); -- Даем заголовок SetWindowCaption(t_id, "7 Days"); -- Добавляем строки for k,v in pairs(aTickerList) do InsertRow(t_id, k); end; end; --- Функции раскрашивают ячейки таблицы function fRed(col) SetColor(t_id, col, -1, RGB(255,168,164), RGB(0,0,0), RGB(255,168,164), RGB(0,0,0)); end; function fGreen(col) SetColor(t_id, col, -1, RGB(157,241,163), RGB(0,0,0), RGB(157,241,163), RGB(0,0,0)); end; function fYellow(col) SetColor(t_id, col, -1, RGB(249,247,172), RGB(0,0,0), RGB(249,247,172), RGB(0,0,0)); end; --Основная функция function main() -- Создаем таблицу CreateTable(); --Пробегаемся по массиву тикеров for k,v in pairs(aTickerList) do fGetPrice(v, k); end; end;как выглядит в квике: