| 这个EA会自动平掉一部分仓位,明明已经FALSE了,但是没用。请教一下,需要添加啥才能禁止它自动平掉一部分仓位? 
 
 //+------------------------------------------------------------------+
 //|                     自动止损、止盈、盈利后移动止损、分批出场.mq4 |
 //|                                      Copyright ?2009, 龙德而隐者 |
 //|                                                                  |
 //+------------------------------------------------------------------+
 //#property copyright "Copyright 2009 by 龙德而隐者"
 //#property link      "http://www.metaquotes.net/"
 extern string 自动止损参数="-----";
 extern bool AutoStoploss=True;
 extern double stoploss= 300;
 extern string 自动止盈参数="-----";
 extern bool AutoTakeProfit=True;
 extern double takeprofit=150;
 extern string 盈利后移动止损="-----";
 extern bool AutoTrailingStop=True;
 extern double TrailingStop = 300;
 extern string 分次离场参数="按比例分步撤退";
 extern bool Gradually = False;
 extern int GraduallyNum = 3;
 double OriginalLot;
 //+------------------------------------------------------------------+
 //| expert start function                                            |
 //+------------------------------------------------------------------+
 int start()
 {
 for(int cnt=0;cnt<OrdersTotal();cnt++)
 {
 if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
 {
 
 if(OrderSymbol()==Symbol())
 {
 double stp=OrderStopLoss();
 double tpt=OrderTakeProfit();
 double OpenPrice = OrderOpenPrice();
 
 if (OriginalLot == 0)
 {
 OriginalLot=OrderLots();
 }
 
 
 if(OrderType()==OP_BUY)
 {
 CraduallyBuy ();
 if (AutoStoploss && AutoTakeProfit && stp==0 && tpt==0)
 OrderModify(OrderTicket(),OrderOpenPrice(),Ask-Point*stoploss,Ask+Point*takeprofit,0,Green);
 else
 {
 if (AutoStoploss && stp==0)
 {
 OrderModify(OrderTicket(),OrderOpenPrice(),Ask-Point*stoploss,OrderTakeProfit(),0,Green);
 }
 
 if (AutoTakeProfit && tpt==0)
 {
 OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Ask+Point*takeprofit,0,Green);
 }
 
 
 if (AutoTrailingStop  && ((Bid - OpenPrice) > Point*TrailingStop))
 {
 if((Bid-stp)>TrailingStop*Point )
 OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
 }
 }
 }
 
 if(OrderType()==OP_SELL)
 {
 CraduallySell ();
 if (AutoStoploss && AutoTakeProfit && stp==0 && tpt==0)
 OrderModify(OrderTicket(),OrderOpenPrice(),Bid+Point*stoploss,Bid-Point*takeprofit,0,Green);
 else
 {
 if (AutoStoploss && stp==0)
 {
 OrderModify(OrderTicket(),OrderOpenPrice(),Bid+Point*stoploss,OrderTakeProfit(),0,Green);
 }
 if (AutoTakeProfit && tpt==0)
 {
 OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Bid-Point*takeprofit,0,Green);
 }
 
 if(AutoTrailingStop  && ((OpenPrice-Ask) > Point*TrailingStop ))
 {
 if((stp-Ask)>TrailingStop*Point)
 OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Green);
 }
 }
 }
 
 }
 }
 else
 {
 OriginalLot=0;
 }
 
 }
 }
 
 
 
 
 
 void CraduallyBuy ()
 {
 double OpenPrice = OrderOpenPrice();
 double lot=OrderLots();
 
 for (int yi=1;yi<=GraduallyNum;yi++)
 {
 if (NormalizeDouble((Bid - OpenPrice)/Point,0) == NormalizeDouble(TrailingStop/GraduallyNum*yi,0))
 {
 
 if  (lot != NormalizeDouble(OriginalLot*(1-yi/GraduallyNum),2))
 {
 OrderClose(OrderTicket(),NormalizeDouble(OriginalLot/GraduallyNum,2),Bid,3,CLR_NONE);
 }
 
 }
 }
 }
 
 
 
 void CraduallySell ()
 {
 double OpenPrice = OrderOpenPrice();
 double lot=OrderLots();
 
 for (int yi=1;yi<=GraduallyNum;yi++)
 {
 if (NormalizeDouble((OpenPrice - Ask)/Point,0) == NormalizeDouble(TrailingStop/GraduallyNum*yi,0))
 {
 
 if  (lot != NormalizeDouble(OriginalLot*(1-yi/GraduallyNum),2))
 {
 OrderClose(OrderTicket(),NormalizeDouble(OriginalLot/GraduallyNum,2),Ask,3,CLR_NONE);
 }
 
 }
 }
 
 }
 
 
 
 |