[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 46

 

если вам известна функция подсчёта общего баланса убытка ЗАКРЫТЫХ позиций по SL   и  общего баланса ОТКРЫТЫХ профитных сделок, прошу написать.

Подсчёт баланса убытка нужно начинать с последнего максимального значения депозита 

 

Доброго дня!!!   У меня функция ругается сорока ругательствами-  я видно не очень знал, а ещё и забыл, как ее составлять

void  SELL { double Price1_SELL= (Bid-Dist*Point) ; double TP1_SELL=Price1_SELL-TP*Point; double SL1_SELL=Price1_SELL+SL*Point;
   
   double  Price2_SELL= (Price1_SELL -Dist*Point) ;double   TP2_SELL=Price2_SELL-TP*Point;double   SL2_SELL=Price2_SELL+SL*Point;
   
   double  Price3_SELL=(Price2_SELL -Dist*Point) ; double  TP3_SELL=Price3_SELL-TP*Point; double  SL3_SELL=Price3_SELL+SL*Point;
   
   double  Price4_SELL= (Price3_SELL -Dist*Point) ; double  TP4_SELL=Price4_SELL-TP*Point; double  SL4_SELL=Price4_SELL+SL*Point;
   
   double  Price5_SELL= (Price4_SELL -Dist*Point) ;double   TP5_SELL=Price5_SELL-TP*Point; double  SL5_SELL=Price5_SELL+SL*Point;}
 
Dimka-novitsek:

Доброго дня!!!   У меня функция ругается сорока ругательствами-  я видно не очень знал, а ещё и забыл, как ее составлять

 


Диман! Доброй ночи! Отдохнуть тебе надо, ибо не функцию, но какую-то херню написал... 

 
Так я же говорю, что не помню.  Я в нее допишу. Ордерсенды. Компилятору-то что не нравится?
 
Dimka-novitsek:
Так я же говорю, что не помню.  Я в нее допишу. Ордерсенды. Компилятору-то что не нравится?

Так ф-ии не пишутся. Читай учебник.

 
Спасибо!! Читаю.
 
А. Скобок ей не хватало!
 

Здравствуйте! Советник выставляет отложенные стопы. При проверке в тестере работает только SELL_STOP, вместо BUY_STOP  появляется ошибка Order Send error/ Error opening Buy order:130.

 

extern int TrailingStop=30;
//-----------------------------------------------------------------------------------------------+
for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELLSTOP &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if(Bid-OrderOpenPrice()>Point*TrailingStop)
                  {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
                     return(0);
                    }
              }
           }
         else // go to short position
           {
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
                     return(0);
                    }
              }
           }
        }
     }

   
   return(0);

 Помогите найти причину!

 

Причина в отсутствии логики!

for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELLSTOP &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
Как понять? Если СЕЛЛСТОП, то БАЙ при чём тут?
 
Twilight:

А как узнать что последних 1-2-3 ордера были убыточные?

И вообще как узнать какой последний ордер был?


Недавно писал функцию, которая в случае последнего убыточного ордера, возвращает тип этого ордера. Т.е. если fHistory() == 0, последний убыточный ордер у нас был Buy,  fHistory() == 1,  последний убыточный ордер был Sell. Если нужно отслеживать прибыльные, тогда поменять в строке знак таким образом: if(OrderProfit() > 0 ). 

//+----------------------------------------------------------------------------+
// Прибыльно или убыточно закрылся последний ордер, и возврат типа такого ордера
int fHistory(){
  for(int i=OrdersHistoryTotal(); i >= 0; i--){              // Выборка в истории
     if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true){   // Если есть следующий в истории
        if(OrderMagicNumber()!=magN) continue;               // Ордера не нашего эксперта
        if(OrderProfit() < 0 ) return (OrderType());         // Если убыток по посл.ордеру вернем тип ордера
     }
  }
  return(-1);
}

 Переменная  magN - Magic ордера, объявленная на глобальном уровне.