Помогите разбраться - страница 2

 
Доброго времени суток. У меня этот эксперт при компиляции выдает ошибки: 'isExpertPosition' - expression on global scope not allowed 'isExpertPosition' - variable not defined '{' - expression on global scope not allowed '}' - unbalanced parentheses подскажите, что нужно исправить
 
Miron писал (а):
Доброго времени суток. У меня этот эксперт при компиляции выдает ошибки: 'isExpertPosition' - expression on global scope not allowed 'isExpertPosition' - variable not defined '{' - expression on global scope not allowed '}' - unbalanced parentheses подскажите, что нужно испра
Composter писал: "ps: код не проверял, могут быть опечатки ;)"
Как оказалось, он был прав и в его код пробралась лишняя скобка (выделена красным), после ее удаления все ОК ;) !
extern double Lots         = 0.1;
extern int    StopLoss     = 30;   
extern int    Slippage     = 10;
extern int    TrailingStop = 30;
void start()
    {
int lastpos = -1; bool isExpertPosition = false;
    for (int g=OrdersTotal()-1; g>=0; g--)
    {
    if (OrderSelect(g, SELECT_BY_POS, MODE_TRADES))
      {
      if (OrderSymbol()==Symbol())
         {
         if (OrderType()==OP_BUY)
            {
               TrailingStop();
               isExpertPosition = true;
               lastpos = OP_BUY;
            }
         if (OrderType()==OP_SELL)      
            {
               TrailingStop();
               isExpertPosition = true;
               lastpos = OP_SELL;
               }
            }         
        }
      }
    }
  if ( !isExpertPosition )
  {
    if ( lastpos == OP_BUY )
    {
        double pp1 = MarketInfo(Symbol(),MODE_POINT);
        double pBid = MarketInfo(Symbol(),MODE_BID);
        OrderSend(Symbol(),OP_SELL,Lots,pBid,Slippage,pBid+StopLoss*pp1,0,"",0,0);  
    }
    if ( lastpos == OP_SELL )
   {              
        double pp2 = MarketInfo(Symbol(),MODE_POINT);
        double pAsk = MarketInfo(Symbol(),MODE_ASK);
        OrderSend(Symbol(),OP_BUY,Lots,pAsk,Slippage,pAsk-StopLoss*pp2,0,"",0,0);              
    }
   }
  }
void TrailingStop()
  {
  for (int j=OrdersTotal()-1; j>=0; j--)
    {
    if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES))
      {
      if (OrderSymbol()==Symbol())
        {
        double pp = MarketInfo(Symbol(),MODE_POINT);
        double pAsk1 = MarketInfo(Symbol(),MODE_ASK);
        double pBid2 = MarketInfo(Symbol(),MODE_BID);
        if (OrderType()==OP_BUY)
          {
          if (pAsk1-OrderStopLoss()<TrailingStop*pp)
          continue;
          else
          double b = pAsk1-TrailingStop*pp;
          OrderModify(OrderTicket(),OrderOpenPrice(),b,OrderTakeProfit(),0,CLR_NONE);                   
          }       
        if (OrderType()==OP_SELL)
          {
          if (OrderStopLoss()-pBid2<TrailingStop*pp)
          continue;
          else             
          double d = pBid2+TrailingStop*pp;
          OrderModify(OrderTicket(),OrderOpenPrice(),d,OrderTakeProfit(),0,CLR_NONE);         
          }
        }
      }
    }
  }