Избранное трейдера Андрей

по

Сложности в алгоритмизации боковика

Приветствую!


В предыдущей статье писал, о целях поиска локального боковика с помощью алгоритма. Расскажу с какими сложностями при этом приходится сталкиваться.

1 Что есть боковик? почему в одном случае мы считаем что это боковик, а в другом похожем случае это не является боковиком?
2 Размер боковика! Локальный боковик может быть как 0.1% от цены так и несколько процентов от цены. 
Так же можно описать множество пунктов, но они все смежные будут с выделенными двумя пунктами. 

Как определить, что рынок возле той или иной цены остановится и пойдет обратно? только не постфактум, а именно онлайн. Да, мы рисуем уровни руками, или же смотрим на объемы и тд, но изначально никто не знает где и почему цена остановилась. Мы всегда наблюдаем уже постфактум, либо это синусоида цены, либо  накопление объемов на уровне и тд. А значит мы с определением боковика всегда будем опаздывать от реального рынка. 
Второй же пункт, это границы бокового движения. Пример сбера, последние две три недели он гулял в большом диапазоне от 20300 до 21000 грубо говоря, но при этом были и локальные уровни остановки цены в пределах 100-200р канала. В таком ракурсе получается, что при движении от нижнего канала к верхнему с учетом остановок, можно получать 300-400р с движения если отталкиваться от того, что цена вышла из маленького боковика и движется к большому. 
Именно эти сложности приходится преодолевать при алгоритмизации. Ведь алгоритм должен сам определить боковое это движение или вялотекущее направленное. 
Пока что не придумал ничего толкового. Есть идея, которую наполовину реализовал
1 проверяю выше закрытие предыдущего или нет, и строю верхний канал по большему значению
2 аналогично для нижнего канала, проверяю ниже мы предыдущего закрытия или нет. 
3 слежу за ситуациями при которых верхнее значение канала как и нижнее значение не менялось более 60минут (это уже параметр, можно и без него конечно, через счетчик получив просто силу канала, например что мы 5 часов не вышли за границы, или же например сколько раз «кололи» канал но вернулись в его границы и тд)
4 канал считается не действительным при резком закреплении цены выше его границ, допустим большой минутной свечой закрылись выше/ниже границ
5 границы канала должны меняться после направленного движения и новой остановки
6 размах от верхнего к нижнему значению, не должен превышать Х% от цены 

Какие минусы
1 Процент размаха дает возможность смотреть маленький ли канал в данный момент или большой, но это является параметром, а значит может привести к «лудоманству». Каких либо других возможностей поиска локального боковика пока что, не видится возможным, потому остановился на этом
2 Я всегда опаздываю за ценой. Если действовать сразу и брать с первых же баров определение боковика, то будет очень большое количество ложных определений, и соответственно, множество не правильных входов
3 Любые остановы движения цены, ломают логику и идет поиск очередного боковика, обычно это преждевременно получается. 
4 Ложное расширение боковика, которое можно определить только постфактумом и нужно перерисовывать границы. 
Ниже примеры в картинках
 Сложности в алгоритмизации боковика
Ложный выход из боковика



( Читать дальше )

+100% первый год алготрейдинга. Одурачен ли я случайностью?

Всех приветствую!

Первый год публичной алго торговли закончился с результатом +100%.
Первый пост о моем пути к алготрейдингу тут
В этом посте подробно разберу результаты за прошлый год, а также попытаюсь ответить на вопрос – одурачен ли я случайностью?
На рисунке изменение депозита и фьючерса долл./руб.
+100% первый год алготрейдинга. Одурачен ли я случайностью?
Все системы торговали на фьючерсе долл./руб. Примерно 75% систем работают на волатильности, остальные пытаются поймать тренд. В начале года затишье, которое к концу марта привело к просадке в 30%. Ну а дальше роботы оседлали взрыв рынка. 8 августа вывел 10% от первоначального депо, в этот же период был удержан НДФЛ на всю сумму накопившегося дохода.

Красным цветом выделил зоны, где алгоритмы не смогли заработать на волатильности. То есть движения были, но они были «плохими». В эти периоды дневные свечи имели большие тени как с верху, так и снизу. Поэтому, не смотря на хорошую волатильность их возило по стопам. Зеленые зоны – экстремально низкая волатильность и сильные просадки.



( Читать дальше )

Первый пост. Можно ли заработать миллиард?

    • 20 марта 2019, 10:54
    • |
    • Vensus
  • Еще
Доброе утро, смартлаб.
Уже довольно долгое время я читаю посты на данном ресурсе, и вот решил наконец-то написать свой.

Постараюсь довольно кратко описать суть своей идеи и почему я к этому пришел.

Наверное каждый житель страны (и не только нашей) хотел бы стать миллионером, и уж тем более миллиардером, но возможно ли это на самом деле? Я считаю, что сложно, но возможно. Я не максималист, и не смотрю на мир через призму розовых очков. В этом посте не будет способа «Зарабатывать по 20 т.р. в час», «Беспроигрышная стратегия на рынке FOREX» и «Курс успешного трейдера за N тысяч рублей» и тому подобного. Я лишь опишу идею, подход и макроэкономическое восприятие проблемы.

Еще в школе я понял, что вряд ли стану успешным бизнесменом, т.к. не обладаю соответствующими качествами (именно для ведения бизнеса, да и идеи «на миллиард» у меня тоже нет). Соответственно нужно найти иной способ, чтобы стать состоятельным, без создания и ведения бизнеса

( Читать дальше )

Последовательные сигналы | Полезные мелочи

   С 4 по 15 марта прошел «Полигон для новичка» №15. Победителем в нем стала ТС «Орленок» с результатом +9.47%.
   В данном видео на примере ТС «Орленок» я рассказываю о том, как можно в алгоритме ТС последовательно использовать разные сигналы для открытия позиции.
   Что такое «Полезные мелочи» можно посмотреть здесь https://smart-lab.ru/blog/473161.php


для тех кто хочет много бабок зарабатывать

публикую индикатор собственной разработки под quik, написанный на lua
если его значение больше 0,5 то выставляете заявку на покупку с тек профитом >= стоплоссу
гарантированно будете зарабатывать
подключить его можно так:
в папке quik создаете папку LuaIndicators туда кидаете текстовый файл с раcширением .lua
и содержанием приведенного индикатора, потом запускаете quik и добавляете как обычный индикатор к графику
название его в списке будет STATDIV (статистическое отклонение)
на рисунке отобразил его работу с периодом 25 и 50
его суть в том чтоб показать куда отклонено статистическое распределение вероятностей, вверх или вниз за определенный период
проще говоря, куда вероятнее пойдет рынок вниз или вверх
если значение индикатора выше 0,5 то разрешено лонговать, если ниже то разрешено шортить
рекомендации по подбору периода: период для этого индикатора выбираете как период между двумя
последними локальными вершинами
позже могу математически привести целесообразность его использования

( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

Вторая система Татарина30.

Еще более знакома мне система которая у Татарина30 называется "Лидеры роста от 4,5%". Эту систему я нашел где то лет 8 назад, тестируя данные с 2006 года. У меня она выглядит несколько иначе, но логика та же. 
Давайте попробуем потестить некоторые моменты и утверждения.
Формализуем ее так:
1. Вход по клозу в 18.40 
2. Закрытие в 10.30.
3. Тест на фишках с обьемом от 300 лямов в день.
4. Все остальное как описано в системе
Утверждается что лучше когда закрытие сессии произошло на максимумах дня, даже указывается длина тени: 0,3%. Если больше то типа не надо.
В формализации которой я привел с точностью до наоборот, чем ближе закрытие дня к экстремумам, тем… хуже:

/> /> /> />
Названия строк Колич    Profit %    ±
>0.3 359 0,95 0,61
<0,3


( Читать дальше )

Тестирование системы Татарина30.

Попались на глаза системы приписываемые Татарину30. Незнаю насколько это соответствует действительности, но по стилю изложения и грамматическим ошибкам, да, похоже Татарин приложил там руку и голову и все остальное к этому тексту.
Подход озвученный Татарином30 близок мне, я также предпочитаю строгую формализацию и тесты на историю и также юзаю WL. Из 11 систем озвученных здесь 2 мне показались так сказать «до боли знакомыми».
При этом я работаю на гораздо больших таймфреймов, и оптимизирую я средний профит на сделку, а не процент выигрышных сделок. И плечо 1:5 для меня невозможен. И нет стопов, вообще. Однако некоторые зависимости мы юзаем одинаковые, только то что у Татарина30 называется "Лидеры роста от 4,5%", у меня называется «Таймс», а "Фьючерсы" у меня проходят по ником «Фальстарт».


В чем прелесть системы «Фьючерсы»-она легко формализуется, за одним «но»-стопов. Это надо тестировать на тиках чтобы корректно оценить что первым сработает тейкпрофит или стоплосс, ведь разница между ними всего 0,7%. Однако если система работающая, то она должна показывать профит и без этих тонких настроек. 

( Читать дальше )

Когда на рынке тухло - хочется экспериментировать. Профиль рынка/кластерный анализ/объемный анализ

Приветствую! 

В частном примере тухлость рынка имею ввиду последние недели две на фьюче сбера. 

Так вот, пока изучаю C# и мозг сильно плавится от кода. Мысль о наставнике, который бы давал ответы на примитивные вопросы, уже не кажется для меня пугающей. Понимаю, что с одной стороны ничего вроде бы сложного нет, но не зная простых законов, можно очень долго блуждать в неведении. Но, при этом есть желание разобраться самому, в общем сложная философская дилема.  
Отвлекаюсь от процесса изучения C#?  попыткой создать алгоритм по «вертикальному об]ему». Везде это по разному называется, я привык называть кластером, в ТСЛаб это называют торговая статистика, на просторах интернета же, все по разному. Чтобы все понимали про что речь вот картинка. 
Когда на рынке тухло - хочется экспериментировать. Профиль рынка/кластерный анализ/объемный анализ

Картинка с ртс, но она была под рукой просто))
Так вот, как и все в трейдинге, про подобный анализ часто записывая видео, люди рассказывают о постфактумах. Типа вот здесь был крупный обьем потому мы пошли вниз или вверх. Вот здесь сильный уровень проторговки видим, потому стоило шортить (а этот уровень сильным стал намного позже на самом деле, так как его не раз еще после этого «проторговали»)



( Читать дальше )

скрипт для quik

скрипт для отслеживания бумаг по системе BWS:

--Массив с Тикерами, добавьте нужные тикеры
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;
как выглядит в квике:

( Читать дальше )
  • обсудить на форуме:
  • QUIK

....все тэги
UPDONW
Новый дизайн