Советники: Сетка ордеров - страница 2

 

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

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

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

 
260593LV:

Идея интересная, но требует доработок. Например, утверждение, что "Если уровень ADX ниже 40, то считаем, что флет и выставляются лимитные ордеры, если выше, то стоповые" очень сомнительно. Поведение индикатора ADX и его параметра ADX не однозначно и значение этого параметра большего значения не имеет и тем более не указывает на флет или тренд. Скорее быстрый рост параметра АДХ говоит о быстром изменении цены вниз или вверх. Поскольку параметр АДХ -это является абсолютной (по модулю) разницей между линиями +/-DI, поэтому, чем больше расхождение линий +/-DI, тем больше значение ADX. Автор выбрал размер параметра АДХ = 40 для установки тех или иных ордерв. Думаю это не совсем правильно. Я некоторое время назад увлекся индикатор АДХ и пытаюсь разобраться с его сигналами, есть некоторые предположения на этот счет. Если автору интересно улучшить советник, то можно вместе подумать об этом. К тому же, по-моему одного АДХ не достаточно для получения более достоверных сигналов. А пока советник приличную часть времени будет проводить просадках.

Согласен полностью, но если просадка не более 10-15% для меня не страшно..... Коэффициент Кальмара около единицы при такой просадке - очень даже не плохой результат....
 
260593LV:

Идея интересная, но требует доработок. Например, утверждение, что "Если уровень ADX ниже 40, то считаем, что флет и выставляются лимитные ордеры, если выше, то стоповые" очень сомнительно. Поведение индикатора ADX и его параметра ADX не однозначно и значение этого параметра большего значения не имеет и тем более не указывает на флет или тренд. Скорее быстрый рост параметра АДХ говоит о быстром изменении цены вниз или вверх. Поскольку параметр АДХ является абсолютной (по модулю) разницей между линиями +/-DI, поэтому, чем больше расхождение линий +/-DI, тем больше значение ADX. Автор выбрал размер параметра АДХ = 40 для установки тех или иных ордерв. Думаю это не совсем правильно. Я некоторое время назад увлекся индикатором АДХ и пытаюсь разобраться с его сигналами, есть некоторые предположения на этот счет. Если автору интересно улучшить советник, то можно вместе подумать об этом. К тому же, по-моему одного АДХ не достаточно для получения более достоверных сигналов. А пока советник приличную часть времени будет проводить в просадках.


По-моему, если использовать индикаторы и МТС, то от них должна быть польза. Желательно, чтобы МТС могла заменить трейдера по масимуму, поэтому сигнал на открытие ордера должен быть как можно достовернее и надежнее. Точнее, по сигналу индикаторов цена должна пройти определенное количество пунктов для получения прибыли. Но поскольку цена имеет склонность делать откаты, то их тоже можно использовать во благо, если открывать ордера с увеличенным объемом через некий не фиксированный промежуток пунктов. Дальнейшее закрытие ордеров можно осуществить по усредненному ТР вместо сетки. Проверте личную почту.
 
rusa:

Вопрос к автору.Уменя в торговле осталось два ордера остальные советник удалил. И перестал устанавливать отложенные ордера.Пришлось закрыть вручную чтобы начал работать сначало.Может просТо не успел удалить ордера ? Посмотрите почему это произошло.СПАСИБО.


Как я писал в аннотации к советнику - он не защищен от проблем дилингового центра. Просто ордера, которые были в рынке не закрылись (в журнале наверняка написано,что или "Сервер занят" или "Торговый поток занят"), отложенники при этом всегда удаляются без проблем.

 
Вы не могли бы подсказать как поменять в коде чтобы закрытие было первым ордеров в торговле, а потом отложенных ордеров.Не успевает закрыть с профитом.СПАСИБО.
 
rusa:
Вы не могли бы подсказать как поменять в коде чтобы закрытие было первым ордеров в торговле, а потом отложенных ордеров.Не успевает закрыть с профитом.СПАСИБО.


Честно говоря, полностью от этой проблемы не избавиться. Поэтому на полном автомате работаю только ночью (ставлю в настройках время работы с 1 до 6 и баиньки). А днем всегда ручки, советник просто в помощь...

Днем на быстроменяющемся рынке применяю обычно такой прием: после установки советником сетки, я руками ставлю тейк-профит для открытого ордера примерно на 1-2 пункта выше, запланированной прибыли. Главное нужно быть внимательным, и если зацепили стоповый ордер, то быстренько убираем тейк-профит.

 

Вот смотрите: это цикл для закрытия ордеров (только один цикл) ( Начинается с for(.....) ):

   if(OrdersTotal()>0)
     {
      Comment("Balance  ",AccountBalance(),"\nEquity  ",AccountEquity(),"\n  Profit  ",OrdersProfit());
      if(OrdersProfit()>=ProfitClose)
        {
         for(int i=OrdersTotal()-1;i>=0;i--)
           {
            //  bool error=true;
            OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
            if(OrderType()==OP_BUY)
              {
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Blue);
               //   error=false;
              }
            if(OrderType()==OP_SELL)
              {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
               //  error=false;
              }
            Sleep(1000);
            if(OrderType()>1) OrderDelete(OrderTicket());
           }
        }
     }

А вот: два цикла закрытия ордеров, сначала один, а потом второй, который закроет оставшиеся ордера.

   if(OrdersTotal()>0)
     {
      Comment("Balance  ",AccountBalance(),"\nEquity  ",AccountEquity(),"\n  Profit  ",OrdersProfit());
      if(OrdersProfit()>=ProfitClose)
        {
         for(int i=OrdersTotal()-1;i>=0;i--)
           {
            //  bool error=true;
            OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
            if(OrderType()==OP_BUY)
              {
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Blue);
               //   error=false;
              }
            if(OrderType()==OP_SELL)
              {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
               //  error=false;
              }
            Sleep(1000);
            if(OrderType()>1) OrderDelete(OrderTicket());
           }
         RefreshRates();
         for(i=OrdersTotal()-1;i>=0;i--)
           {
            //  bool error=true;
            OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
            if(OrderType()==OP_BUY)
              {
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Blue);
               //   error=false;
              }
            if(OrderType()==OP_SELL)
              {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
               //  error=false;
              }
            Sleep(1000);
            if(OrderType()>1) OrderDelete(OrderTicket());
           }
        }
     }

Думаю это решит вопрос об остающихся ордерах (которые советник не смог с лёту закрыть). Найдите первый кусок кода в тексте советника и замените его не второй.

 
lukas1:

Вот смотрите: это цикл для закрытия ордеров (только один цикл) ( Начинается с for(.....) ):

  
     
             
           


Сделала как сказали,а компиляция не проходит.

' ' - variable not defined C:\Program Files\MetaTrader Admiral Markets AS\experts\Proffessor_v1_2011[1].mq4 (150, 10)


 
lukas1:

Вот смотрите: это цикл для закрытия ордеров (только один цикл) ( Начинается с for(.....) ):

   if(OrdersTotal()>0)
     {
      Comment("Balance  ",AccountBalance(),"\nEquity  ",AccountEquity(),"\n  Profit  ",OrdersProfit());
      if(OrdersProfit()>=ProfitClose)
        {
         for(int i=OrdersTotal()-1;i>=0;i--)
           {
            //  bool error=true;
            OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
            if(OrderType()==OP_BUY)
              {
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Blue);
               //   error=false;
              }
            if(OrderType()==OP_SELL)
              {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
               //  error=false;
              }
            Sleep(1000);
            if(OrderType()>1) OrderDelete(OrderTicket());
           }
        }
     }

А вот: два цикла закрытия ордеров, сначала один, а потом второй, который закроет оставшиеся ордера.

   if(OrdersTotal()>0)
     {
      Comment("Balance  ",AccountBalance(),"\nEquity  ",AccountEquity(),"\n  Profit  ",OrdersProfit());
      if(OrdersProfit()>=ProfitClose)
        {
         for(int i=OrdersTotal()-1;i>=0;i--)
           {
            //  bool error=true;
            OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
            if(OrderType()==OP_BUY)
              {
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Blue);
               //   error=false;
              }
            if(OrderType()==OP_SELL)
              {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
               //  error=false;
              }
            Sleep(1000);
            if(OrderType()>1) OrderDelete(OrderTicket());
           }
         RefreshRates();
         for(i=OrdersTotal()-1;i>=0;i--)
           {
            //  bool error=true;
            OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
            if(OrderType()==OP_BUY)
              {
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Blue);
               //   error=false;
              }
            if(OrderType()==OP_SELL)
              {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
               //  error=false;
              }
            Sleep(1000);
            if(OrderType()>1) OrderDelete(OrderTicket());
           }
        }
     }

Думаю это решит вопрос об остающихся ордерах (которые советник не смог с лёту закрыть). Найдите первый кусок кода в тексте советника и замените его не второй.


В реале всёравно не будит успевать закрывать все ордера, надо ставить текпрофит.
 

         


  
    
         
          
          
          
            
           



В реале всёравно не будит успевать закрывать все ордера, надо ставить текпрофит.



  


   
           
           
            
           
             
     



В реале всёравно не будит успевать закрывать все ордера, надо ставить текпрофит
Просто ставлю мало отложенных ордеров вот здесь MAX_Lines =. Тогда всё успевает закрывать по тейк профиту. Проблема решена. Всем удачи!!!!!!!