Два года в Finderby от United Traders. Что имеем?

Часть 1. Теория

А имеем вот что:)

И это не считая 3-5 челленджей, которые я, вначале пути, не сохранял и не анализировал, два полученных счета - один слит, другой недавно получен (под это дело и решил начепятать эту статью). Считайте и думайте сами во что вам может вылиться занятие трейдингом на начальном этапе. Все челленджи стандартные NYSE по 60$. Берем по максимуму: 23*60=1380 или около 83000 рублей (при средней цене бакса равной 60). Впринципе это 1 маленькое депо для начала торговли на Московской бирже, либо минимальное депо для пробы себя на Америке при торговле через СНГшные пропы. А сколько я читаю тем и статей про один, два и более слитых депозитов. Из этого делаю вывод, что я отделался малой кровью. Хотя дистанция все расставит на свои места:) 

Анализируя свои неудачи я понял, что основной причиной сливов было отсутствие системы и нарушение рисков. Особенно это было видно в самом начале, когда я бегал от одной системы к другой, перепробовав кучу индикаторов, паттернов и уже готовых систем. В результате всего этого симбиоза получилась моя система.

Часто смотрю сделки и результаты прошлых челленджей и на лице всегда появляется улыбка. Столько простых и порой банальных ошибок. И сейчас они тоже бывают, но уже не в таком количестве.

Были околонулевые результаты:

Первый полученный счет:

Второй полученный счет: 

Бывало и такое, когда все решали считанные центы. 

Например вот: отчетная акция MXIM.

В тот роковой день я переторговал и хотел срочно отбить все и сразу. Поэтому и нашел бумагу с линейкой в 50 центов, чего обычно я не делаю. И ведь видел полупустой стакан и понимал, что проскальзывания точно было не избежать. И даже поставил стоп с запасом. Но это не спасло и результат был -51.50$ за день, превысив дневной лимит потерь на 1.5$.

 А бывал и такой треш:

Как можете заметить в обоих победных челленджах основную прибыль дал "один хороший трейд". И это меня научило не сдаваться даже когда на начало третей недели торгов у меня нет и 200$. Все может случиться и в последний день турнира, когда вы прокатитесь на супер тренде и сделайте нужную сумму.

Вот как было в первом челлендже. Первая сделка:

Торговля отчетной акции TRIP-отбой от фигуры и всплеск объема дали сигнал на вход. Закрыл в обед, так как рынок начал падать. На данный момент в кармане 160$+дневной лимит в 50$. И тут я обратил свое внимание на UVXY.

Закрепление выше фигуры, слабость рынка и хорошая денежная подушка послужила сигналом на вход. Первый заход маркетом на откате выше фигуры, второй также на откате и третий стоповым ордером в пробой. Один хороший трейд. Итог - выгранный турнир. Далее следовало аккуратно набрать нужные 10 плюсовых дней, что и было сделано.

Во втором была такая ситуация (скрин из авроры не сохранил, только из ТОСа):

AAPL. Gap Up (стрелка на дневном)+Сильный рынок. Зашел лимитником на откате(указал стрелкой на минутке). Ожидал мощного трендового дня и понимал, что это мой шанс сделать один хороший трейд. Поставил стоп в 40 центов и отошел от терминала, чтобы не гипнотезировать цену. Моя любимая ситуация GAP AND GO:) 

Что еще понял для себя:
-всегда нужно стараться развивать сделку,т.е добавляться, но при этом заходить так словно это новая позиция, чтобы не убить прибыль от первой.
-никогда не торгуй маленькими позами по 50 акций и упаси господи если по 25. Этой фигней я страдал в самом начале, думая, что если я буду торговать акции с ценой по 150-200 долларов и АТР-ом 2-4 (FB, NVDA, NFLX, BABA и тд) все будет в ажуре. Ага. Как бы не так...Теперь стараюсь брать акции от 25 до 100, чтобы минимум заходить по 2 лота (200 акций-как раз для BP в 20000$). Куда лучше купить GM (цена около 37 долларов) на 4 лота и взять свои 20 центов со стопом до 10 центов, что даст нам 80$ прибыли за день(возможный убыток 40 долларов). И это притом, что мы выйдем по цели лимитником. А ведь можно выходить частями, трейлить стоп. При хорошем трендовом дне это может превратиться в "один хороший трейд" . Чем ждать трейд, зайдя одним лотом и высиживая 60-80 центов движения. Да и так можно, но мне ближе получать более частую прибыль-уж такова моя психология.
-пробовать надо все: индикаторы, стили торговли, паттерны, разный манименеджмент, риски. Если вам говорят, что индикаторы не работают, то лучше согласитесь, они и правда не работают в классическом их понимании, но просмотрев 100, 1000 и 10000 ситуаций вы будете видеть разные паттерны в которых именно эти индикаторы и будут вам давать нужное преимущество.

 

Часть 2. Практика

 

Коротко по системе: в основном торговля пробоев. Делаю упор на лонг позициях (не знаю почему так, скорее всего тут большое влияние имеет мой склад ума). Когда на рынке "красные дни" больше смотрю на ETF-ы (также всем рекомендую хоть чуток ознакомиться с ними и взять себе на вооружение)-в моем случае это UVXY и VXX и также торгую от лонга. Инфу брал здесь http://pennystock.ru/posts?search=UVXy
Также торгую отбои от границ Боллинджера(кстати его нет в Авроре-хотелось бы его увидеть в дальнейшем, ведь это совсем стандартный индикатор и с ним не должно возникнуть никаких проблем при добавлении как это например было с VWAP) на пятиминутке, при этом используя индикатор пробоя. Конечно же смотрю рынок, дневку акции и стараюсь брать по тренду, хотя бывает, что могу взять и против. Тут все зависит от конкретной ситуации. Поэтому тут нет смысла все рассказывать досконально. Практика, практика и еще раз практика.

Выкладываю на всеобщее обозрение все чем пользуюсь на данный момент и что мне помогло пройти турниры. Может и другим поможет.
Платформа Thinkorswim. Все индикаторы и фильтры (кроме ATR и Vol%) были сделаны под заказ у программиста. Для вас, братушки, ничего не жалко.

Так выглядит рабочий стол в ТОСе (В Авроре смотрите скрины выше):

Цифрами обозначены фильтры: 1-тикер, 2-последняя цена, 3-изменение за день, 4-объем.

5-Объем в процентах относительно вчерашнего дня. Сортирую все тикеры по нему и получаю сверху самые горячие стаки.

plot vol = (volume/volume[1])*100 ;

6-ATR

input price = FundamentalType.close;
input agg = AggregationPeriod.DAY;
input length = 65;
plot SMA = round((Average(high(period = agg)[0], length )-Average(low(period = agg)[0], length )),2);
SMA.SetDefaultColor(GetColor(1));

7-Фильтр Боллинджер. Показывает, когда свеча касается верхней границы Боллинджера и при этом она закрывается красной. Сигнал по закрытию свечи. В вотчлисте появляется надпись DN подсвеченная красным-сигнал шорт. Когда свеча касается нижней границы Боллинджера и при этом она закрывается зеленой. Сигнал по закрытию свечи. В вотчлисте появляется надпись UP подсвеченная зеленым-сигнал лонг.

input price = close;
input displace = 0;
input length = 20;
input Num_Dev_Dn = -2.0;
input Num_Dev_up = 2.0;
input averageType = AverageType.SIMPLE;
def bollingerLowerBand = reference BollingerBands(price, displace, length, Num_Dev_Dn, Num_Dev_up, averageType).LowerBand;
def bollingerUpperBand = reference BollingerBands(price, displace, length, Num_Dev_Dn, Num_Dev_up, averageType).UpperBand;
def isBarUP = if close > open then 1 else 0;
def isBarDN = if close < open then 1 else 0;
def isBarHighBollinger = if high >= bollingerUpperBand then 1 else 0;
def isBarLowBollinger = if low <= bollingerLowerBand then 1 else 0;
def sDN = isBarHighBollinger and isBarDN;
def sUP = isBarLowBollinger and isBarUP;
AddLabel(yes, if sUP[1] then "UP" else if sDN[1] then "DN" else "z");
AssignBackgroundColor(if sUP[1] then Color.GREEN else if sDN[1] then Color.RED else Color.CURRENT);

Индикатор пробоя-у меня стоит параметр 15.

declare upper;
input markPeriod = 5;
def _highInPeriod = Highest( high, markPeriod );
def _lowInPeriod = Lowest( low, markPeriod );
#============================[ Marked High ]===================================
def marketHigh = if _highInPeriod > _highInPeriod[markPeriod] then _highInPeriod else _highInPeriod[markPeriod];
def _markedHigh = high == marketHigh;
rec _lastMarkedHigh = CompoundValue( 1, if IsNaN( _markedHigh ) then _lastMarkedHigh[1] else if _markedHigh then high else _lastMarkedHigh[1], high );
#=============================[ Marked Low ]===================================
def marketLow = if _lowInPeriod < _lowInPeriod[markPeriod] then _lowInPeriod else _lowInPeriod[markPeriod];
def _markedLow = low == marketLow;
rec _lastMarkedLow = CompoundValue( 1, if IsNaN( _markedLow ) then _lastMarkedLow[1] else if _markedLow then low else _lastMarkedLow[1], low );
#==================================[ Plots ]===================================
def Resistance = _lastMarkedHigh;
def Support = _lastMarkedLow;
#plot condition = if (resistance > close, 1, 0);
plot BreakAboveResistance = if high > Resistance[1] then Resistance[1] else Double.NaN;
BreakAboveResistance.SetPaintingStrategy( PaintingStrategy.POINTS );
BreakAboveResistance.AssignValueColor( Color.YELLOW );
BreakAboveResistance.SetLineWeight(5);
plot ResistanceToPlot = Resistance;
ResistanceToPlot.SetPaintingStrategy( PaintingStrategy.POINTS );
ResistanceToPlot.AssignValueColor( Color.GRAY );
ResistanceToPlot.SetLineWeight(1);
plot upperChannel = _highInPeriod;
plot lowerChannel = _lowInPeriod;
upperChannel.AssignValueColor( Color.DARK_GRAY );
lowerChannel.AssignValueColor( Color.DARK_GRAY );
plot SupportToPlot = Support;
SupportToPlot.SetPaintingStrategy( PaintingStrategy.POINTS );
SupportToPlot.AssignValueColor( Color.RED );
SupportToPlot.SetLineWeight(1);

В параметрах оставляем галочки только в подпунктах 1 и 2. У меня только в первом стоят-только для лонга. В остальных убираем.

Вот примеры за вчера для лонга:

для шорта:

Как использовать, сами разберетесь. Единственное скажу, что сейчас часто делаются ложные пробои и идет сильный откат, чтобы вытрусить лишних пассажиров. Поэтому ждите ложный, а потом заходите.

Индикатор временных зон.
Навеяно этими статьями https://utmagazine.ru/posts/10789-luchshee-vremya-dlya-torgovli-vnutri-dnya
https://ru.tradingview.com/script/Zjt3F9cC-Custom-Indicator-No-Trade-Zone-Warning-Back-Ground-Highlights/
Наглядно показывает, когда можно торговать, а когда нет. Посмотрите пример выше с акцией ESRX. Конечно же можно и без него обойтись, но мне больше нравиться с ним. Настройки совсем уж простые, поэтому описывать не буду.

#hint type: Тип отображения временных зон на графике
#hint t1s1: Время начала <b>Первого</b> периода - <b>Первой</b> временной зоны
#hint t1e1: Время окончания <b>Первого</b> периода - <b>Первой</b> временной зоны
#hint t1s2: Время начала <b>Второго</b> периода - <b>Первой</b> временной зоны
#hint t1e2: Время окончания <b>Второго</b> периода - <b>Первой</b> временной зоны
#hint t1s3: Время начала <b>Третьего</b> периода - <b>Первой</b> временной зоны
#hint t1e3: Время окончания <b>Третьего</b> периода - <b>Первой</b> временной зоны
#hint t2s1: Время начала <b>Первого</b> периода - <b>Второй</b> временной зоны
#hint t2e1: Время окончания <b>Первого</b> периода - <b>Второй</b> временной зоны
#hint t2s2: Время начала <b>Второго</b> периода - <b>Второй</b> временной зоны
#hint t2e2: Время окончания <b>Второго</b> периода - <b>Второй</b> временной зоны
#hint t2s3: Время начала <b>Третьего</b> периода - <b>Второй</b> временной зоны
#hint t2e3: Время окончания <b>Третьего</b> периода - <b>Второй</b> временной зоны
#hint t3s1: Время начала <b>Первого</b> периода - <b>Третьей</b> временной зоны
#hint t3e1: Время окончания <b>Первого</b> периода - <b>Третьей</b> временной зоны
#hint t3s2: Время начала <b>Второго</b> периода - <b>Третьей</b> временной зоны
#hint t3e2: Время окончания <b>Второго</b> периода - <b>Третьей</b> временной зоны
#hint t3s3: Время начала <b>Третьего</b> периода - <b>Третьей</b> временной зоны
#hint t3e3: Время окончания <b>Третьего</b> периода - <b>Третьей</b> временной зоны
#hint t4s1: Время начала <b>Первого</b> периода - <b>Четвертой</b> временной зоны
#hint t4e1: Время окончания <b>Первого</b> периода - <b>Четвертой</b> временной зоны
#hint t4s2: Время начала <b>Второго</b> периода - <b>Четвертой</b> временной зоны
#hint t4e2: Время окончания <b>Второго</b> периода - <b>Четвертой</b> временной зоны
#hint t4s3: Время начала <b>Третьего</b> периода - <b>Четвертой</b> временной зоны
#hint t4e3: Время окончания <b>Третьего</b> периода - <b>Четвертой</b> временной зоны
#hint t5s1: Время начала <b>Первого</b> периода - <b>Пятой</b> временной зоны
#hint t5e1: Время окончания <b>Первого</b> периода - <b>Пятой</b> временной зоны
#hint t5s2: Время начала <b>Второго</b> периода - <b>Пятой</b> временной зоны
#hint t5e2: Время окончания <b>Второго</b> периода - <b>Пятой</b> временной зоны
#hint t5s3: Время начала <b>Третьего</b> периода - <b>Пятой</b> временной зоны
#hint t5e3: Время окончания <b>Третьего</b> периода - <b>Пятой</b> временной зоны

input type = {default "Cloud", "Cloud 2", "Bars"};
input zs1 = "- Time Zone 1 -";
input t1s1 = 930;
input t1e1 = 955;
input t1s2 = 1300;
input t1e2 = 1325;
input t1s3 = 0;
input t1e3 = 0;

input zs2 = "- Time Zone 2 -";
input t2s1 = 1200;
input t2e1 = 1255;
input t2s2 = 0;
input t2e2 = 0;
input t2s3 = 0;
input t2e3 = 0;

input zs3 = "- Time Zone 3 -";
input t3s1 = 1530;
input t3e1 = 1550;
input t3s2 = 0;
input t3e2 = 0;
input t3s3 = 0;
input t3e3 = 0;

input zs4 = "- Time Zone 4 -";
input t4s1 = 1555;
input t4e1 = 1600;
input t4s2 = 0;
input t4e2 = 0;
input t4s3 = 0;
input t4e3 = 0;

input zs5 = "- Time Zone 5 -";
input t5s1 = 0;
input t5e1 = 0;
input t5s2 = 0;
input t5e2 = 0;
input t5s3 = 0;
input t5e3 = 0;

def z11 = SecondsFromTime(t1s1) >= 0 and SecondsFromTime(t1e1) <= 0;
def z12 = SecondsFromTime(t1s2) >= 0 and SecondsFromTime(t1e2) <= 0;
def z13 = SecondsFromTime(t1s3) >= 0 and SecondsFromTime(t1e3) <= 0;

def z21 = SecondsFromTime(t2s1) >= 0 and SecondsFromTime(t2e1) <= 0;
def z22 = SecondsFromTime(t2s2) >= 0 and SecondsFromTime(t2e2) <= 0;
def z23 = SecondsFromTime(t2s3) >= 0 and SecondsFromTime(t2e3) <= 0;

def z31 = SecondsFromTime(t3s1) >= 0 and SecondsFromTime(t3e1) <= 0;
def z32 = SecondsFromTime(t3s2) >= 0 and SecondsFromTime(t3e2) <= 0;
def z33 = SecondsFromTime(t3s3) >= 0 and SecondsFromTime(t3e3) <= 0;

def z41 = SecondsFromTime(t4s1) >= 0 and SecondsFromTime(t4e1) <= 0;
def z42 = SecondsFromTime(t4s2) >= 0 and SecondsFromTime(t4e2) <= 0;
def z43 = SecondsFromTime(t4s3) >= 0 and SecondsFromTime(t4e3) <= 0;

def z51 = SecondsFromTime(t5s1) >= 0 and SecondsFromTime(t5e1) <= 0;
def z52 = SecondsFromTime(t5s2) >= 0 and SecondsFromTime(t5e2) <= 0;
def z53 = SecondsFromTime(t5s3) >= 0 and SecondsFromTime(t5e3) <= 0;

DefineGlobalColor("Time Zone 1", Color.RED);
DefineGlobalColor("Time Zone 2", Color.YELLOW);
DefineGlobalColor("Time Zone 3", Color.ORANGE);
DefineGlobalColor("Time Zone 4", Color.CYAN);
DefineGlobalColor("Time Zone 5", Color.GREEN);

def max;
def min;
switch (type)
{
case "Cloud":
max = HighestAll(high);
min = LowestAll(low);
case "Cloud 2":
max = high(period = AggregationPeriod.DAY);
min = low(period = AggregationPeriod.DAY);
case "Bars":
max = -1;
min = -1;
}

AddCloud(if z11 and max > 0 then max else Double.NaN, if z11 and min > 0 then min else Double.NaN, GlobalColor("Time Zone 1"));
AddCloud(if z12 and max > 0 then max else Double.NaN, if z12 and min > 0 then min else Double.NaN, GlobalColor("Time Zone 1"));
AddCloud(if z13 and max > 0 then max else Double.NaN, if z13 and min > 0 then min else Double.NaN, GlobalColor("Time Zone 1"));

AddCloud(if z21 and max > 0 then max else Double.NaN, if z21 and min > 0 then min else Double.NaN, GlobalColor("Time Zone 2"));
AddCloud(if z22 and max > 0 then max else Double.NaN, if z22 and min > 0 then min else Double.NaN, GlobalColor("Time Zone 2"));
AddCloud(if z23 and max > 0 then max else Double.NaN, if z23 and min > 0 then min else Double.NaN, GlobalColor("Time Zone 2"));

AddCloud(if z31 and max > 0 then max else Double.NaN, if z31 and min > 0 then min else Double.NaN, GlobalColor("Time Zone 3"));
AddCloud(if z32 and max > 0 then max else Double.NaN, if z32 and min > 0 then min else Double.NaN, GlobalColor("Time Zone 3"));
AddCloud(if z33 and max > 0 then max else Double.NaN, if z33 and min > 0 then min else Double.NaN, GlobalColor("Time Zone 3"));

AddCloud(if z41 and max > 0 then max else Double.NaN, if z41 and min > 0 then min else Double.NaN, GlobalColor("Time Zone 4"));
AddCloud(if z42 and max > 0 then max else Double.NaN, if z42 and min > 0 then min else Double.NaN, GlobalColor("Time Zone 4"));
AddCloud(if z43 and max > 0 then max else Double.NaN, if z43 and min > 0 then min else Double.NaN, GlobalColor("Time Zone 4"));

AddCloud(if z51 and max > 0 then max else Double.NaN, if z51 and min > 0 then min else Double.NaN, GlobalColor("Time Zone 5"));
AddCloud(if z52 and max > 0 then max else Double.NaN, if z52 and min > 0 then min else Double.NaN, GlobalColor("Time Zone 5"));
AddCloud(if z53 and max > 0 then max else Double.NaN, if z53 and min > 0 then min else Double.NaN, GlobalColor("Time Zone 5"));

AssignPriceColor(if (z11 or z12 or z13) and type == type.Bars then GlobalColor("Time Zone 1") else if (z21 or z22 or z23) and type == type.Bars then GlobalColor("Time Zone 2") else if (z31 or z32 or z33) and type == type.Bars then GlobalColor("Time Zone 3") else if (z41 or z42 or z43) and type == type.Bars then GlobalColor("Time Zone 4") else if (z51 or z52 or z53) and type == type.Bars then GlobalColor("Time Zone 5") else Color.CURRENT);

declare hide_on_daily;


Комментируйте, ставьте лайки, делитесь с друзьями. Спасибо за внимание и удачи.


PS Немного рекламы. Если кому нужна помощь по ТОСу, индикаторам, фильтрам вот этот человек к которому я обращался(он не является моим знакомым или другом, просто решил сегодня всем немного помочь и поделиться своим добром):
Почта pawelp705@gmail.com

 

Будьте в курсе всех важных событий United Traders — подписывайтесь на наш телеграм-канал

  • торговля на nyse
  • thinkorswim
  • UTchallenge
  • tos
  • Derby
  • ТОС
  • One Good Trade

Похожие публикации

Комментарии (20)

Чтобы оставить комментарий, вам необходимо войти или зарегистрироваться
UP