Избранное трейдера Денис Е.
С понедельника с 6-го мая начнут торговать МИКРО контракты на индексы:
Микро контракты В ДЕСЯТЬ РАЗ МЕНЬШЕ миниконтрактов.
Биржевая маржа также меньше примерно в 10 раз.
Но ВНУТРИДНЕВНАЯ МАРЖА ПОКА ЧТО установлена такой же, как и биржевая. Это связано с тем, что торгов еще не было, неизвестно какая будет ликвидность.
Уверен, что по мере расторговки этих фьючерсов внутридневная маржа будет снижаться.
В терминале эти фьючерсы уже появились.
Доброго времени суток, уважаемые форумчане.
«Взяться за перо» меня заставила моя неосмотрительная покупка, которая стоила мне впустую потраченных денег. Суть в том, что 20.03.2019 я купил и запустил торговый робот «Sigma», который предлагается на «официальном сайте его автора», называющегося Робот – скальпер. Что бы не тратить время и дать Вам возможность быстро ознакомиться с тем, что это такое, даю ссылку: http://robot-scalper.ru/
За 29 900 рублей я получил, цитата: «Полнофункциональный безлимитный робот «Sigma» с пожизненной лицензией». Проблема, стара, как мир. Робот «расхвален до небес»: он предназначен для работы на флэте, но горазд как минимум не сливать и на любом тренде. Робот разработан для торговли на фьючерсах Московской биржи через терминал QUIK. По словам автора, которого зовут Денис Александрович С. (об этом далее чуть подробнее), на флэте робот закрывает в плюс 80-90% сделок. Работает с добавками (1 добавка равна 1 ГО) по схеме 1-2-3-4 (рекомендованные по умолчанию) или 1-1-2-2 (для трусливых). Но в Грааль «Sigma» превращается, если использовать не 4 минимально рекомендованные добавки, а 6 по схеме 1-2-3-4-5-6 или, все-таки для трусливых, 1-1-2-2-3-3. В качестве демонстрации работы робота, но не в качестве штатных рабочих настроек, предложено в первые торговые дни использовать схему 1-1-1-1. Все это изложено в «Руководстве пользователя», которая поставляется уже после покупки вместе с роботом. Но в ПЯТНИЦУ автор Денис категорически не советовал торговать, объясняя это тем, что пятница, это «трендовый день».
В первые две недели своей торговли (т.е. всего 8 торговых дней с 20/03 по 4/04) я торговал по схеме 1-1-1-1-1-1 на рекомендованных автором в качестве основных (для которых робот и разработан) инструментах – фьючерсах RI + Si. Робот совершал на флэте по 46-48 сделок за торговую сессию, из которых 24-26 были … УБЫТОЧНЫМИ. Каким-то чудом я оказывался в прибыли на 1000 – 1200 рублей. Я подумал, что все дело в консервативных настройках и поменял их на рекомендованные 1-2-3-4. Я перешел на 4 добавки т.к. я заметил, что 5-ая и 6-ая добавки вообще НИКОГДА не работают. И тут на рынке начались безоткатные тренды. Я стал сливать по 6000 и более рублей за сессию. Через 2 торговых дня я перестроился на 1-1-2-2. Слив уменьшился примерно до 3000 за сессию. Через 2 сессии я перестроился на 1-1-1-1. Слив продолжился по 3000 за сессию. Я выключил робота.
ВЫВОДЫ.
— Робот «Sigma» – полный отстой.
— Он дает профит исключительно на идеальном флэте и только при настройках 1-1-1-1. При малейшем тренде он сливает при любых настройках.
— Половина сделок являются убыточными при самых идеальных для робота условиях рынка, прибыль оставшейся прибыльной половины сделок лишь на 1000 рублей в день превышает убыток. Теоретически: у «Sigma» в месяце примерно 16 торговых дней. Максимальный доход 16.000. Минус налог 13%. Минус аренда VDN. Минус комиссия за ввод и вывод средств. Минус окупаемость самого робота. Что остается? Правильно. Дай Бог, половина.
Но даже если представить, что я зарабатываю на торговом роботе 16 000 рублей в месяц, то это заработком назвать нельзя. Моя мама получает пенсию 20 000 в месяц. Мне даже стыдно говорить, что мой доход от алготрейдинга меньше, чем пенсия моей 80-ти летней мамы, при том, что мой депозит составлял в первый день торговли 220 000 рублей.
Пару слов о других инструментах – фьючерсах SR и GZ. На них профит в лучшие дни приносил по 50-100 рублей в день. Так что через 8 сессий я их вообще не включал – что смеяться то?
И еще пару слов о личности автора «Sigma». Так как я впервые работал с терминалом QUIK, я попросил распаковать и настроить мне роботов на QUIK на VDN. За каждую консультацию я перечислял ему на карту Сбербанка по 1000 р. Денис с наслаждением тянул время. Потом ему показалось этого мало, и он потребовал с меня 5.000 рублей за завершение работ – я заплатил т.к. очень боялся ошибиться в настройках и установке. В сумме я заплатил ему за помощь около 10.000 р, хотя техподдержка у него заявлена бесплатная.
*персональные данные удалены из поста*
Описание и тестирование в программе Wealth-Lab первых двух роботов я уже приводил. Вот соответствующие ссылки:
Тестирование рабочей свечной модели на исторических данных
Тестирование модели CandleMax в программе Wealth-Lab
Индикатор PVV (price/volume/volatility)
Тестирование робота PVVI в программе Wealth-Lab
Сейчас настало время дать краткое описание и привести тестирование в программе Wealth-Lab третьей торговой системы, которая у меня сейчас в работе.
Торговая система AVP (average volume/price) не является свечной моделью, как CandleMax, и не основана на красивой математической формуле, как система PVVI. Из трех моих спекулятивных роботов, робот AVP выдает сигналы реже всех. Тем не менее, результативность этого робота практически совпадает с результативностью робота PVVI, лишь совсем немного ей уступая.
Торговая система PVVI основана на индикаторе PVV (price/volume/volatility). Данный индикатор связывает в единую формулу цену, объем и волатильность. Краткое и очень эмоциональное описание истории появления этой формулы я привел в своей предыдущей статье:
Индикатор PVV (price/volume/volatility)
Т.к. по образованию я математик, а по профессии программист, то первым делом сразу же после формализации торговой системы PVVI я закодировал одноименного робота, который и служит мне верой и правдой уже более 3 лет.
В этой статье приведены результаты тестирования робота PVVI в программе Wealth-Lab.
Разумеется, я не раскрою секрет полученной формулы, но краткое описание основных особенностей этой торговой системы, разумеется, приведу. Итак, вот основные характеристики робота PVVI:
Settings= { Name = "Zigzag5", -- название индикатора delta=2, -- параметр индикатора deltaY=1, -- параметр индикатора linedeltaY=0.75, -- параметр индикатора line= { { Name = "zigzagline3", Type =TYPE_LINE, Width = 2, Color = RGB(0,255, 0) }, { Name = "upline", Type =TYPE_LINE, Width = 2, Color = RGB(255,0, 0) }, { Name = "lowline", Type =TYPE_LINE, Width = 2, Color = RGB(0,0, 255) }, { Name = "declineline", Type =TYPE_LINE, Width = 2, Color = RGB(255,0, 0) }, { Name = "upline2", Type =TYPE_LINE, Width = 1, Color = RGB(255,0, 0) }, { Name = "lowline2", Type =TYPE_LINE, Width = 1, Color = RGB(0,0, 255) }, { Name = "declineline2", Type =TYPE_LINE, Width = 1, Color = RGB(255,0, 0) } } } function getradius(x, y) return math.sqrt(Settings.deltaY*y*y+x*x) end function koef(val) return 1 - 1/(1-1/val) end function Init() vMin = 0 vMax = 0 vMinindex = 0 vMaxindex = 0 voldMinindex = 0 voldMaxindex = 0 upval = 0 lowval = 0 upindex = 1 lowindex = 1 veu = nil vel = nil curfrom = 1 curto = 1 return 7 end function OnCalculate(index) local printz = 0 vsize = Size() ve = nil veu = nil vel = nil curv = nil veu2 = nil vel2 = nil curv2 = nil if index == 1 then vMin = C(index) vMax = C(index) vMinindex = index vMaxindex = index voldMinindex = index voldMaxindex = index ve = C(index) else if voldMaxindex >= voldMinindex then if C(index) > (1 + Settings.delta/100)*vMin then vMin = C(index) vMax = C(index) vMaxindex = index voldMinindex = vMinindex vFrom = voldMaxindex vTo = vMinindex printz = 1 if (C(vMinindex) > C(vsize)) and (upval > koef(getradius(vsize - vMinindex, C(vMinindex) - C(vsize)))) then upval = koef(getradius(vsize - vMinindex, C(vMinindex) - C(vsize))) upindex = vMinindex end if (C(vMinindex) < C(vsize)) and (lowval > koef(getradius(vsize - vMinindex, C(vMinindex) - C(vsize)))) then lowval = koef(getradius(vsize - vMinindex, C(vMinindex) - C(vsize))) lowindex = vMinindex end curfrom = voldMaxindex curto = voldMinindex else if vMin > C(index) then vMin = C(index) vMinindex = index vFrom = voldMaxindex vTo = index printz = 0 curto = index else vFrom = vMinindex vTo = index printz = 0 end curfrom = voldMaxindex end else if voldMaxindex <= voldMinindex then if C(index) < (1 - Settings.delta/100)*vMax then vMax = C(index) vMin = C(index) vMinindex = index voldMaxindex = vMaxindex vFrom = voldMinindex vTo = vMaxindex printz = 1 if (C(vMaxindex) > C(vsize)) and (upval > koef(getradius(vsize - vMaxindex, C(vMaxindex) - C(vsize)))) then upval = koef(getradius(vsize - vMaxindex, C(vMaxindex) - C(vsize))) upindex = vMaxindex end if (C(vMaxindex) < C(vsize)) and (lowval > koef(getradius(vsize - vMaxindex, C(vMaxindex) - C(vsize)))) then lowval = koef(getradius(vsize - vMaxindex, C(vMaxindex) - C(vsize))) lowindex = vMaxindex end curfrom = voldMinindex curto = voldMaxindex else if vMax < C(index) then vMax = C(index) vMaxindex = index vFrom = voldMinindex vTo = index printz = 0 curto = index else vFrom = vMaxindex vTo = index printz = 0 end curfrom = voldMinindex end end end if (printz == 1) or (Size() == index) then for i = vFrom, vTo do k = (C(vTo)- C(vFrom))/(vTo- vFrom) v = i*k + C(vTo) - vTo*k SetValue(i, 1, v) ve = v end if (Size() == index) then ve = C(index) if voldMaxindex >= voldMinindex then vFrom = voldMaxindex vTo = vMinindex end if voldMaxindex <= voldMinindex then vFrom = voldMinindex vTo = vMaxindex end for i = vFrom, vTo do k = (C(vTo)- C(vFrom))/(vTo- vFrom) v = i*k + C(vTo) - vTo*k SetValue(i, 1, v) end -- up level line if upindex ~= nil then if C(upindex) > C(index) then for i = upindex, index do SetValue(i, 2, C(upindex)) SetValue(i, 5, C(upindex)-Settings.linedeltaY*C(vsize)/100) end veu = C(upindex) end end -- low level line if lowindex ~= nil then if C(lowindex) < C(index) then for i = lowindex, index do SetValue(i, 3, C(lowindex)) SetValue(i, 6, C(lowindex)+Settings.linedeltaY*C(vsize)/100) end vel = C(lowindex) end end if voldMaxindex >= voldMinindex then vsign = -1 if curfrom == voldMinindex then vsign = -1 end if curfrom == voldMaxindex then vsign = 1 end -- inclined line if curto- curfrom > 0 then maxcurv = 0 k = (C(curto)- C(curfrom))/(curto- curfrom) for i = curfrom, curto do curv = i*k + C(curto) - curto*k if vsign == -1 then if L(i) < curv then if maxcurv < curv - L(i) then maxcurv = curv - L(i) end end else if H(i) > curv then if maxcurv < H(i) - curv then maxcurv = H(i) - curv end end end end for i = curfrom, index do curv = i*k + C(curto) - curto*k + vsign*maxcurv SetValue(i, 4,curv) curv2 = curv+ vsign*Settings.linedeltaY*C(vsize)/100 SetValue(i, 7,curv2) end end curv = nil end if voldMaxindex <= voldMinindex then vsign = -1 if curfrom == voldMaxindex then vsign = 1 end if curfrom == voldMinindex then vsign = -1 end -- inclined line if curto- curfrom > 0 then maxcurv = 0 k = (C(curto)- C(curfrom))/(curto- curfrom) for i = curfrom, curto do curv = i*k + C(curto) - curto*k if vsign == -1 then if L(i) < curv then if maxcurv < curv - L(i) then maxcurv = curv - L(i) end end else if H(i) > curv then if maxcurv < H(i) - curv then maxcurv = H(i) - curv end end end end for i = curfrom, index do k = (C(curto)- C(curfrom))/(curto- curfrom) curv = i*k + C(curto) - curto*k + vsign*maxcurv SetValue(i, 4,curv) curv2 = curv+ vsign*Settings.linedeltaY*C(vsize)/100 SetValue(i, 7,curv2) end end curv = nil end end end end return ve, veu, vel, curv, veu2, vel2, curv2 end
DTI Algorithmic — финансовый советник на платформе Interactive Brokers (IB). За 10 лет на рынке мы успели поработать со многими российскими и иностранными брокерами, и в 2013 г. осознанно сделали выбор в пользу IB.
#справка Interactive Brokers LLC — американский онлайн—брокер. Материнская компания IB работает с 1978 года, ее номер в Комиссии по ценным бумагам и биржам США (SEC) — 0001381197. Данные о компании: