Скачать MetaTrader 5

ОШИБКИ ПРИ КОМПИЛЯЦИИ - страница 2

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
xektor68
98
xektor68  
ktest0:

Да, и еще - уберите все ";" после условий...

if (OT==OP_SELL); - не правильно

if (OT==OP_SELL) - правильно 

УБРАЛ И  ВСЕ ТОЖЕ ПОЛУЧАЕТСЯ:'\end_of_program' - unbalanced left parenthesis C:\Program Files\BenchMark MetaTrader 4\experts\cm_EA News.mq4 (112, 1)
xektor68
98
xektor68  
ktest0:

И после всех параметров циклов то-же уберите ";"...

Код слишком аккуратный... ))) 

УБРАЛ  -   ВСЕ РАВНО ТАКОЕ ЖЕ ОПЯТЬ!'\end_of_program' - unbalanced left parenthesis C:\Program Files\BenchMark MetaTrader 4\experts\cm_EA News.mq4 (112, 1)
ktest0
631
ktest0  

Короче - синтаксис - полный песец...

Все пересмотреть нафиг... 

            if (OT==OP_BUYSTOP)  (PriceB=OOP; TicketB=OrderTicket();     

Ну что это за блин?!  ^^^^^^^^^^^^^^^^^^^^^^^^^^

Vadim Zhunko
5226
Vadim Zhunko  

Так компилируется:

extern int     Stoploss             = 0,     //стоплосс, если 0 то не изменяется
                   Takeprofit           = 0;     //тейкпрофит, если 0 то не изменяется
extern int     TrailingStop         = 3;     //длинна тралла, если 0 то нет тралла
extern int     TrailingStart        = 1;      //когда включать тралл, например после достижения 40 п прибыл
extern int     StepTrall            = 1;      //шаг тралла - перемещать стоплосс не ближе чем StepTrall
extern int     Magic                = 77;     //магик
extern int     Step                 = 10;     //расстояние от цены
extern double  Lot                  = 0.03;
extern int     slippage             = 30;     //Максимально допустимое отклонение цены для рыночных ордеров (ордеров на покупку или продажу).
//--------------------------------------------------------------------
int  STOPLEVEL;
//--------------------------------------------------------------------
int start()                                  
{
   STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
   double OSL,StLo,PriceB,PriceS,OOP,SL,TP;
   int b,s,TicketB,TicketS,OT,Order;
   for (int i=0; i<OrdersTotal(); i++)
   {    
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
         if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
         { 
            OT = OrderType(); 
            OSL = NormalizeDouble(OrderStopLoss(),Digits);
            OOP = NormalizeDouble(OrderOpenPrice(),Digits);
            SL=OSL;
            if (OT==OP_BUY)     
            {  
               b++;
               if (Order==OP_BUY && Bid+5*Point<OOP)
               {
               
//                  if(OrderSend(Symbol(),OP_SELL,Lot*1,NormalizeDouble(Bid-5*Point,Bid + Takeprofit*Point,Digits,slippage,0,0,"",Magic,0,Red)!=-1) return; // Здесь до фига ошибок!
               }
              
               if (TrailingStop>=STOPLEVEL && TrailingStop!=0 && (Bid - OOP)/Point >= TrailingStart)
               {
                  StLo = NormalizeDouble(Bid - TrailingStop*Point,Digits); 
                  if (StLo>=OOP && StLo > OSL+StepTrall*Point) SL = StLo;
               }
               
               if (SL > OSL)
               {  
                  if (!OrderModify(OrderTicket(),OOP,SL,TP,0,White)) Print("Error ",GetLastError(),"   Order Modify Buy   SL ",OSL,"->",SL);
                  else Print("Order Buy Modify   SL ",OSL,"->",SL);
               }
            }                                         
            if (OT==OP_SELL)
            {
               s++;
               if (Order==OP_SELL && Ask-5*Point>OOP)
               {
//                  if(OrderSend(Symbol(),OP_BUY,Lot*1,NormalizeDouble(Ask+5*Point,Ask - TrailingStop*Point,Digits),slippage,0,0,"",Magic,0,Blue)!=-1) return; // Здесь до фига ошибок!
               }
               
               if (TrailingStop>=STOPLEVEL && TrailingStop!=0 && (OOP - Ask)/Point >= TrailingStart)
               {
                  StLo = NormalizeDouble(Ask + TrailingStop*Point,Digits); 
                  if (StLo<=OOP && (StLo < OSL-StepTrall*Point || OSL==0)) SL = StLo;
               }
               
               if ((SL < OSL || OSL==0) && SL!=0)
               {  
                  if (!OrderModify(OrderTicket(),OOP,SL,TP,0,White)) Print("Error ",GetLastError(),"   Order Modify Sell   SL ",OSL,"->",SL);
                  else Print("Order Sell Modify   SL ",OSL,"->",SL);
               }
            } 
//            if (OT==OP_BUYSTOP)  (PriceB=OOP; TicketB=OrderTicket(); // Что это?
            if (OT==OP_SELLSTOP)// (PriceS=OOP; TicketS=OrderTicket(); // А это?
            {
               if (b+TicketB==0)
               {
                  if (Stoploss>=STOPLEVEL && Stoploss!=0) SL = NormalizeDouble(Bid - Stoploss * Point,Digits); else SL=0;
                  if (Takeprofit>=STOPLEVEL && Takeprofit!=0) TP = NormalizeDouble(Ask + Takeprofit * Point,Digits); else TP=0;
//                  if (OrderSend(Symbol(),OP_BUYSTOP,Lot,NormalizeDouble(Ask+Step * Point,Digits),slippage,SL,TP,"news",Magic,0,CLR_NONE)!=-1); // Не понятно. Зачем условие?
               }
    
               if (s+TicketS==0)
               {
                  if (Stoploss>=STOPLEVEL && Stoploss!=0) SL = NormalizeDouble(Ask + Stoploss * Point,Digits); else SL=0;
                  if (Takeprofit>=STOPLEVEL && Takeprofit!=0) TP = NormalizeDouble(Bid - Takeprofit * Point,Digits); else TP=0;
//                  if (OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid - Step * Point,Digits),slippage,SL,TP,"news",Magic,0,CLR_NONE)!=-1); // Тоже не понятно. Зачем условие?
               }
            }
        }
     }
   }
 }
С ошибками сами разбирайтесь. Не понимаю, что там и зачем.
xektor68
98
xektor68  
ktest0:

Короче - синтаксис - полный песец...

Все пересмотреть нафиг... 

            if (OT==OP_BUYSTOP)  (PriceB=OOP; TicketB=OrderTicket();     

Ну что это за блин?!  ^^^^^^^^^^^^^^^^^^^^^^^^^^

НУ  Я ПЕРЕПИСАЛ И ЗДЕСЬ ТОЖЕ НЕ ЗНАЮ ЧТО ТАКОЕ ПОЛУЧАЕТСЯ.
ktest0
631
ktest0  
XEKTOR68:
НУ  Я ПЕРЕПИСАЛ И ЗДЕСЬ ТОЖЕ НЕ ЗНАЮ ЧТО ТАКОЕ ПОЛУЧАЕТСЯ.


Через ж... написано - через ж... будет работать...

Надо не переписывать, а понимать что это.

И главное - зачем... 

xektor68
98
xektor68  
ktest0:


Через ж... написано - через ж... будет работать...

Надо не переписывать, а понимать что это.

И главное - зачем... 

БУДЕМ УЧИТСЯ! НУ СПАСИБО ВСЕМ! ВСЕ РАВНО НЕ РАЗОБРАЛСЯ ,ИДЕМ ДАЛЬШЕ! ПОКА!
ruslan
724
ruslan  
double MarketInfo( string symbol, int type)  почему у тебя стоплевэл  int а не double ?
 
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий