Блог им. XXM
В программе Lbot3D появилась реализация вычисления скользящего экстремума в конкретной стратегии при наличии позиции. Слово «конкретной» звучит потому, что этот самый экстремум можно использовать в других стратегиях из портфеля стратегий. Согласен, это нужно не всем. Скорее так: мало кому он нужен. Тем не менее, продолжу.
Допустим мы придумали стратегию на некотором активе, рассчитанную на тренд:
Покупаем на четверть портфеля. Если цена пошла против нас (пусть на 1%)- стопимся, но если в нашу сторону +1%, то в предположении, что мы тренде, выставим лимитированную заявку на покупку второй четверти на 0.5% ниже достигнутого экстремума: откат вероятен, и после того, как на откате вытряхнут часть пассажиров, (самых пугливых, самых недостойных :)), наш портфель зацепит еще несколько лотов и едем дальше, «на север». Но если первая четверть бумаг размещена в нашем портфеле на «долгосрок», то вторая четверть будет сразу же выставлена на продажу с профитом, например, в 1%.
Возможны варианты:
Что касается третьей и четвертой четверти депозита, то тут могут быть варианты: на +3% (или выше) может быть рыночная добавка со своим скользящим лимитником или эту стратегию можно будет соорудить на другой бумаге с другими параметрами.
Код стратегии для Lbot3D, на примере для фьючерса SRZ8:
[SRA0] Security = SRZ8, SPBFUT, SR_Price, A0 WorkSize = 10 OpenSlippage = 25 min_max = 0.7% OpenLong = {MA1} > {MA2} OpenShort = {MA1} < {MA2} StopLoss = 1% TakeProfit = 6%, 0.5%, 0.5% autoBot = Y [SRA1] Security = SRZ8, SPBFUT, SR_Price, A1 WorkSize = 10 Sensitivity = 25 BuyAtLimit = if ({SRA0:qty} > 0 and {SRA0:max} > 0) then {SRA0:max} * 0.995 TakeProfitLong = {OpenPrice} * 1.01 SellAtLimit = if ({SRA0:qty} < 0 and {SRA0:min} > 0) then {SRA0:min} * 1.005 TakeProfitShort = {OpenPrice} * 0.99 CloseLong = {SRA0:qty}<=0 CloseShort = {SRA0:qty}>=0 StopLoss = 1% autoBot = Y
Некоторые пояснения:
OpenLong и OpenShort в стратегии [SRA0] — это некоторое ВАШЕ правило открытия позиций в зависимости от взаимного расположения ваших чудо-индикаторов, сигнализаторов или их комбинаций {MA1} и {MA2};
OpenSlippage — проскальзывание для рыночного открытия позиций в [SRA0], в количестве минимальных шагов цены;
min_max = 0.7% — признак для расчета экстремума цен, при этом расчет начинается только по достижении 0.7% (в данном примере) профита по открытой позиции. Если min_max = 0, то расчет экстремум начнется в момент открытия позиции;
Sensitivity — чувствительность для сдвига лимитированных заявок. Движения меньше 25 шагов цены игнорируются во избежание реакции на каждый шаг.
BuyAtLimit и SellAtLimit — правила для выставления и поддерживания лимитированной заявки на уровне ниже 0.05% от максимума при лонге и выше 0.05% от минимума при шорте;
TakeProfitLong и TakeProfitShort — выставление лимитированных заявок на закрытие позиций с профитом 1% от цены открытия.
Ниже — иллюстрация работы стратегии с двумя скользящими покупками.
а) 1 и 2 — срабатывание лимитированных покупок, выставленных от локального максимума max1;
б) 4 и 3 — срабатывание лимитированных продаж, выставленных от покупок 1 и 2;
с) 5 и 6 — срабатывание лимитированных заявок, которые были порождены при продажах 4 и 3 и которые были вытянуты на некоторый уровень, зафиксированный от уровня max2.
На часть депозита возможна добавка такой стратегии, при котором в момент открытия позиции по ведущей стратегии сразу выставляется лимитированная покупка по цене открытия ведущей стратегии, и, в случае срабатывания, сразу выставляется лимитированная на закрытие.
Эта стратегия будет прописана так:
[SRB1] Security = SRZ8, SPBFUT, SR_Price, B1 WorkSize = 10 Sensitivity = 25 BuyAtLimit = if {SRA0:qty} > 0 then {SRA0:OpenPrice} TakeProfitLong = {OpenPrice} * 1.01 SellAtLimit = if {SRA0:qty} < 0 then {SRA0:OpenPrice} TakeProfitShort = {OpenPrice} * 0.99 CloseLong = {SRA0:qty}<=0 CloseShort = {SRA0:qty}>=0 StopLoss = 1% autoBot = Y
Отличия — в написании правил для выставления лимитированной заявки на открытие позиции: {SRA0:OpenPrice}. Так как эта цена неизменна, то заявка не будет скользящей. Здесь реализован расчет на извлечение прибыли на начальной стадии предполагаемого тренда.
Резюме: в какой-то момент движение цены может перейти в затяжной боковик. Тут вышеописанный прием может принести много прибыльных сделок на этих движениях вправо.
Успехов в захватах откатов!
Стоит пару раз словить проблемы с ботами технического характера, чтобы понять, что надежнее ручками. Тем более тейкпрофиты случаются сейчас не часто.