Десять "ошибок" начинающего трейдера?

rsi | 3 октября, 2006


Предисловие


Любому новичку твердят: «тренд – твой друг, не ходи против тренда» или «ставь стопы покороче, а прибыли дай подрасти» (см., например, [1]). Казалось бы нет оснований подвергать сомнению справедливость этих утверждений, тем более, что она убедительно доказана многими исследованиями (см., например, [2, стр. 35-40]). Кто же будет против того, чтобы встать «по тренду» и получить прибыль?! А если мы ошиблись и, как вдруг оказалось, встали не «по тренду»? И тогда начинается «развитие» исходных утверждений, как то: для снижения риска надо применять хеджирование, так как мы можем неправильно определить направление тренда, не предусмотреть случайные изменения цены с большой волатильностью и так далее. То есть подразумевается, что надо принять меры – «соломку подстелить» – на случай, когда цена пойдет не так, как мы предположили.

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

Автор ни в коей мере не желает упрекнуть уважаемого коллегу Collector'a. Тот добросовестно в сжатой доступной форме изложил в своей статье [1] известные, признанные многими и растиражированные положения. Существующие взгляды получили такое широкое распространение из-за стремления получить положительный результат, находясь в рынке с единственной открытой позицией, когда предполагается, что прежде, чем открыть новую позицию надо закончить со старой. Я бы сравнил это с рыбалкой на одну удочку - замечательное развлечение для любителей, но профессионалы используют обычно другие снасти. Когда речь идет о торговой системе, не стоит ограничивать анализ единственным ордером. Возможность использования нескольких последовательно и параллельно открываемых и закрываемых ордеров с учетом сложившейся обстановки по уже открытым позициям в совокупности с обычными сигналами по убеждению автора надо сразу рассматривать, как основную возможность адаптироваться к поведению цены, как, если угодно, основную «степень свободы» разработчика торговой системы, а не только как инструмент спасения.

Десять «ошибок» начинающего трейдера?


Предположим, мы оказались «в минусе» с длинной позицией. Согласно принятых правил, надо побыстрее от нее избавиться – «обрезай убытки короче». Но, позвольте, мы же только что приняли решение купить, значит были почти уверены, что цена пойдет вверх – например, «проверенный» осциллятор в зоне перепроданности нарисовал дивергенцию. Почему же сейчас, когда цена стала ниже, а значит условия для покупки - еще более выгодными, мы должны выйти из рынка. Логичнее наоборот – еще раз войти в ту же сторону – усилить длинную позицию. По крайней мере, это выглядит более последовательно. Теперь общим положительным итогом станет общий суммарный плюс по двум позициям, а не по каждой из них в отдельности. Автор иногда в такой ситуации открывает еще и третью позицию, но уже на продажу. Общий итог тогда зависит уже от трех ордеров.

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

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

Если сравнить ширину полос Боллинджера при разных периодах усреднения, то легко видеть, что для более длительных периодов они шире (см. рисунок, меньший период – 70 минут, больший – 370 минут) – в дисперсию на большем периоде вносит вклад то, что на более коротком периоде является средним.



Среднюю линию (скользящее среднее) при сдвиге назад на половину выбранного периода усреднения можно считать линией тренда (апостериори). Если предположить, что мы заранее (априори) знаем, как изменится следующее значение короткопериодного среднего, то случайный процесс изменения цены, можно считать, имеет дисперсию как на меньшем временном интервале, но детерминировано меняющееся среднее значение (дрейф, тренд). Глядя на явно нестационарный процесс изменения цены (короткий период равен длительности бара), все «видят» (потому что хотят увидеть!) сумму случайного процесса (характеризуется дисперсией на коротком интервале, в пределе визуально – разностью между high и low, т. е. весьма небольшой величиной) и неизвестного, но неслучайного, предопределенного процесса (тренда) со значительно большей амплитудой. Это и создает иллюзию возможности и массовое желание угадать направление тренда в ближайшем будущем. Мы «видим» фигуры технического анализа на графике изменения цены во времени точно так же, как очертания животных и предметов, глядя на облака. Мы видим только то, что готовы и хотим увидеть - так устроено наше восприятие.

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

Во-первых, будет понятно, что любое отклонение от среднего с большой вероятностью закончится возвратом к исходному, и, значит, не надо бояться становиться против тренда или оказаться «в минусе» с одной открытой позицией и спешить от нее избавиться.

Во-вторых, торговля на Forex станет для мировой экономики стабилизирующим фактором – торговля против тренда будет создавать отрицательную обратную связь и значительно уменьшит колебания курсов валют. Кстати, сама экономика, как известно, такую саморегуляцию имеет – рост курса валюты удорожает экспорт и стимулирует импорт, возвращая курс обратно. Прошу прощения за упрощения (и за тавтологию). Не стоит также преувеличивать и бояться, что курс зафиксируется, если все начнут торговать против тренда - до этого еще очень далеко, а главное – есть другие (фундаментальные) факторы, влияющие на цену (вот когда заработает фундаментальный анализ!).

В-третьих, десять «ошибок» начинающего трейдера по [1] оказываются вовсе даже не ошибками, а правильными шагами. Пройдемте их в последовательности [1].
  1. Торговля на открытии рынка

    Если мы отказались от надежды угадать направление тренда, то можно не ожидать подходящего момента - надо входить в рынок, как только появится техническая возможность для этого. Можно даже сразу открыть две одинаковые по величине, но противоположные по направлению позиции – короткую и длинную. Одна из них принесет прибыль раньше, другая – может принести позже, когда цена вернется и пройдет дальше. При этом на момент открытия и до закрытия любой из двух позиций достигается 100% хеджирование, риск близок к нулю (проигрываем только на комиссии, если есть, спрэде и на разнице свопа по длинной и короткой позиции при условии, что до закрытия проходит больше суток).

  2. Поспешность в снятии прибыли

    Никогда не рано снять прибыль! Этим мы никак не ухудшим свое положение. Если после фиксации прибыли, например, в длинной позиции, цена уменьшилась на величину больше спред+комиссия, можно снова покупать – сможем дважды снять прибыль на одном участке, но уже точно не потеряем прибыль, которую зафиксировали! Например, купили при 1.2300, закрыли на 1.2340, цена опустилась на 1.2320 – покупаем; если цена снова пойдет вверх, то на участке 1.2320-1.2340, получается, заработаем второй раз; если бы мы не зафиксировали прибыль на 1.2340, то на текущий момент (1.2320) вместо «лежащих в кармане» сорока пипсов, мы бы имели всего неясных двадцать.

  3. Добавление к убыточной позиции

    … становится просто необходимо, так как убыточная позиция образовалась в результате отклонения от среднего, а, значит, вероятность возврата к среднему возросла. Надо не просто добавлять к убыточной позиции, а добавлять тем больше, чем дальше «не туда» ушла цена.

  4. Закрытие позиций начиная с лучшей

    Этот шаг перекликается с 2. Закрывать лучше прибыльные позиции, а не убыточные – последние тоже со временем могут стать прибыльными, если мы их сейчас не закроем!

  5. Жажда мести

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

  6. Наличие особо предпочтительных позиций

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

  7. Торговля по принципу "купил навсегда"

    Торговля по такому принципу возможна по двум основаниям. Первое: как я уже отметил, не стоит торопиться закрывать убыточную позицию, даже если ей «в обед сто лет», нужно дождаться лучших времен (см. п.1 и 4). Второе: можно зарабатывать на свопе – 350% годовых - тоже неплохо [3, стр. 356].

  8. Закрытие прибыльной стратегической позиции в первый день

    Повторяем п.2 – закрыть прибыльную позицию никогда не рано.

  9. Закрытие позиции по сигналу на открытие противоположной позиции

    Уважаемый Collector в [1] не исключает такой возможности. Автор тоже не считает это ни ошибкой, ни чем-то принципиальным – это просто элемент конкретной торговой системы, не являющийся критичным.

  10. Сомнения

    На мой взгляд, надо торговать всегда, и нет трейдеров без сомнений. У Сороса есть высказывание (как перефразировка известной фразы Наполеона) – надо вступить в рынок, а потом смотреть - что делать дальше. Лично я против пользы прогулок ничего не имею, даже при отсутствии всяких сомнений. Постулат - правильный при исключении первой части – «закрыть все ордера». Я бы переформулировал так «пусть компьютер ими поуправляет, а мы пойдем погулять».

Таким образом, постулируемые в [1] «десять заповедей» или где-то кем-то и что-то еще - не стоит рассматривать как истину в последней инстанции или панацею от проигрыша. На сегодня есть только один способ совершать меньше ошибок для начинающих и не очень трейдеров – моделировать свои торговые системы на компьютере и проверять их на исторических котировках – гарантий это тоже не дает, но вооружает не слепой верой, а точным числовым расчетом. А комментарий к [1] OpenStorm на счет «магнитофона и медальона» я бы с удовольствием отнес ко всей системе сложившихся «постулатов».

Обоснование стратегии торговли


Однако, есть смысл проверить стратегию торговли, основанную на предложенном подходе – «соловьев баснями не кормят!», благо замечательный инструментарий МТ4 позволяет это сделать. Для ее проверки с исключением влияния дополнительных факторов (выбора времени входа и выхода по сигналам) в предлагаемом советнике [4] вообще откажемся от сигналов – обойдемся без «быть или не быть». Открываем сразу два встречных ордера на немедленное исполнение, то есть совершаем «ошибки» №1 и №7.

   kk=0; 
   tic=-1;  
   if (sob) 
         {
         if(max_lot_b==0.0)lotsi=0.1;else lotsi=2.0*max_lot_b;
         while(tic==-1 && kk<3)
            {
            tic=OrderSend(Symbol(),OP_BUY,lotsi,Ask,slip,0,Ask+(tp+25)*Point," ",m,0,Yellow);
            Print("tic_buy=",tic);
            if (tic==-1)
               {
               gle=GetLastError();
               kk++;               
               Print("Ошибка №",gle," при buy ",kk);
               Sleep(6000);
               RefreshRates();   
               }
            }   
         lastt=CurTime();
         return;
         }
      tic=-1;
      kk=0;  
      if (sos) 
         {
         if(max_lot_s==0.0)lotsi=0.1;else lotsi=2.0*max_lot_s;
         while(tic==-1 && kk<3)
            {
            tic=OrderSend(Symbol(),OP_SELL,lotsi,Bid,slip,0,Bid-(tp+25)*Point," ",m,0,Red);
            Print("tic_sell=",tic);
            if (tic==-1)
               {
               gle=GetLastError();
               kk++;               
               Print("Ошибка №",gle," при sell ",kk);
               Sleep(6000);
               RefreshRates();   
               }
            }
         lastt=CurTime();
         return;
         }

При достижении одним из них уровня TakeProfit тут же после фиксации прибыли открываем его вновь – совершаем подряд «ошибки» № 2, №4 и №8.

   sob=(kol_buy()<1 || buy_lev_min-sh*Point>Ask) && 
      AccountFreeMargin()>AccountBalance()*0.5;       
   sos=(kol_sell()<1 || sell_lev_max+sh*Point<Bid) &&
      AccountFreeMargin()>AccountBalance()*0.5;

Второй – убыточный ордер – после определенного шага цены усиливаем удвоенным лотом, после следующего такого же шага - еще усиливаем и так далее, а при достижении заданной прибыли закрываем все ордера этого направления – совершаем «ошибки» №3 и №6.

   if(M_ob[kb_max][2]>0.0)scb=M_ob[kb_max][7]/(M_ob[kb_max][2]*10)>tp;
   if(M_os[ks_max][2]>0.0)scs=M_os[ks_max][7]/(M_os[ks_max][2]*10)>tp;
   
   kk=0;
   ii=0;
   if (scb)
      {
      while(kol_buy()>0 && kk<3)
         {
         kk++;
         for(i=1;i<=kb;i++)
            {
            if(M_ob[i][0]==0)break;else ii=M_ob[i][0];
            if (!OrderClose(ii,M_ob[i][2],Bid,slip,White)) 
               {
               gle=GetLastError();
               Print("Ошибка №",gle," при close buy ",ii," (",kk,")");
               Sleep(6000);
               RefreshRates();  
               }
            }
         }
      }
   kk=0;  
   ii=0; 
   if (scs)
      {
      while(kol_sell()>0 && kk<3)
         {
         kk++;
         for(i=1;i<=ks;i++)
            {
            if(M_os[i][0]==0)break;else ii=M_os[i][0];
            if (!OrderClose(ii,M_os[i][2],Ask,slip,White))
               {
               gle=GetLastError();
               Print("Ошибка №",gle," при close sell ",ii," (",kk,")");
               Sleep(6000);
               RefreshRates();  
               }
            }
         }
      }
Все это делаем, находясь в перманентном состоянии «ошибки» №10. Единственную из ранее перечисленных ошибок мы не совершили – это «ошибку» №9, но она с самого начала не очень тянула на «ошибку», а от ошибки №5 мы застраховались, отдав все на откуп компьютеру. В массивах M_ob и M_os хранятся текущие данные об открытых позициях:

int kb,kb_max=0;
   kb=kol_buy()+1;
   double M_ob[11][8];
   ArrayResize(M_ob,kb);
   int ks=0,ks_max=0;
   ks=kol_sell()+1;
   double M_os[11][8];
   ArrayResize(M_os,ks);
   
   ArrayInitialize(M_ob,0.0);
   
   int kbi=0;
   for(i=0;i<OrdersTotal();i++)
     {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
     if(OrderSymbol()==Symbol() && OrderType()==OP_BUY)
        {
        kbi++;
        M_ob[kbi][0]=OrderTicket();
        M_ob[kbi][1]=OrderOpenPrice();
        M_ob[kbi][2]=OrderLots();
        M_ob[kbi][3]=OrderType();
        M_ob[kbi][4]=OrderMagicNumber();
        M_ob[kbi][5]=OrderStopLoss();
        M_ob[kbi][6]=OrderTakeProfit();
        M_ob[kbi][7]=OrderProfit();
        }
      } 
   M_ob[0][0]=kb; 
   
   double max_lot_b=0.0;
   for(i=1;i<kb;i++)
      {
      if(M_ob[i][2]>max_lot_b)
         {
         max_lot_b=M_ob[i][2];
         kb_max=i;
         }
      }
   double buy_lev_min=M_ob[kb_max][1];   
   
   ArrayInitialize(M_os,0.0);
   int ksi=0;
   for(i=0;i<OrdersTotal();i++)
     {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
     if(OrderSymbol()==Symbol() && OrderType()==OP_SELL)
        {
        ksi++;
        M_os[ksi][0]=OrderTicket();
        M_os[ksi][1]=OrderOpenPrice();
        M_os[ksi][2]=OrderLots();
        M_os[ksi][3]=OrderType();
        M_os[ksi][4]=OrderMagicNumber();
        M_os[ksi][5]=OrderStopLoss();
        M_os[ksi][6]=OrderTakeProfit();
        M_os[ksi][7]=OrderProfit();
        }
      } 
   M_os[0][0]=ks; 
   
   double max_lot_s=0.0;
   for(i=1;i<ks;i++)
      {
      if(M_os[i][2]>max_lot_s)
         {
         max_lot_s=M_os[i][2];
         ks_max=i;
         }
      }
   double sell_lev_max=M_os[ks_max][1];

Шагов против тренда может оказаться несколько, поэтому надо иметь достаточный депозит (в приведенном примере – не менее $50000). Однако, система работает и при меньших значениях стартового депозита, надо только увеличить значение шага sh. При депозите $1000 шаг составляет 300, прибыль в этом случае, естественно, будет поменьше.

Результаты тестирования


Тестирование проводилось на USDCHF. Минутный график выбран для исключения влияние качества моделирования. На других инструментах – результаты аналогичные, но надо подобрать параметры sh и tp для достижения наилучших показателей.

Strategy Tester Report
Франк_уд


Символ USDCHF (Swiss Franc vs US Dollar)
Период 1 Минута (M1) 2006.02.16 18:06 - 2006.09.27 18:02
Модель По ценам открытия (быстрый метод на сформировавшихся барах)
Параметры tp=65; sh=41;

Баров в истории 200061 Смоделировано тиков 400022 Качество моделирования n/a

Начальный депозит 50000.00



Чистая прибыль 168959.39 Общая прибыль 204777.37 Общий убыток -35817.98
Прибыльность 5.72 Матожидание выигрыша 413.10

Абсолютная просадка 0.00 Максимальная просадка 5602.61 (3.41%) Относительная просадка 4.56% (2611.85)

Всего сделок 409 Короткие позиции (% выигравших) 205 (59.51%) Длинные позиции (% выигравших) 204 (61.27%)

Прибыльные сделки (% от всех) 247 (60.39%) Убыточные сделки (% от всех) 162 (39.61%)
Самая большая прибыльная сделка 18874.04 убыточная сделка -1461.09
Средняя прибыльная сделка 829.06 убыточная сделка -221.10
Максимальное количество непрерывных выигрышей (прибыль) 14 (6950.34) непрерывных проигрышей (убыток) 7 (-5602.61)
Максимальная непрерывная прибыль (число выигрышей) 25476.79 (8) непрерывный убыток (число проигрышей) -5602.61 (7)
Средний непрерывный выигрыш 4 непрерывный проигрыш 3



Время Тип Ордер Лоты Цена S / L T / P Прибыль Баланс
1 2006.02.16 19:51 buy 1 0.10 1.3120 0.0000 1.3210
2 2006.02.16 19:52 sell 2 0.10 1.3115 0.0000 1.3025
3 2006.02.17 14:06 sell 3 0.20 1.3158 0.0000 1.3068
4 2006.02.20 04:21 t/p 3 0.20 1.3068 0.0000 1.3068 135.19 50135.19
5 2006.02.20 04:21 buy 4 0.20 1.3073 0.0000 1.3163
6 2006.02.23 16:15 close 2 0.10 1.3028 0.0000 1.3025 58.02 50193.21
7 2006.02.23 16:15 buy 5 0.40 1.3028 0.0000 1.3118
8 2006.02.23 16:16 sell 6 0.10 1.3038 0.0000 1.2948
9 2006.02.23 16:55 sell 7 0.20 1.3081 0.0000 1.2991
10 2006.02.24 10:14 close 1 0.10 1.3114 0.0000 1.3210 3.84 50197.05
11 2006.02.24 10:14 close 4 0.20 1.3114 0.0000 1.3163 75.17 50272.22
12 2006.02.24 10:14 close 5 0.40 1.3114 0.0000 1.3118 266.53 50538.75
13 2006.02.24 10:15 buy 8 0.10 1.3110 0.0000 1.3200
14 2006.02.24 10:36 sell 9 0.40 1.3123 0.0000 1.3033
15 2006.02.24 17:58 sell 10 0.80 1.3167 0.0000 1.3077
16 2006.02.27 01:20 t/p 8 0.10 1.3200 0.0000 1.3200 69.22 50607.97
17 2006.02.27 01:20 buy 11 0.10 1.3205 0.0000 1.3295
18 2006.02.27 01:22 sell 12 1.60 1.3211 0.0000 1.3121
19 2006.02.28 12:47 buy 13 0.20 1.3163 0.0000 1.3253
20 2006.02.28 17:24 close 6 0.10 1.3123 0.0000 1.2948 -68.52 50539.45
21 2006.02.28 17:24 close 7 0.20 1.3123 0.0000 1.2991 -71.52 50467.93
22 2006.02.28 17:24 close 9 0.40 1.3123 0.0000 1.3033 -10.01 50457.92
23 2006.02.28 17:24 close 10 0.80 1.3123 0.0000 1.3077 248.21 50706.13
24 2006.02.28 17:24 close 12 1.60 1.3123 0.0000 1.3121 1052.91 51759.04
25 2006.02.28 17:25 buy 14 0.40 1.3113 0.0000 1.3203
26 2006.02.28 17:26 sell 15 0.10 1.3111 0.0000 1.3021
27 2006.03.01 15:07 buy 16 0.80 1.3064 0.0000 1.3154
28 2006.03.01 18:52 close 11 0.10 1.3150 0.0000 1.3295 -39.72 51719.31
29 2006.03.01 18:52 close 13 0.20 1.3150 0.0000 1.3253 -17.66 51701.65
30 2006.03.01 18:52 close 14 0.40 1.3150 0.0000 1.3203 116.76 51818.41
31 2006.03.01 18:52 close 16 0.80 1.3150 0.0000 1.3154 523.19 52341.60
32 2006.03.01 18:53 buy 17 0.10 1.3162 0.0000 1.3252
и т.д.

Результат тестирования, как видите, подтверждает обоснованность «опровержения постулатов».

Автор за время своей не очень большой практики с 2002 года, продолжая считать себя начинающим трейдером, убедился в незыблемости лишь двух постулатов (аксиом, истин – как угодно) на FOREX:
  • рынок никому и ничего не должен;
  • цена не обязана идти по прогнозу, кто бы его не составил.
Доверяй, но проверяй!

Литература:

  1. Десять основных ошибок начинающего трейдера. Авт. Collector http://articles.mql4.com/ru/articles/1418
  2. Торговая система трейдера: фактор успеха /Под ред. В. И. Сафина. – СПб.: Питер, 2004. – 240 с.: ил.
  3. Якимкин В. Н., к.ф.-м.н. «Forex: как заработать большие деньги» - М.: ИКФ Омега-Л, 2005 - 413 с.
  4. https://www.mql5.com/ru/code/7097