Избранное трейдера Kerby
В предыдущем посте я рассказал. Как определить величину позиции с использованием риск менеджмента. Откуда берутся конкретные значения. Показал, что всем известные значения 2-5% от депозита не соответствует истине. Дал вот такие формулы:
Количество лот на сделку:
Л= Д/(Ц+Н*(С1-С2))
Расшифровка переменных, как и понимание самой формулы в предыдущем посте.
Есть другие факторы, которые мы еще не учли. Но которые так же должны учитываться при риск менеджменте.
В прошлый раз я опустил проскальзывание и комиссию брокеру за сделку (обозначим — К). Их нужно прибавить к (С1-С2)
Соблюдение риск менеджмент предполагает. Что в течении длительного времени (год) мы не прейдем к ситуации. Когда на счете не окажется денег для продолжения торговли. Не смотря на то, что эти совокупные события, по сути, не превратили доходную стратегию в убыточную.
Существуют риски, которые непременно присутствуют на рынке. Которые могут привести к тому. Что наш максимальный стоп увеличится по не учтенной нами ситуации. У меня был случай. Когда я торговал Магнит (мой первый опыт). За три дня я сделал некую прибыль на лонговой позиции. После рынок изменился, РТС падал. Я принял решение шортить Магнит. Через 30 минут от моего открытого шорта вышла новость о доходности магнита за полугодие. Это привело к тому. Что котировка сгепировала вверх, перепрыгнув мой стоп. Увидев это, я закрыл позицию с тем убытком, какой давал мне рынок. Он составил всей 3-х дневной прибыли. И превышал мой стоп в 5-6 раз. На тот момент мне и в голову не приходило учитывать такой форс мажор. Более того, такого типа новости не редко выходят по размытым датам и времени.
--Параметры: p_classcode=«SPBFUT» --Код класса p_seccode=«RIH5» --Код инструмента p_account="...." --Код счета p_clientcode="...." --Клиенткий код p_count=2 --Размер позиции p_spread=170 --Проскальзывание
is_run = true count = 0
function main() while is_run do sleep(100) robot() end end
function robot() local N1=getNumCandles(«MA1-RIH5») local N2=getNumCandles(«MA2-RIH5») local N=getNumCandles(«RIH5») t1,n1,i1=getCandlesByIndex(«MA1-RIH5», 0, N1-3, 2) t2,n2,i2=getCandlesByIndex(«MA2-RIH5», 0, N2-3, 2) t,n,i=getCandlesByIndex(«RIH5», 0, N-1, 1) --сигнал на продажу (первый мувинг пересекает втрой сверху вниз if t1[0].close>t2[0].close and t1[1].close<t2[1].close then Trade(«S»,count+p_count,t[0].close-p_spread) end --сигнал на покупку (первый мувинг пересекает второй снизу вверх if t1[0].close<t2[0].close and t1[1].close>t2[1].close then Trade(«B»,p_count-count,t[0].close+p_spread) end end
function Trade(a_oper,a_count,a_price) if a_count>0 then t = { [«CLASSCODE»]=p_classcode, [«SECCODE»]=p_seccode, [«ACTION»]=«NEW_ORDER», [«ACCOUNT»]=p_account, [«CLIENT_CODE»]=p_clientcode, [«TYPE»]=«L», [«OPERATION»]=a_oper, [«QUANTITY»]=tostring(a_count), [«PRICE»]=tostring(a_price), [«EXPIRY_DATE»]=«GTS», [«TRANS_ID»]=«1» } res=sendTransaction(t) message(«Количество до »..tostring(count).." количество сделки "..tostring(a_count).." тип операции"..a_oper,1) if a_oper==«B» then count=count+a_count else count=count-a_count end message(«Количество после »..tostring(count),1) end end
function OnStop(stop_flag) is_run=false stop_flag=1 end
Не нравятся нейронные сети? Вы просто не умеете их готовить. Рецепт.
Silentium est aurum
Молчи, пока ты не в состоянии сказать нечто такое, что полезнее твоего молчания. (кто-то умный сказал)