23
Ноя
2011

Усреднение на Форекс с режимом тейк профит или трейлинг стоп




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

Усреднение на Форекс с режимом тейк профит или трейлинг стоп

В настоящее время создано немало советников, использующих стратегию мартингейла. Самыми популярными из них являются советники, использующие именно алгоритм усреднения. Такие системы по-сравнению с “родителем” более живучи, поскольку “ставка” не так высока, как в стратегии Мартингейла в чистом виде. При этом все же необходимо помнить, что:

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

Какой можно сделать вывод, прочитав это определение?

Да, правильно:

При использовании усреднения на Форекс важное значение имеют точки входа в рынок. Мы должны иметь достаточно точное представление о предполагаемом движении цены, т.е. в каких границах будут происходить колебания курса выбранного финансового инструмента (валютной пары).

Я бы хотел выделить три взаимосвязанных основополагающих “кита”, на которых по-моему строится успешное применение усреднения (да, и не только усреднение, а вообще вся торговля на Форекс):

  • Аналитика
  • Психология
  • Манименеджмент

Когда я говорил о достаточно точном представлении о предполагаемом движении цены, то имел ввиду именно аналитические данные. Данные Форекс аналитики могут иметь технические и фундаментальные “корни”: технический анализ, фундаментальный анализ. Хотя разговор сейчас и не о том, но я рекомендую проводить эти два вида анализа самостоятельно. Да, вы можете знакомиться с Форекс аналитикой из различных источников (информация брокера, блоги о Форекс и т.п.), но при этом важно полагаться и на себя. Не принимайте решение о входе в рынок целиком и полностью основанное на этой информации. Учитесь анализировать данные самостоятельно. Не бойтесь ошибаться, но при этом всегда анализируйте причины ошибок.

Психология успешного трейдинга штука занимательная, но наука сложная. Помню, как в своих первых шагах на Форекс я был часто и излишне оптимистично, и не менее часто излишне пессимистично настроен, находясь в рынке. И первое, и второе приводило в лучшем случае к тому, что я просто топтался на месте: то сливал часть депозита, то эту же часть депозита постепенно возвращал, зарабатывая. Оптимизм, конечно, штука хорошая, но не злоупотребляйте слишком “сладкими” прогнозами. В то же время, пессимизм, конечно, в разумных пределах нужен на Форекс, но, тем не менее, доверяйте же своим прогнозам. Я думаю, всем понятно как проявляется оптимизм и пессимизм на Форекс, поэтому останавливаться на этом не буду. Скажу только, что они должны быть в гармонии и в рамках манименеджмента. Применительно к усреднению излишний оптимизм проявляется в надежде на большой откат при сильном тренде, противоположном направлению серии. Пессимизм же проявляется в “паническом настроении” при небольшом откате на тренде. Первое приводит к тому, что мы накапливаем значительный плавающий убыток (просадку) вплоть до стоп аута на счете, а второе приводит к тому, что мы выходим из рынка либо с небольшим минусом, либо с незначительным плюсом, а потом видим, что цена пошла по прогнозу. Такая “политика” трейдинга “расшатывает нервную систему” и приводит к тому, что постепенно “нервы” одержат верх над знаниями и опытом, сведя их к бесполезности.

Манименеджмент (MM) подразумевает грамотное управление капиталом. Это означает, что даже при движении рынка против открытых позиций, трейдер не потеряет значительную часть депозита. Для усреднения манименеджмент очень важен, как впрочем, и для любой Форекс стратегии. При усреднении задают объем первой сделки, коэффициент повышения объема следующей сделки по отношению к предыдущей, максимальное количество ордеров в серии. Основываясь на этих данных определяют совокупный, максимально возможный объем всех открытых позиций (ордеров). По этому объему рассчитывают требуемый размер залога (разный, в зависимости от величины кредитного плеча). Задают уровень просадки счета (максимальный плавающий убыток). Исходя из объема первой позиции серии, величины залога и максимально допустимой просадки производят расчет необходимого размера депозита. Торговать на Форекс на грани уровней маржин колла и стоп аута настоятельно не рекомендую.

Иногда задаются вопросом: “Что делать при достижении на счете максимальной просадки?” Мнения в этом случае разделяются. Если одни считают, что лучше зафиксировать убыток, то другие склонны считать, что в этой ситуации лучше выставить локирующий ордер. В этой связи есть немало споров об эффективности первого и второго действия. Для себя на этот вопрос я давно уже ответил. В таких случаях я предпочитаю выставлять локирующий ордер. Во-первых, это дает мне время для анализа сложившейся ситуации и принятия наиболее эффективного решения (разрулить лок или зафиксировать убыток). Во-вторых, очень часто впоследствии цена разворачивается, что дает возможность закрыть локирующий ордер в безубытке (или даже в прибыли), а затем закрыть серию в безубытке (профите).

Ранее я уже писал о “теории” усреднения, но тем не менее хотелось бы напомнить ее еще раз.

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

На каждом новом шаге производиться расчет усредненной цены (серия усредняется):

Cср = (C1*L1+C2*L2+…+Cn*Ln)/(L1+L2+…Ln),
где Сi -цена открытия i-того ордера серии, Li – объем i-того ордера серии, n – количество ордеров в серии.

Для каждого ордера серии устанавливается одинаковый уровень тейк профит:

для ордеров SELL: TPsell = Cср-TP*Point,
для ордеров BUY: TPbuy = Cср+TP*Point,
где TP – уровень тейк профита в пунктах, Point – коэффициент, принимающий значение: 0.0001 для четырехзначных котировок, 0.00001 для пятизначных котировок.

Кроме уровней тейк профит фиксировать прибыль можно и уровнем стоп лосс, передвигая его вслед за ценой и поддерживая между ними определенное расстояние. Такой режим работы называют трейлинг стоп, он же тралл, тральщик… Наиболее эффективно режим трейлинг стоп применять на сильных трендах при практически безоткатных движениях. Это позволит получить максимальную прибыль от движения цены. Трейлинг стоп может быть простым, как описано выше, а может быть и более сложным. Например, перенос уровня стоп лосс вслед за ценой по фракталам и т.д.

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

Автоматическая торговая система, построенная на индикаторах, не способна к такому точному анализу, именно поэтому системы, оставленные без контроля трейдера, сливают депозиты (здесь я не имею ввиду профессиональные автоматические торговые системы, на разработку которых идут огромные ресурсы). На ряде форумов еще пишут, что используют такого рода советники, но 10 часов в сутки контролируют их работу, “разгребая открытые непонятно как ордера”. Тогда нет смысла доверять советнику открывать первую сделку серии, а проще зайти в рынок самостоятельно, доверив советнику лишь усреднять при необходимости открытую позицию. Т.е. нам необходим помощник, которому мы доверим работу по усреднению открытой нами позиции.

Ну, поскольку с теорией мы точно разобрались, давайте перейдем к практике и реализуем в коде простой советник, который будет подхватывать открытые ордера и усредять их. Наш “УСРЕДНИТЕЛЬ” (так мы назовем советника) может работать в двух режимах: тейк профит и трейлинг стоп. При достижении заданного уровня просадки (плавающий убыток) советник откроет локирующий ордер объемом, равным совокупному объему серии. Таким образом, можно ограничивать убытки. Решение о фиксации убытка либо о раскрытии лока вручную в дальнейшем вы принимаете самостоятельно.

Вот код усредняющего советника на языке программирования MQL4 (для торгового терминала MetaTrader 4). В коде есть некоторые пояснения, так что разобраться в алгоритме его работы будет не сложно:

//+------------------------------------------------------------------+
//|                                                   Usrednitel.mq4 |
//|                              Copyright © 2011, Moneyinnetwork.ru |
//|                                         http://moneyinnetwork.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, Moneyinnetwork.ru"
#property link      "http://moneyinnetwork.ru"
 
extern string s1 = "Коэффициент повышения объема каждой последующей сделки по отношению к предыдущей";
extern double Klots = 1.2;
extern string s2 = "Режим: false - трейлинг стоп, true - тейк профит";
extern bool regim = false;
extern string s3 = "Трейлинг стоп, пунктов";
extern int TR_Stop = 15;
extern string s4 = "Тейк профит, пунктов";
extern int TP = 15;
extern string s5 = "Размер шага при движении цены против направления серии, в пунктах";
extern int PipStep = 35;
extern string s51 = "Коэффициент увеличения каждого следующего шага";
extern double PipExp = 1;
extern string s6 = "Допустимая просадка (расчет по свободным средствам), процентов";
extern double DrawDownPercent = 30;
extern string s7 = "Максимальное количество ордеров в серии";
extern int maxtrades = 10;
extern string s8 = "Максимальное отклонение от запрошенной цены, пунктов";
extern int slip = 3;
extern string s9 = "Уникальные метки для ордеров, открываемых только этим советником";
extern string s10 = "Уникальная метка ордеров серии (Всегда 0 для подхвата ордеров, открытых вручную - не менять!)";
extern int MagicNumber = 0;
extern string s11 = "Уникальная метка для локируюшего ордера";
extern int MagicNumberLock = 10;
 
int init()
{
   Comment("");
   if (ObjectFind("BKGR") >= 0) ObjectDelete("BKGR");
   if (ObjectFind("BKGR2") >= 0) ObjectDelete("BKGR2");
   if (ObjectFind("BKGR3") >= 0) ObjectDelete("BKGR3");
   if (ObjectFind("BKGR4") >= 0) ObjectDelete("BKGR4");
   if (ObjectFind("LV") >= 0) ObjectDelete("LV");
   if (ObjectFind("LV1") >= 0) ObjectDelete("LV1");
   return(0);
}
 
int deinit()
{
   Comment("");
   if (ObjectFind("BKGR") >= 0) ObjectDelete("BKGR");
   if (ObjectFind("BKGR2") >= 0) ObjectDelete("BKGR2");
   if (ObjectFind("BKGR3") >= 0) ObjectDelete("BKGR3");
   if (ObjectFind("BKGR4") >= 0) ObjectDelete("BKGR4");
   if (ObjectFind("LV") >= 0) ObjectDelete("LV");
   if (ObjectFind("LV1") >= 0) ObjectDelete("LV1");
   return(0);
}
 
int start()
{
  int i, lastorder = -1, numtrades = 0, ticket = 0, lasttype = -1;
  int trade;
  bool flag = false, flaglock = false;
  double profit = 0, alllots = 0, aver1 = 0, lastprice=0, stoploss = 0, drdn, Lots = 0, firstprice = 0, firsttake = 0;
  //текущая просадка в процентах
  drdn = (1-AccountFreeMargin()/AccountBalance())*100;
  if (ObjectFind("BKGR") < 0) {
      ObjectCreate("BKGR", OBJ_LABEL, 0, 0, 0);
      ObjectSetText("BKGR", "g", 140, "Webdings", LightSlateGray);
      ObjectSet("BKGR", OBJPROP_CORNER, 0);
      ObjectSet("BKGR", OBJPROP_BACK, TRUE);
      ObjectSet("BKGR", OBJPROP_XDISTANCE, 5);
      ObjectSet("BKGR", OBJPROP_YDISTANCE, 15);
   }
   if (ObjectFind("BKGR2") < 0) {
      ObjectCreate("BKGR2", OBJ_LABEL, 0, 0, 0);
      ObjectSetText("BKGR2", "g", 140, "Webdings", DimGray);
      ObjectSet("BKGR2", OBJPROP_BACK, TRUE);
      ObjectSet("BKGR2", OBJPROP_XDISTANCE, 5);
      ObjectSet("BKGR2", OBJPROP_YDISTANCE, 60);
   }
   if (ObjectFind("BKGR3") < 0) {
      ObjectCreate("BKGR3", OBJ_LABEL, 0, 0, 0);
      ObjectSetText("BKGR3", "g", 140, "Webdings", DimGray);
      ObjectSet("BKGR3", OBJPROP_CORNER, 0);
      ObjectSet("BKGR3", OBJPROP_BACK, TRUE);
      ObjectSet("BKGR3", OBJPROP_XDISTANCE, 5);
      ObjectSet("BKGR3", OBJPROP_YDISTANCE, 45);
   }
   if (ObjectFind("LV") < 0) {
      ObjectCreate("LV", OBJ_LABEL, 0, 0, 0);
      ObjectSetText("LV", "УСРЕДНИТЕЛЬ v.1.0", 9, "Tahoma Bold", White);
      ObjectSet("LV", OBJPROP_CORNER, 0);
      ObjectSet("LV", OBJPROP_BACK, FALSE);
      ObjectSet("LV", OBJPROP_XDISTANCE, 40);
      ObjectSet("LV", OBJPROP_YDISTANCE, 14);
   }
   if (ObjectFind("LV1") < 0) {
      ObjectCreate("LV1", OBJ_LABEL, 0, 0, 0);
      ObjectSetText("LV1", "© 2011 MoneyInNetwork.ru", 9, "Tahoma Bold", White);
      ObjectSet("LV1", OBJPROP_CORNER, 0);
      ObjectSet("LV1", OBJPROP_BACK, FALSE);
      ObjectSet("LV1", OBJPROP_XDISTANCE, 25);
      ObjectSet("LV1", OBJPROP_YDISTANCE, 32);
   }
   if (ObjectFind("BKGR4") < 0) {
      ObjectCreate("BKGR4", OBJ_LABEL, 0, 0, 0);
      ObjectSetText("BKGR4", "g", 140, "Webdings", DimGray);
      ObjectSet("BKGR4", OBJPROP_CORNER, 0);
      ObjectSet("BKGR4", OBJPROP_BACK, TRUE);
      ObjectSet("BKGR4", OBJPROP_XDISTANCE, 5);
      ObjectSet("BKGR4", OBJPROP_YDISTANCE, 73);
   } 
  //анализируем текущее состояние торговой серии и наличие локированния
  RefreshRates();
  for ( trade = OrdersTotal() - 1; trade >= 0; trade-- ) 
  {
      if ( OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) && (OrderType() == OP_BUY || OrderType() == OP_SELL) && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() )
      {
            if ( !flag )  
            { 
               //запоминаем тип последнего ордера серии (направление серии: BUY или SELL)
               firsttake = OrderTakeProfit();
               lasttype = OrderType(); 
               //запоминаем цену открытия последнего ордера серии
               lastprice = OrderOpenPrice();
               flag = true;
               //запоминаем уровень стоп лосса серии
               stoploss = OrderStopLoss();
            }
            //подсчет числа ордеров в серии
            numtrades++;
            //подсчет объема серии
            alllots+=OrderLots();
            profit+=OrderProfit();
            //определяем объем первой сделки серии
            Lots = OrderLots();
            firstprice = OrderOpenPrice();
      }
      //выставлен локирующий ордер
      if ( OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) && (OrderType() == OP_BUY || OrderType() == OP_SELL) && OrderMagicNumber() == MagicNumberLock && OrderSymbol() == Symbol() ) 
      {
         flaglock = true;
         profit+=OrderProfit();
      }
  }
      //модифицируем тейки серии
      if ( regim && !firsttake )
      {
         aver1 = Average_Price();
         if ( aver1!=0 )
         {
           double tp1;
           if ( lasttype==OP_BUY )  tp1 = NormalizeDouble(aver1+TP*Point, Digits);
           if ( lasttype==OP_SELL ) tp1 = NormalizeDouble(aver1-TP*Point, Digits);
           for ( trade = OrdersTotal() - 1; trade >= 0; trade-- ) 
           {
                 if ( OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) && (OrderType() == OP_BUY || OrderType() == OP_SELL) && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() ) 
                 {
                     //на модификацию ордера дано 3 попытки
                     for (i=0; i<3; i++ )
                     {
                        RefreshRates();
                        if ( OrderModify(OrderTicket(), OrderOpenPrice(), 0, tp1, 0, Violet) ) break;    
                        Sleep (3000);
                     }
                 }         
           }
        }
     }   
  string com = "\n"+"\n"+"\n Счет: "+DoubleToStr(AccountNumber(), 0);
  com = com + "\n Баланс: "+DoubleToStr(AccountBalance(), 2);
  com = com + "\n Средства: "+DoubleToStr(AccountEquity(), 2);
  com = com + "\n Св. средства: "+DoubleToStr(AccountFreeMargin(), 2);
  com = com + "\n Залог: "+DoubleToStr(AccountMargin(), 2);
  com = com + "\n Просадка : "+DoubleToStr(drdn, 2)+"%";
  com = com + "\n Порог безопасности: "+DoubleToStr(DrawDownPercent, 2)+"%";
  com = com + "\n Инструмент: "+Symbol();
  com = com + "\n Цена открытия серии: "+DoubleToStr(firstprice, Digits);
  com = com + "\n Объем первой сделки: "+DoubleToStr(Lots, 2)+ " лот";
  if ( lasttype == -1 ) com = com + "\n Направление серии: нет";
  if ( lasttype == OP_BUY )com = com + "\n Направление серии: BUY";
  if ( lasttype == OP_SELL )com = com + "\n Направление серии: SELL";
  com = com + "\n Шаг серии: "+DoubleToStr(PipStep, 0)+ " пунктов";
  if ( regim )  com = com + "\n Режим: тейк профит";
  else com = com + "\n Режим: трейлинг стоп";
  com = com + "\n Трейлинг стоп: "+DoubleToStr(TR_Stop, 0)+ " пунктов";
  com = com + "\n Трейк профит: "+DoubleToStr(TP, 0)+ " пунктов";
  com = com + "\n Открыто ордеров: "+DoubleToStr(numtrades, 0);
  com = com + "\n Профит серии: "+DoubleToStr(profit, 2);
  if ( !flaglock ) com = com + "\n Лок не выставлен";
  if ( flaglock )  com = com + "\n Лок выставлен";
  Comment(com);
  //есть локирующий ордер - выходим ничего не предпринимая
  if ( flaglock ) return (0);
  //если свободные средства счета достигли минимального заданного значения от баланса счета, 
  //то открываем локирующий ордер объемом, равным объему серии
  if ( drdn >= DrawDownPercent )
  {
      if ( lasttype==OP_BUY )
      {
           //локирующий ордер на покупку
           RefreshRates();
           ticket = OrderSend(Symbol(), OP_SELL, NormalizeDouble(alllots, 2), NormalizeDouble(Bid, Digits), slip, 0, 0, "Усреднитель-"+Symbol()+"-Lock-Sell", MagicNumberLock, 0, Violet);
      }
      if ( lasttype==OP_SELL )
      {
          //локирующий ордер на продажу
          RefreshRates();
          ticket = OrderSend(Symbol(), OP_BUY, NormalizeDouble(alllots, 2), NormalizeDouble(Ask, Digits), slip, 0, 0, "Усреднитель-"+Symbol()+"-Lock-Buy", MagicNumberLock, 0, Violet);
      }
      //модифицируем все ордера серии путем обнуления параметра стоп лосс
      for ( trade = OrdersTotal() - 1; trade >= 0; trade-- )
      {
         if ( OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol())
         {
             //на модификацию ордера дано 3 попытки
             for (i=0; i<3; i++)
             {
                 RefreshRates();
                 if ( OrderModify(OrderTicket(), OrderOpenPrice(), 0, 0, 0, Cyan) ) break;
                 Sleep (1000);
             }
         }
      }
      return (0);
  } 
 
  //выходим без действий, если открытых для сопровождения ордеров нет
  if ( !numtrades ) return (0);
 
  //трейлинг стоп для серии
    aver1 = Average_Price();
    if ( (!regim && aver1!=0 && stoploss==0 && ((lasttype == OP_BUY && Bid-aver1>=TR_Stop*Point) || (lasttype == OP_SELL && aver1-Ask>=TR_Stop*Point))) ||
         (!regim && aver1!=0 && stoploss!=0 && ((lasttype == OP_BUY && Bid-stoploss>TR_Stop*Point) || (lasttype == OP_SELL && stoploss-Ask>TR_Stop*Point))) )
     {
         //стоп лосс не выставлен - выходим на безубыток
         if ( stoploss==0 )
         {
              for ( trade = OrdersTotal() - 1; trade >= 0; trade-- ) 
              {
                 if ( OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) && (OrderType() == OP_BUY || OrderType() == OP_SELL) && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() ) 
                 {
                     //на модификацию ордера дано 3 попытки
                     for (i=0; i<3; i++ )
                     {
                        RefreshRates();
                        if ( OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(aver1, Digits), OrderTakeProfit(), 0, Violet) ) break;    
                        Sleep (1000);
                     }
                 }         
              }
          }
          //стоп лосс выставлен - стоп лосс держим на расстоянии TR_Stop пунктов от цены
          else
          {
                 double trsell = NormalizeDouble(Ask+TR_Stop*Point, Digits);
                 double trbuy = NormalizeDouble(Bid-TR_Stop*Point, Digits);
                 for ( trade = OrdersTotal() - 1; trade >= 0; trade-- ) 
                 {
                    if ( OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) && (OrderType() == OP_BUY || OrderType() == OP_SELL) && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() ) 
                    {
                        //на модификацию ордера дано 3 попытки
                        for (i=0; i<3; i++ )
                        {
                            RefreshRates();
                            if ( lasttype == OP_SELL && stoploss>trsell )
                                if ( OrderModify(OrderTicket(), OrderOpenPrice(), trsell, 0, 0, Violet) ) break; 
                            if ( lasttype == OP_BUY && stoploss<trbuy )
                                if ( OrderModify(OrderTicket(), OrderOpenPrice(), trbuy, 0, 0, Violet) ) break;
                            Sleep (1000);
                        }
                    }         
                 }
 
           }   
     }
  //не предпринимаем никаких действий, если превышен лимит числа открытых ордеров в одной серии или если выставлен лок.
  if ( numtrades>=maxtrades ) return (0);
 
  //усиливаем серию, если цена прошла против направления серии PipStep пунктов (на открытие ордера одна попытка)
  if ( (lasttype==OP_SELL && Bid-lastprice>=PipStep*MathPow(PipExp, numtrades-1)*Point) || (lasttype==OP_BUY && lastprice-Ask>=PipStep*MathPow(PipExp, numtrades-1)*Point) ) 
  {
      //открываем еще ордер на продажу большим лотом
      if ( lasttype==OP_SELL ) 
      {
          ticket = OrderSend(Symbol(), OP_SELL, NormalizeDouble(Lots * MathPow(Klots, numtrades), 2), NormalizeDouble(Bid, Digits), slip, 0, 0, "Усреднитель-"+Symbol()+"-Sell-Step "+DoubleToStr(numtrades, 0), MagicNumber, 0, Red);
          Sleep (1000);
      }
      //открываем еще ордер на покупку большим лотом
      if ( lasttype==OP_BUY )  
      {
          ticket = OrderSend(Symbol(), OP_BUY, NormalizeDouble(Lots * MathPow(Klots, numtrades), 2), NormalizeDouble(Ask, Digits), slip, 0, 0, "Усреднитель-"+Symbol()+"-Buy-Step "+DoubleToStr(numtrades, 0), MagicNumber, 0, Green);
          Sleep (1000);
      }
  }
 
  return (0);   
}
 
//функция расчета усредненной цены серии
double Average_Price()
{
   double lots1 = 0, sum = 0; 
   RefreshRates();
   for ( int trade = OrdersTotal() - 1; trade >= 0; trade-- ) 
   {
       if ( OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) && (OrderType() == OP_BUY || OrderType() == OP_SELL) && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() ) 
       {
           lots1+=OrderLots();
           sum+=OrderLots()*OrderOpenPrice();
       }    
   }
   if ( lots1==0 )//на ноль делить нельзя
      return (0);
   return (sum/lots1);
}

Итак, решение о направлении торговли выбираете вы, открывая первый ордер.”УСРЕДНИТЕЛЬ” сам определит тип открытого Вами ордера (BUY или SELL) и его объем. Следующие ордера серии будут открыты с учетом объема открытого Вами ордера. При открытии первой сделки в режиме “тейк профит” уровень тейк профита можно и не устанавливать. Если он не установлен, то советник тут же выставит его самостоятельно, согласно параметру TP.

При работе в верхнем левом углу графика пары советник отображает следующую информацию:

Информация, отображаемая усреднителем

Трейдеру доступны следующие настройки:

Klots – коэффициент повышения объема каждой последующей сделки по отношению к предыдущей (разумно от 1.1 до 1.4);
regim – определяет режим работы советника: при regim = true советник работает в режиме тейк профит, а при regim = false советник работает в режиме трейлинг стоп;
TP – определяет уровень тейк профита в пунктах для режима тейк профит.
TR_Stop – определяет уровень трейлинг стоп в пунктах (теоретически от 1 до бесконечности) для режима трейлинг стоп;
PipStep – шаг между ордерами при движении цены против направления серии, в пунктах (подбирается по волатильности пары, нормально использовать в пределах от 10 до 30);
PipExp – коэффициент увеличения каждого следующего шага (при PipExp = 1 шаг будет оставаться неизменным. Например, пусть PipExp=1.2, PipStep=20. У нас есть открытый ордер. Цена идет “не в нашу сторону”: второй ордер откроется при прохождении ценой 20 пунктов, третий – 20*1.2=24 пунктов, четвертый – 20*1.2*1.2=28 пунктов, пятый – 20*1.2*1.2*1.2=34 пункта и так далее).
DrawDownPercent – допустимая просадка (расчет по свободным средствам), процентов (разумно не более 30%);
maxtrades – максимальное количество ордеров в серии (не более 10-15);
slip – максимальное отклонение от запрошенной цены, пунктов (где-то 2-3)
MagicNumber = 0 – уникальная метка ордеров серии (всегда 0 для подхвата ордеров, открытых вручную – не менять!)
MagicNumberLock – уникальная метка для локируюшего ордера.

Обращаю внимание, что параметр DrawDownPercent рассчитывается по свободным средствам, разрешенным для открытия позиций (свободная маржа счета). В терминале это значение обозначено графой “Свободно”, а не “Средства”.

Замечания:
1. Усредняющий советник можно установить только на один график (например, таймфрейм М5) выбранной валютной пары. При этом ограничений на число валютных пар нет.
2. Не допускайте разнонаправленных позиций по выбранной валютной паре, иначе получиться “каша”, которую советник не сможет усреднить. Допускается только один противоположно направленный ордер – локирующий, и тот будет открыт только советником при достижении максимально допустимой просадки.
3. Работа советника проверена у брокеров: Инстафорекс, Альпари.

Индикаторы, которыми я рекомендую пользоваться при работе с советником для определения направления (тренда) и границ движения цены:

  • MA (Moving Average – скользящая средняя) с периодами 20, 50, 200, сдвиг 0, метод MA Simple, применить к Close.
  • MACD (12, 26, 9), применить к Close.
  • BB (Bollindger Bands) период 50, сдвиг 0, отклонения 1, применить к Close.
  • Alligator – периоды 13, 8, 5, сдвиги соответственно 8, 5, 3.
  • Laguerre – gamma 0.7, CountBars 950.
  • SHI_Channel – AllBars 240, BarsForFract 0.

Не торгуйте на новостях. Помните, что техника работает при наличии хорошего тренда. Перед входом в рынок анализируйте движение цены на старших таймфреймах H4, D1. Сопоставляйте полученные данные с движением цены на младших таймфреймах. Если есть сомнения, то не входите в рынок.

Скачать советник “Усреднитель”

Скачать индикатор Laguerre

Скачать индикатор SHI_Channel

Открыть торговый счет в Alpari

При наличии небольшого опыта комфортно можно начинать торговлю у вышеуказанного брокера на любом типе счета для MT4 с депозитом желательно от 1000 USD (можно и меньше, все зависит от того, насколько сильно Вы будете растягивать серию, а на центовом счете NANO депозит счета может быть на порядок меньше) долларов, с объемом первой сделки не более 0.01 лота (опять-таки все зависит от того, насколько Вы рисковы). Применяя усредняющие системы, внимательно знакомьтесь с торговыми условиями брокера. Помните, что у большинства брокеров при закрытии торговой недели (пятница) могут существенно повышаться маржинальные требования, т.е. уменьшается кредитное плечо. Так, если на счете плавающее плечо до 1:500, то вероятно, что к закрытию торговли в пятницу оно будет не выше 1:100. Кроме того, по некоторым инструментам, независимо от кредитного плеча счета, маржинальные требования могут быть выше. Например, при плече на счете 1:500, плечо по рублевым парам может быть 1:20-1:25, а маржа по металлам 1%. Пожалуйста, учитывайте эти обстоятельства при торговле. Даже при наличии прибыльной торговой системы, Вы можете терять средства, если будете игнорировать специфику работы с кредитным плечом. Это правило относиться не только к Усреднителю на Форекс, а к любой торговой системе.

Всем желаю удачи! И помните, что лучше зарабатывать немного, но периодически, чем рассчитывать заработать много за один день.

Вы используете (использовали) усреднение на Форекс?

Просмотр результатов

Loading ... Loading ...

Если у кого-либо из читателей возникнут вопросы, то постараюсь на них ответить по мере наличия времени. Кстати, недавно для удобства общения я сделал форум, где можно обсудить многие вопросы с разбивкой по подразделам с узкой тематикой (например, тема обсуждения брокера GKFX или тема введение в программирование на MQL4 для MetaTrader), что раньше было не совсем удобно в масштабах Гостевой. Присоединяйтесь к обсуждениям, поскольку только так можно вникнуть в суть интересующего вопроса.

Материалы схожей тематики:
Поделитесь с другими:

Получать информацию о новых заметках:

Комментарии


  1. Андрей 2 3

    Добрый день! давно читаю Ваш блог, очень много полезной и нужной информации, без всякой воды и другой ерунды, расчитаной на то, чтоб собрать за обучение денег, Большое Вам СПАСИБО! Торгую по системе усреднения уже 4 года(правда не профессионально,можно сказать- учусь торговать когда есть время). На предыдущем вашем советнике “Modif_Martingale.mq4″ начал немного понимать mq4, его иногда ставил на счёт,правда немного переписал его, добавил “Коэффициент увеличения каждого следующего шага”(в этой сове Вы тоже реализовали), Так вот что я хочу предложить(я использую это в торговле, довольно таки успешно) если цена пошла “не туда” надо после “N-ного(1-3 не дальше)” плеча серии ставить хеджирующий ордер “небольшой процент от ордеров серии”(чтоб при откате в”правильную сторону” не тянуть большой лот,чтоб быстро перекрылся усреднением лотов серии) с коротким ТП (10-15 п.)-если серия идёт “не туда” через 10-15п. закрываем(берём прибыль, хоть небольшую,но прибыль)и сразу открываем следующий, но конечно если уже цена уходит очень далеко, то тогда уже полный ЛОК. Суть в том, что мы не теряем движение “не в ту сторону” и с него тоже немного имеем. Фух))
    Несколько раз пытался зарегистрироваться у Вас на сайте, но почему то письма с поролем не приходят

    • Здравствуйте. Письма с паролем не приходят, потому что проблема с доставкой писем на mail.ru, а у Вас почта именно там. Заведите почту на gmail.com и “не потеряете” ни одного письма. В крайнем случае они могут попадать в раздел СПАМ.

  2. Андрей 2 3

    Ещё хотел спросить, а Usrednitel.mq4 можно как-то оптимизировать на истории? ведь он расчитан на то что сделка уже открыта, или он аналогичен Вашему “Modif_Martingale.mq4″ , и параметры можно прать прогнав его?

    • Прогнать на истории в МТ4 не получится, поскольку советник не открывает сам первую сделку. Если хотите прогонять на истории, то придется добавить несколько строк кода, который будет открывать первую сделку по какому-либо алгоритму. Роль именно этого советника состоит в том, чтобы помогать трейдеру, имеющему опыт торговли и активно использующего усреднение.

  3. саша 3 3

    ———————-
    Если хотите прогонять на истории, то придется добавить несколько строк кода, который будет открывать первую сделку по какому-либо алгоритму.
    ———————-
    А куда? Что добавить? Напишите пожалуйста, а то мы не сильны в прогр. а потестить хочется! ) Код можно взять из 2ss.

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

      • саша 3 3

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

        • Локовая серия “на качелях” может привести к необходимости создания еще одной локовой серии, а та… еще… вплоть до слива. Так что, рано или поздно все равно придется либо зафиксировать убыток, либо дожидаться полного слива.
          Я экспериментировал ранее с подобными системами, и, должен Вам сказать, это далеко не грааль.
          Если ТС прибыльна, то в целях стабильности результата придется своевременно принимать убытки, а не ожидать глубокой просадки.

          • Еще забыл упомянуть про один такой важный момент, как величину залога. Поиграться с такими системами можно при максимально возможном кредитном плече 1:1000 – 1:2000, а это реально только на “кухонных” типах торговых счетов. О серьезном депозите можно сразу забыть. Попробуйте “провернуть” такую систему на плече 1:33 – 1:100.

  4. саша 3 3

    Закрытие первых бай и сел происходит по очереди как минимум в ноль. Думаю в этом есть потенциал ведущий как минимум к снижению посадки, при большом кол-ве усредняющих ордеров!

    ruforum.mt5.com/threads/7183-2sides-stoch?p=6131072&viewfull=1#post6131072 тут есть описание стратегии!

  5. Сергей 1 1

    Спасибо автору за советник. Хороший получается помощник при ручной торговли.Но я посоветовал доработать робота в плане трейлинга. Советник ждёт когда все ордера выдут в плёс и тогда только начинает трейлить. Результат будет лутше если трейлинг будит срабатывать при выходе прибыли в профит скажим в 25 пунктов и при этом стоплос будит выставляться в без убыток.

  6. Александр 1 1

    Здравствуйте.
    Подскажите как работает советник?
    Например, выставляю ордер 1 лот бай, тейкпрофит 20 пт, PipStep 20 пт. Цена пошла против, уходит в -20 пт и советник открывает еще ордер на бай (как обычный мартин), а я ожидал лок ордера на сейл.
    Причем второй бай уходит еще в -20 пт и опять советник открывает бай!
    Как сделать (если советник это может), чтобы советник открывал локирующие ордера по достижению просадки первого ордера, ну и последующих?

    • Александр, все эти параметры можно задавать. Во-первых, ограничив число сделок в одной серии (параметр maxtrades, если серия из одного ордера, то установить значение 1). Во-вторых, ограничив просадку, после достижения которой открывается локирующий ордер (параметр DrawDownPercent – просадка в процентах).

  7. viktoret 1 1

    Большое спасибо за подробное объяснение. Удачи.

  8. Вячеслав 12 3

    Здравствуйте .хотелось бы познакомиться с автором усреднителя и поговорить. С уважением Вячеслав.

    • Вячеслав, можно сказать, Вы с ним познакомились. Пишите тех. задание. Я посмотрю, что можно сделать.

      • Вячеслав 12 3

        Здравствуйте Владислав знаю Ваш автопилот уже давно, он мне нравится пробовал торговавть , но я не такой опытный трейдер да и психологически не очень уравновешен Я имею в виду там где нужно подождать лезу на рожен. и влетаю. Локи может созданы для меня., как то могут защитить. Давно лелеял мысль Чтобы к вашему автопилоту добавить выход из лока хотя бы стандартный да еще после закрытия по тп ордер сновав открывался в ту же сторону хотя бы с теми же параметрами. было бы интересно. У мня есть сов. немного другого принципа но там как раз заложено выход из лока и после закрытия по тп. ордер снова открывается в ту же сторону. В общем кратко это выглядит так: Открываем ордер бай с тп.50 Цена идет в сторону ордера ордер закрывается по тп и снова открывается бай с теми же параметрами, если же цена идет против ордера то через определенное колличество пунктов допустим 50 открывается лок и далее если цена продолжает идти в сторону лока то проходя настраиваемое колличество пунктов допустим тоже 50 у лока открывается положительный сл (то же настраиваемый) от1-2 пунктов + спред до больших подложительных пунктов. это если цена повернула против лока то лок закроется по сл. в плюсе если же цена только открыла лок и сразу повернула против лока , то лок закрывается по обычному сл. Обычно если цена у меня уходила в сторону лока Я сидел ждал когда она повернет и пойдет против лока чтобы вручную выставить положительный сл А потом дергался в зависимости от обстановки . Я конечно собирался сделать это , но сам не умею, А человек который для меня писал сов которая у меня есть выполнил его не качественно. Если Вы возьметесь ввести изменения в ваш сов. я Вам предоставлю мой сов. Вы из него нужное можете вставить в свой. С уважением Вячеслав.

  9. сергей 1 1

    при нажатии скачать советник Скачать советник “Усреднитель” выдаёт код в браузере как скачать?

    • В таком случае следует кликнуть на Скачать советник “Усреднитель” правой кнопкой мыши и в всплывающем меню выбрать что-то вроде “Сохранить ссылку как…”.

      сергей 02/09/2015 в 0:15:
      при нажатии скачать советник Скачать советник “Усреднитель” выдаёт код в браузере как скачать?

      И в этом случае скачать можно, если в меню своего браузера выбрать что-то вроде “Сохранить страницу как…” либо “Сохранить как…”.

  10. Сергей 1 -2

    Раньше я усреднялся и даже зарабатывал, но понимал, что это “до поры-до времени”. Смотрел на движение цены лет 5! Заметил, что на новостях можно точно входить в рынок без усреднения.

    Понял, что в эти моменты происходит что то главное, что двигает ценой. Оказывается…Объемы! Посмотрел еще чуть, чуть, подобрал данные и торгую потихоньку!

    Хотя такой гуру как трейдер Виталий Сергиенко не приветствует ловить “падающие ножи” и “взлетающие стрелы”. Но я в этом нашел свою изюминку!

    mql5.com/ru/signals/136119

  11. Валерий 2 1

    Здравствуйте Владислав, Я как сделать чтобы этот советник открывал последующие позиции по ряду Фибоначи.

    • Здравствуйте.
      По Фибоначчи будем увеличивать объем каждой последующей позиции?
      Т.е. если шагать с объема 0.01 лот, то ряд принимает вид:
      0.01, 0.01, 0.02, 0.03, 0.05, 0.08, 0.13, 0.21, 0.34, 0.55, 0.89, 1.44, 2.33, 3.77, 6.10… ?

  12. Павел 5 5

    Здравствуйте Владислав!Хотел бы спросить, как продвигается торговля по вашей теме? Удается ли контролировать усреднитель стопами, я имею ввиду закрывать самому при достижению определенного уровня? Спасибо

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

      Павел 03/10/2016 в 8:42:
      Удается ли контролировать усреднитель стопами

      Контролировать, конечно, удается, хотя, я уже давненько его не использую, да, и написал с тех пор для себя уже много-много всяких “помощников”. Так что, именно этот “экземпляр” “запылился” =) Меня сейчас интересует несколько иное направление: иные торговые тактики и стратегии.

      • Павел 5 5

        Блог 03/10/2016 в 21:01:
        В своей торговле я достаточно редко прибегаю к усреднению, предпочитая краткосрочные и среднесрочные сделки с определенными уровнями тейка и стопа. Думаю, что усреднение, по сути вышедшее из мартингейла, это не совсем верный путь для человека, который систематически посвящает некоторую часть своего времени внебиржевому рынку (форекс).

        Как же вы тогда зарабатываете? По какому критерию производился контроль, не могли бы описать Владислав? Просто я сейчас начал тестировать, да что тестировать, сразу торговать начал такой методикой и потихоньку удается прикрывать сетки с минусом при этом оставаться в плюсе..
        Насколько мне известно, подобный механизм – это единственный путь заработка на финансовых рынках. Просто каждый применяет его по-разному и контролирует соответственно. Я не знаю вас и ваши новые методы, но хочу сказать что они, как тока вы, не работоспособны… максимум, что получается это топтание на месте – быть при своих, ну возможно некоторые увеличения… но это не успешно. Хотел бы услышать ваши аргументы и опыт. Спасибо.

  13. Павел 5 5

    Блог 03/10/2016 в 21:01:
    Контролировать, конечно, удается,

    По какому критерию производился контроль, не могли бы описать Владислав? Какие предположения на долгосрок, и почему отказались?

  14. Павел 04/10/2016 в 8:01:
    По какому критерию производился контроль, не могли бы описать Владислав?

    Лично я закрывал серию сделок (сетку) при достижении определенной просадки. Это и есть критерий – правило управления рисками.

    Павел 04/10/2016 в 8:01:
    Как же вы тогда зарабатываете?

    Торгую по различным моделям, паттернам, уровням и индикаторам. Иногда на новостях. При этом отношение тейка к стопу, как правило, не меньше 2.

    Павел 04/10/2016 в 8:01:
    Просто я сейчас начал тестировать, да что тестировать, сразу торговать начал такой методикой и потихоньку удается прикрывать сетки с минусом при этом оставаться в плюсе.

    Если сетка вся закрыта в минусе, то откуда плюс появляется? Возврат спреда что ли?

    Павел 04/10/2016 в 8:01:
    Насколько мне известно, подобный механизм – это единственный путь заработка на финансовых рынках.

    Весьма спорное утверждение. Считается (математически доказано), что в долгосроке математическое ожидание подобных систем стремится к нулю. Другое дело, конечно, когда это время настанет. У кого-то быстро настает, кто-то держится дольше.

    Павел 04/10/2016 в 8:01:
    Я не знаю вас и ваши новые методы, но хочу сказать что они, как тока вы, не работоспособны… максимум, что получается это топтание на месте – быть при своих, ну возможно некоторые увеличения…

    У меня новых методов нет. Каждый старое применяет по-своему. “Топтание на месте и некоторые увеличения” – это уже положительный результат для такого рынка как форекс.
    Мой взгляд на мартингейлоподобные системы с высоты моего опыта (писал несколько торговых систем с различными вариантами для точек входа, анализировал на истории, оптимизировал и т.п.) такой. Эти системы разрабатывались для получения значительного профита за короткий промежуток времени – выстрел. Попытки снизить риски приводят к тому, что прибыльность таких систем будет сопоставима с прибыльностью классических торговых систем, и она не гарантирована в обеих случаях. При этом риски будут все же меньше во втором случае, что важно для управления торговым счетом, на котором значительный капитал. Чем больше денег, тем меньше хочется их потерять (хотя, психология трейдинга учит относиться к потерям одинаково “холодно”, независимо от размера средств).

    Павел 04/10/2016 в 8:01:
    Просто каждый применяет его по-разному и контролирует соответственно.

    Что есть, то есть. И этот “опус” (пост об усреднителе) и относился именно к тематике построения т.н. комбинированных торговых систем, с четко формализованными точками входа и выхода, управлением рисками. Т.е. это чисто техническая часть. А вторая – важная часть, управленческая, находится в голове и руках трейдера.

    Павел 04/10/2016 в 10:06:
    Какие предположения на долгосрок, и почему отказались?

    При снижении рисков (ограничение максимально допустимой просадки) прибыльность на долгосроке такой системы будет стремиться к 1. Это и есть то самое, что Вы называете “топтанием на месте”.

  15. Павел 5 5

    Блог 04/10/2016 в 19:54:
    Лично я закрывал серию сделок (сетку) при достижении определенной просадки. Это и есть критерий – правило управления рисками.

    Это и так понятно…а думал просто более гибкий контроль…

    Блог 04/10/2016 в 19:54:
    Если сетка вся закрыта в минусе, то откуда плюс появляется? Возврат спреда что ли?

    До этого заработано.

    Блог 04/10/2016 в 19:54:
    Весьма спорное утверждение. Считается (математически доказано), что в долгосроке математическое ожидание подобных систем стремится к нулю. Другое дело, конечно, когда это время настанет. У кого-то быстро настает, кто-то держится дольше.

    Да, доказано, я в прошлом году все потерял, а до этого все и заработал.. будь я грамотней в прошлый раз, прикрывал бы сетки или не давал бы расти сетки, вывел бы часть средств и был бы в плюсе.. Я просто был самонадеянным и уверен в системе. Хотя и знал, что не в чем нельзя быть уверенным…
    Вообще доказать это не возможно потому что система прибыльная на 100% если есть резиновый депозит… Или расчет произведен грамотный и система дает 5% годовых в долларах и это очень прилично.
    Мартин, усреднитель и подобные механизмы – очень разнообразны и использование тоже.. и сказать что это убыточное нельзя. Я думаю проблема в людях и убыток идет от них.
    Топтание не результат, не зарабатываете вы, зарабатывают другие, теряете вы забирают другие…Можно положить в банк- это куда надежней будет.

    Блог 04/10/2016 в 19:54:
    Попытки снизить риски приводят к тому, что прибыльность таких систем будет сопоставима с прибыльностью классических торговых систем, и она не гарантирована в обеих случаях. При этом риски будут все же меньше во втором случае, что важно для управления торговым счетом, на котором значительный капитал. Чем больше денег, тем меньше хочется их потерять (хотя, психология трейдинга учит относиться к потерям одинаково “холодно”, независимо от размера средств).

    Скорее все да, будет сопоставима… Но, не все так просто… здесь куда шире можно сделать управление, чем в классических. Возможно на первый взгляд только, ну время покажет…Лучше иметь разные торговые системы… но главное,что бы они были рабочие.Холодно относиться к потерям невозможно, в человеке это не запрограммировано природой. В книгах столько всего пишут, да так убедительно, я даже стал “боятся” их читать. Будь классика работоспособной, то любой бы зарабатывал. Зачем много думать, можно просто скачать робота, который работает четко по сигналу, то есть классика, а самому сидеть на пляже, и надеяться, ну не в этом году заработает, так в другом. Я бы тоже так хотел, но это не правда. Вход это 50/50 система роль не играет. 1:2 это просто управление капиталом, даже 1:3, 1:5… это один из методов управления и ничего больше. Единственное, что давало успех, это пересечение двух МА за 10 лет теста, но очень мизирно, и за 20 лет тоже было и тоже мизирно и не на всех парах! Вход и выход по обратному сигналу.

    Блог 04/10/2016 в 19:54:
    При снижении рисков (ограничение максимально допустимой просадки) прибыльность на долгосроке такой системы будет стремиться к 1. Это и есть то самое, что Вы называете “топтанием на месте”.

    Сколько лет вы работали по этому методу что пришли к такому окончательному выводу? Тестили?

  16. Павел 5 5

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

  17. Александр Георгиевич 1 1

    Владислав! СПАСИБО за усреднитель!!!

Ваш комментарий

Подписаться без комментирования



instaforex