Trailing Stop без ордеров - страница 2

[Удален]  
у меня не работает
[Удален]  
еще сходите сюда, тут полный набор и с кодом
 
А, собственно в чём смысл такого трала? Ну запомнил советник некий уровень, по достижении которого он должен отдать приказ на сервер о закрытии позиции. Что дальше произойдёт в реальности? Цена достигла этого уровня, советник отдал приказ серверу, и пока сервер обрабатывал этот приказ, пришли новые котировки. В силу того, что в советнике были правильно прописаны параметры проскальзывания, сделка закрылась с отклонением от запрошенной цены. Практика показывает, что ордера закрываются при отклонении цены в худшую сторону. Что в результате? А в результате увеличенный убыток по счёту. Пусть не большой, но! Маленьие ручейки потихоньку стекаются в большие реки!
Ситуация другая. Рынок настолько активен, что проскальзывания не хватило для закрытия позы. В результате и ордер не закрыт и цена уже уехала от точки закрытия ордера и советник видит, что опоздал с закрытием и не отдаёт повторного приказа. Результат - поза поехала в минус.
В чём смысл-то?
Если бы приказ лежал как у нормального  треала, на сервере, то ордер был бы закрыт по стопу как положенно.
[Удален]  
sashasan >>:
еще сходите сюда, тут полный набор и с кодом

За это спасибо

" Практика показывает, что ордера закрываются при отклонении цены в худшую сторону. "
это зависит от дц

Хорошо пусть так, просто может кто нибудь понять почему оно не работает? =) хочу докопаться до своей ошибки.

void VirtualTrailingStop() //------------------------------ Виртуальный Трэйлинг стоп ------------
  {
    for(int i=0;i<OrdersTotal();i++)   
    {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
 
      
      
      if (OrderType()==OP_BUY)
      {
        if((Bid-OrderOpenPrice())>=(TS*Point) && (Bid-TS*Point)>TrailStop) //почему эта часть выполняется
        {
          TrailStop=(Bid-Point*TS);
          return(0);
        }
        if (TrailStop==Bid || TrailStop==Bid-1 || TrailStop==Bid+1) // а эта нет, нормальное же условие
        {
          Print("закрываемся");
          while (OrdersTotal()>0)
          {
            OrderSelect(0,SELECT_BY_POS);
            OrderClose(OrderTicket(),Lot,Bid,3,Green);
            TrailStop=0;
          }        
        }
      }
      
      
      
      
      if (OrderType()==OP_SELL)
      {
        if((OrderOpenPrice()-Ask)/Point>=(TS) && (Ask+TS*Point)<TrailStop)
        {
          TrailStop=(Ask+Point*TS);
          return(0);
        }
        if (TrailStop==Ask || TrailStop==Ask-1 || TrailStop==Ask+1)
        {
          Print("закрываемся");        
          while (OrdersTotal()>0)
          {
            OrderSelect(0,SELECT_BY_POS);
            OrderClose(OrderTicket(),Lot,Ask,3,Red);
            TrailStop=0;            
          }        
        }
      }
    }
  }
[Удален]  
или почему не работает это:
void TrailingStop() //------------------------------------------------- Трэйлинг стоп ------------
  {
    if(TS==0) return;
    for(int i=0;i<OrdersTotal();i++)   
    {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);


      if (OrderType()==OP_BUY)
      {
        if( (Bid-OrderOpenPrice()) >=((TS+10)*Point) )
        {
          OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TS,OrderClosePrice(),0,Yellow);
          return(0);
        }
      }


      if (OrderType()==OP_SELL)
      {
        if((OrderOpenPrice()-Ask) >=((TS+10)*Point) )
        {
          OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TS,OrderClosePrice(),0,Purple);
          return(0);
        }
      }


    }
  }
я уже хочу биться об стену. все же правильно! ошибка 130, типа кривой лось, я в отчаяньи.
 
sergentum >>:
или почему не работает это:
я уже хочу биться об стену. все же правильно! ошибка 130, типа кривой лось, я в отчаяньи.

Почитайте этот раздел, а также надо проверять стопы на соответствие параметру

MODE_STOPLEVEL 14 Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах


TrailStop==Bid+1

Тут Вы имели ввиду, наверное:

TrailStop==Bid+1*Point
[Удален]  
Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах

ну не может он быть больше 15, как бы там ни было. руками стоп ставится меньше 10
 
sergentum >>:
Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах

ну не может он быть больше 15, как бы там ни было. руками стоп ставится меньше 10

Стоп должен быть нормализован по Digits.

[Удален]  
дописал я. результатом недоволен. т.е. работать то работает, но с моей тс по средним толку немного на флэте.
 
sergentum >>:
дописал я. результатом недоволен. т.е. работать то работает, но с моей тс по средним толку немного на флэте.

Ну, батенька, а Вы что, хотели грааль получить ? Впереди ещё много разочарований. Вопрос был, как я понимаю по коду. Сейчас ошибки выдаёт ? Если есть, то какие. Это к торговой системе не относится.