Рассмотрим вот такой инструмент:
Видно, что за несколько месяцев акция очень существенно выросла. Значит, это волатильная и достаточно трендовая вещь. Поэтому логично ее торговать при помощи трендовой системы. Нетрудно построить простейшую трендовуху. По классике будем входить на пересечении скользящих средних, а выходить по трейлинг-стопу--вариации люстры Чака Лебо. Путем небольшой оптимизации легко получить следующую систему:
//////////////////////////////////////////////////////////////////////
if MarketPosition=0 and average(close,3)>average(close,30) then buy next bar 1 share at open;
if MarketPosition=1 then sell next bar 1 share at Highest(high,barssinceentry)*0.92 stop;
////////////////////////////////////////////////////////////////////////////////
Эквити и параметры:
Это типичные для трендовух параметры--меньше половины прибыльных сделок (42.2%), но большое (3.15) отношение средней прибыльной к средней убыточной. Как обычно, система отдает понемногу во флэте, но отлично берет трендовые движения. Теперь можно сделать следующее:
1) Отшлифовать входы--возможно, простая средняя не вполне улавливает особенности инструмента, может быть, нужна экспоненциальная средняя.
2) Отработать выходы. Например, попробовать в качестве выхода параболик, так как видно, что акция иногда резко ускоряется, а параболик хорошо заточен под получение максимально возможной прибыли в этом случае.
В общем, надо поработать.
Все, на этом прикол заканчивается. Теперь внимание, правильный ответ. Этот инструмент--искусственный. Он получен при помощи генератора случайных чисел следующим кодом:
////////////////////////////////////////////////////
var: s(10),x(0);
x=2*Random(1)-1;
if s[1]-s[2]<-0.9 then x=x+0.8;
if s[1]-s[2]>0.9 then x=x-0.8;
s=s[1]+x;
print(File(«D:\1.txt»), NumtoStr(20000000-1000000+date,0)+","+Numtostr(time,0)+","+Numtostr(s,2)+","+Numtostr(s,2)+","+Numtostr(s,2)+","+Numtostr(s,2));
//////////////////////////////////////////////////////
Если бы не было блока
if s[1]-s[2]<-0.9 then x=x+0.8;
if s[1]-s[2]>0.9 then x=x-0.8;
то это было бы просто броуновское движение, на котором заработать нельзя. Поэтому все средние, люстры, итд итп являются просто подгоночным бредом, не имеющим никакого отношения к делу. За счет же этого блока процесс является контртрендовым, поэтому правильная, осознанная, основанная на нормальном понимании процесса стратегия такова--покупай, если упало больше, чем на 0.9 и продавай, если выросло больше, чем на 0.9. Код:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if marketposition=0 and close-close[1]<-0.9 then buy this bar 1 share at close;
if barssinceentry=1 then sell this bar 1 share at close;
if marketposition=0 and close-close[1]>0.9 then sell short this bar 1 share at close;
if barssinceentry=1 then buy to cover this bar 1 share at close;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Эквити и параметры:
Обратим внимание на среднюю сделку--она равна 0.8, как и должно быть из формулы генерации процесса.
На реальном рынке ситуация во многом похожа. Существует значительное число людей, бродящих в потемках со средними и боллинджерами. Они не понимают, что делают, химича со всякой дурью. Поскольку рынок--это не броуновское движение, то иногда некоторым удается чисто случайно найти что-то рабочее, которое торгуется и в будущем. Но не имея понимания, торгуется некая производная. Что такое торговать производную? Это, на примере нашего инструмента, следующий код, который взялся из блуждания в темноте:
//////////////////////////////////////////////
if marketposition=0 and average(close,3)<average(close,30) then buy this bar 1 share at close;
if barssinceentry=7 then sell this bar 1 share at close;
///////////////////////////////////////////////////
Эквити:
Вроде, работает, и будет и в будущем работать на радость изобретателю (в отличие от трендилки из начала поста, которая есть просто переподгонка). Но это лишь жалкое подобие того, что должно быть. А поскольку на реальном рынке к таким сильнейшим неэффективностям, как в этом примере, не подступишься, то в реале работать будет еще хуже.
Какие выводы?
1) В реале никакой формулы типа
////////////////////////////////
var: s(10),x(0);
x=2*Random(1)-1;
if s[1]-s[2]<-0.9 then x=x+0.8;
if s[1]-s[2]>0.9 then x=x-0.8;
s=s[1]+x;
////////////////////////////////
не существует. Поэтому реально ситуация значительно сложней этого примера. В реале все, что у нас есть, это лишь история.
2) Однако, неэффективности существуют и имеют вполне конкретную природу. В значительном числе случаев можно довести понимание природы неэффективности практически до формульного уровня. Но для этого нужны труд и время.
3) Основное в системостроении--это именно понимание, а не жонглирование параболиками. А математика, тестирование, статистика--это лишь инструменты для приобретения понимания.
Файл котировок инструмента:
http://www.fayloobmennik.net/3839838
а ещё интересно было бы почитать про анализ реальной ленты сделок (нашего всего — фртс), например, на трендовость или антитрендовость (а то у самого всё руки никак не дойдут ))))
Если значение волы прикрутить к работе тренд/флет?
как будет?)
или не?)
2 мало сделок для осмысленной статистики… надо взять стату по 10000 сделкам…
3 и блин доча кричит мультики включай…
1) ГСЧ, думаю, не особо. Вот здесь это обсуждали в применении к ГСЧ экселя: utkin.2stocks.ru/?p=113 в комментах.
2) Про 10000 сделок мы уже с вами говорили :)
3) Не понял
А параболик в омеге, кстати, косячно выполняется, и его использовать там нельзя.
Средние я использую в своих системах--почему нет? Это неплохой инструмент. Боллинджер, думаю, тоже в правильных местах будет нормально работать, хотя не пробовал--просто не люблю на рынке применять вещи, связанные с нормальным распределением (это чисто мое, стиль у меня такой).
Куда делся Карапуз?
1) слился. И решил уйти с фонды навсегда
2)устроился на хорошую работу, где не приветствуются публичные люди, как он.
Посмотрел Ваш профиль — 19 лет на рынке, это ж Вы с 14-ти лет в теме!
Потом почитал Ваш блог: «То есть, вот за плечами много лет трейдинга, ну с 92 года меня ставили у банка скупать валюту уже…» Тогда, по-моему, ещё статья была за валюту? Круто Вы начинали :-)
2) На тренде без понимания процесса заработать нельзя. Собственно, статья про это. На графике инструмента тренды есть, но принципиально невозможно построить зарабатывающий на них алгоритм--ибо лежащий в основе графика процесс ни в каких ситуациях не обладает трендовостью.
Во всех своих рассуждениях я оперирую таймфреймом не ниже дневок.
Имхо, для торговли пробоев надо:
а) Прикинуть, торговать ли их вообще. Есть искусственно сжатые инструменты, например, доллар-рубль раньше торговался в жестком коридоре. Какие тут пробои? ЦБ задавит любую истерику.
б) Понять, что служит причинами взрывной неустойчивости. Точнее даже не понять, а придумать модель, а потом пытаться ее опровергнуть. Плохие модели опровергаются легко, хорошие опровергаются сложно. В идеале в итоге будет модель, которая не опровергается вообще, то есть правильная модель. В реале все не так радужно, но хорошую модель найти можно. Хорошая--это значит, что маловероятно (но возможно!), что она неправильная.
в) Исходя из б) найти ситуации и рынки, наиболее склонные к образованию такой неустойчивости. Скажем, корнер типа PZLT мая 2008 года вряд ли будет возможен на Si. Такой же корнер вряд ли будет на теперешнем PZLT, который исключен из шорт-листа. Это простейшие вещи, есть и более глубокие. Вот так, потихонечку, и рождаются системы.
1) Я пишу то, как торгую я. Этот пост, хотя он и чисто математический--это часть моего видения модели рынка.
2) Я знаю, существует некоторое число не особо успешных людей, тупо торгующих графики, индикаторы итд.
3) Из успешных (а их я знаю единицы) никто тупо ничего не делает. Условно, есть два типа успешных (названия условны):
а) Майнеры. Роют рынок, находят устойчивые правила. Примеры--JC, Механизатор, некоторые другие.
б) Физики. Пытаются вникнуть в суть дела, если это получается--то устойчивый алгоритм рисуется сам собой.
В действительности, все известные мне успешные--это смесь а) и б), пропорции разные только.
1) Вначале индукция--по реализации процесса пытаемся его объяснить. Строим модели. Причем объяснять весь рынок не надо, достаточно объяснить какие-то отдельные ситуации. Пытаемся модель опровергнуть. Плохие опровергаются сразу, хорошие остаются.
2) Затем, уже имея модель в голове--дедукция. Это как выигрывающий код в этой статье--тупо пишем правила, которые для хороших моделей оказываются очень неплохие (конечно, не такие граали, как в примере этой статьи, но все же...).
Причем 1) и 2) зачастую идут параллельно. Модель придумал, если грааля она не дает--плохая модель, роем дальше.
Мысль понятная всем — входите против рынка, фиксирутесь по профиту (или не фиксируйтесь) и огранивайте позицию во времени. Все! Всем медаль и грааль :)
А нынче вот майнингом совершенно не стесняюсь заниматься. Чтобы не закиснуть, майнингую попеременно. То модели (идеи), то тупо рынки в рамках модели.
А вообще системостроительство--это искусство. Некоторые вещи чистой силой ума получаются. Например, эта: anatoly-utkin.livejournal.com/17248.html. Иногда это полумайнинг--вначале находишь что-нибудь мутное, затем начинаешь вычленять эдж--и на тебе, все ж просто. Пример--вот эта: anatoly-utkin.livejournal.com/19625.html. Иногда--вообще не пойми что. К примеру, вот это smart-lab.ru/blog/142195.php я написал просто как ответ JC, который начал говорить какую-то муть про парный трейдинг. Дальше, по сути чисто случайно, я кое-что сделал--и увидел совсем неожиданный результат. Имея понимание того, кто вообще есть на рынке и что он делает, я этот результат быстро объяснил--и вуаля, система готова. И что приятно, она вполне торгуемая оказалась.
Но чистой силой ума получать результат приятней всего. Это кайф--думаешь, что да как, пишешь код--и он с первого раза оказывается рабочим. Чистое здоровье!