Избранное трейдера Алексей
Это мой первый пост на Смарт-Лабе. Пишу скорее для себя, давно хотел в одном месте собрать ссылки на ресурсы, которыми регулярно пользуюсь. На рынке с 2011 года, с самого начала – как долгосрочный инвестор. Был небольшой опыт спекуляций, даже в плюс, но затраты времени и нервов совершенно не окупаются. То есть заработать можно, но быстро утомляешься, нервничаешь, снижается качество жизни.
Профиль волатильности. Есть такой зверь и он не может не есть. Что бы его поймать, мы вернемся к нашей стратегии лимитных заявок. Если вы видели гениальный биржевой график (а они все гениальные, потому что простые), то должны были заметить, что там цена ходит не просто вверх вниз, но и еще направо (на лево не ходит). Это должно было натолкнуть вас на мысль, что в торговле и торговой системе должно присутствовать время. Вход в рынок и выход из него должен происходить с учетом того, сколько времени вы там будите. Когда вы интересуетесь свой зарплатой или зарплатой соседа, вам важно как часто такая зарплата платится. В нашей ТС мы смотрим на стодневную свечу. Это значит, что торгуем мы сто дней и рассчитываем свою зарплату за 100 дней. И если с этим ни кто спорить не будет, вернемся к распределению случайностей. Помните, мы брали сто свечей и строили колокол. Но вот проходит 50 дней, мы откидываем 50 свечей и наш колокол становиться уже. И если наша сигма за сто дней была 10% (отклонение от цены БА +-) то через 50 дней (остается еще 50 дней) наша сигма уже 7,5%, а через 99 дней она будет 1%. Допустим, по нашей ТС с лимитками мы определились работать в рамках одной сигмы. Сто дней 10% делим на 100 ордеров, шаг сетки у нас 0,1%. Проходит 50 дней и шаг сетки 0,75%, а на 99 день 0,01%. Но, если ставить отложки через каждые 100 рублей это куда не шло. А вот через каждый рубель, тут уже очко жим жим. Нам такой скальпинг не нужен. Если цена пройдет больше процента в день? Без отката. И как говорилось выше про очко, а оно не железное, его надо укрепить. Например, вставить бронзовую втулку. И естественной бронзовой втулкой является сетка поширше или пошерее. Но тем самым мы расширяем наш колокол распределения и увеличиваем нашу IV. И тут возникает такой эффект, как горизонтальная волатильность.
Settings= { Name = "Piton", N = 100, legend = "price2", line = { { Name = "Sint", Color = RGB(0, 132, 0), Type = TYPE_LINE, Width = 1 } } } function Init() return 1 end Candles = {}; function OnCalculate(index) local numCandles = getNumCandles(Settings.legend); if index <= Settings.N or numCandles <= Settings.N then return nil; end Candles, n, _ = getCandlesByIndex(Settings.legend, 0, index - Settings.N, Settings.N); if n ~= Settings.N then return nil; end -- Предварительный расчет sum1, sum2, sum3 = advancePaynemt(index); -- расчет коэффициента корреляции Пирсона r = sum3/math.sqrt(sum1*sum2); return r; end -- Предварительный расчет ---------------------------------------- function advancePaynemt(index) local sum1 = 0; local sum2 = 0; local sum3 = 0; local j = 0; -- Вычислить среднее арифметическое for i=index - Settings.N + 1, index, 1 do sum1 = sum1 + C(i); sum2 = sum2 + Candles[j].close; j = j + 1; end aver1 = sum1/Settings.N; aver2 = sum2/Settings.N; -- Вычислить сумму квадратов отклонений sum1 = 0; sum2 = 0; j = 0; for i=index - Settings.N+1, index, 1 do sum1 = sum1 + math.pow(C(i) - aver1, 2); sum2 = sum2 + math.pow(Candles[j].close - aver2, 2); j = j + 1; end -- Вычислить сумму произведений разности j=0; for i=index - Settings.N+1, index, 1 do sum3 = sum3 + (aver1 - C(i))*(aver2 - Candles[j].close); j = j + 1; end return sum1, sum2, sum3; endКак запустить и настроить:
Привет всем! В предыдущих статьях я описывал свой тестер, разработанный на C#, и, несколько раз подчёркивал, что переключение между двумя режимами (тестирование/торговля) может быть простым. Код стратегий не должен зависеть от того, кто поставщик маркет-даты и куда уходят заявки – в тестовую базу или на сервер брокера. Конечно, это лишь один из подходов, и кому-то он покажется странным, но, главное его достоинство заключается в том, что тестирование приближается к реальности, что даёт более достоверные результаты. Вопрос в следующем: как, имея один и тот же код, получать разные по функциональности программы? Один из вариантов – использовать инверсию управления и внедрение зависимостей! Об этом сегодня и пойдёт речь.
Приведу пример нехорошего (иногда, говорят – с запашком) кода:
class Strategy { public Strategy() { var mgr = new TestOrderManadger(); mgr.PlaceOrder(...); } }
Здесь плохо то, что класс Strategy зависит от класса TestOrderManadger. В такой реализации нельзя начать использовать какой-нибудь другой менеджер заявок (AnotherOrderManadger) без перекомпиляции библиотеки с классом Strategy. Тем более тут нарушается принцип единства ответственности – класс Strategy, помимо своей прямой обязанности, также, создаёт внутри себя зависимости. Чтобы исправить ситуацию, можно использовать интерфейсы:
interface IOrderMandger { void PlaceOrder(); } class TestOrderManadger : IOrderMandger { public void PlaceOrder(){} } class Strategy { public Strategy(IOrderMandger orderMandger) { var mgr = orderMandger; mgr.PlaceOrder(...); } }
Как я обещала, я собрала информацию об инвестиционном вычете (у него три подвида) и представляю ее в форме таблицы, чтобы было удобно смотреть.
Добрый день всем!
Такое ощущение, что визуально таблица не вся помещается. Кому неудобно смотреть таблицу, ниже идет картинками информация...
|
Положительный финансовый результат от продажи (погашении) ценных бумаг |
Сумма, внесенная на ИИС, но не более 400 тыс.руб. в год |
Положительный финансовый результат, полученный по операциям на ИИС |
Условия получения вычета |
1. Ценные бумаги находились в собственности более трех лет; 2. Ценные бумаги были приобретены с 02.01.2014 года; 3. Ценные бумаги обращаются на ОРЦБ; 4. Вы являетесь налоговым резидентом в том календарном году, в котором вы получили доход от продажи; |