欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]能帮金字塔吗?

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2313人关注过本帖树形打印复制链接

主题:[求助]能帮金字塔吗?

帅哥哟,离线,有人找我吗?
金融游戏神通
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:39 积分:0 威望:0 精华:0 注册:2016/10/13 13:28:08
[求助]能帮金字塔吗?  发帖心情 Post By:2017/12/11 22:19:58    Post IP:183.53.65.119[只看该作者]

//+------------------------------------------------------------------+
//|                    Ninja Tutle - System2 - (fixed lots) Beta.mq4 |
//|                             Copyright ?2006, Mikhail Veneracion |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright ?2006, Mikhail Veneracion"
#property link      ""

extern double
         开仓手数                 = 0.1;   // 指定要交易的固定批量,autolotsize必须是false

extern int
         最大持仓单子个数             = 3,     //每货币对交易的最大单位
         EA识别码          = 11282,
         挂单多少个k线内高地价        = 55,    //计算漏钢价格时的k线图
         出场多少个k高低点         = 20,    //计算退出点时的回溯
         ATR周期            = 20;
extern double        
         止损倍数           = 2.5,   //用这个乘数来计算stoploss
         入场倍数ATR      = 0.5;   //通过此来计算重新进入点的倍数ATR
extern bool
         ATR保护         = false;  //如果设置为truesl将被移动到偶数级别
extern double        
         ATR保护参数_倍数    = 2.5;
extern bool
         启动盈利保护           = true;
extern double
         盈利保护_启动点数       = 50,   //$ 开始锁定的金额
         盈利保护_百分比        = 30;

//-------------------GLOBAL VARS
bool
         Revenge              = false;
double
         RevengeSL            = 3;             


static int
         TimeFrame;


double   LastEMAX,
         LastEMIN,
         LastXMAX,
         LastXMIN,
         LastOpen,
         PTLocked,
         PTPercent,
         spread,
         tickvalue,
         LastSL;
double
         EMAX,
         EMIN,
         trueEMAX,
         trueEMIN,
         XMAX,
         N,
         XMIN;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
        
int init()
  {

//----------------------- GENERATE MAGIC NUMBER AND TICKET COMMENT
//----------------------- SOURCE : PENGIE
   EA识别码    = subGenerateMagicNumber(EA识别码, Symbol(), Period());
   tickvalue = MarketInfo(Symbol(),MODE_TICKVALUE);
   subPrintDetails();
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {

//----------------------- PREVENT RE-COUNTING WHILE USER CHANGING TIME FRAME
//----------------------- SOURCE : CODERSGURU
   TimeFrame=Period();
   return(0);

   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//-----------------SET VARIABLE VALUES
   int Ehighest_bar=Highest(NULL, 0, MODE_HIGH, 挂单多少个k线内高地价, 1);
   EMAX=NormalizeDouble (iHigh(NULL, 0, Ehighest_bar),Digits);

   int Elowest_bar=Lowest(NULL, 0, MODE_LOW, 挂单多少个k线内高地价, 1);
   EMIN=NormalizeDouble (iLow(NULL, 0, Elowest_bar),Digits);

   int Xhighest_bar=Highest(NULL, 0, MODE_HIGH, 出场多少个k高低点, 1);
   XMAX=NormalizeDouble (iHigh(NULL, 0, Xhighest_bar),Digits);

   int Xlowest_bar=Lowest(NULL, 0, MODE_LOW, 出场多少个k高低点, 1);
   XMIN=NormalizeDouble (iLow(NULL, 0, Xlowest_bar),Digits);
  
   N = NormalizeDouble ((iATR(NULL,0,20,1)),Digits);
   LastOpen = subLastOpenPrice();
   LastSL = subLastSLPrice();
   tickvalue = MarketInfo(Symbol(),MODE_TICKVALUE);
   subPrintDetails();
   spread = MarketInfo(Symbol(),MODE_SPREAD);
  
  // Unit=(AccountBalance()/100/N/Point*MarketInfo(Symbol(),MODE_TICKVALUE));
   double BStopLossLevel, SStopLossLevel;
 int BuyStopOrder = 0, SellStopOrder = 0, BuyOrder = 0, SellOrder = 0;
 int _GetLastError = 0, _OrdersTotal = OrdersTotal();
   double NSL = NormalizeDouble( N*RevengeSL, Digits );
 
//-----------------TRAILING TOTAL PROFITS WITH REVENGE
if(启动盈利保护)
   {
    
      PTPercent = NormalizeDouble(subPipProfitTotal()*(盈利保护_百分比/100),0);
     
      if(subPipProfitTotal()>盈利保护_启动点数)
      {
         if(PTPercent>PTLocked)
         {
            PTLocked = PTPercent;
         }
      }
      if(!Revenge)
      { 
         if(PTLocked>0)
         {
            if(PTLocked>=subPipProfitTotal())
            {
               subCloseOrder();
               PTLocked = 0;
            }
         }
      }
      if(Revenge)
      {
         if(subOrderType()==OP_SELL){
            if(PTLocked>0){
             if(PTLocked>=subPipProfitTotal())
               {
                  subCloseOrder();
                  PTLocked = 0;
                  if(OrderSend(Symbol(),OP_BUY,开仓手数,Ask,3,OrderOpenPrice()-NSL,0,"DocSniper EA",EA识别码,0,Green)<0)
                        {
                            Print( "OrderOpen Error #", GetLastError() );
            return(-1);
                        }
               }
            }  
         }
         if(subOrderType()==OP_BUY){
            if(PTLocked>0){
             if(PTLocked>=subPipProfitTotal())
               {
                  subCloseOrder();
                  PTLocked = 0;
                 if(OrderSend(Symbol(),OP_SELL,开仓手数,Bid,3,OrderOpenPrice()+NSL,0,"DocSniper EA",EA识别码,0,Green)<0)
                        {
                            Print( "OrderOpen Error #", GetLastError() );
            return(-1);
                        }
               }
            }  
         }
      }  
   }
   double Unit = 开仓手数;
  
  
  

 
   for ( int z = _OrdersTotal - 1; z >= 0; z -- )
 {

  if ( !OrderSelect( z, SELECT_BY_POS ) )
  {
   _GetLastError = GetLastError();
   Print( "OrderSelect( ", z, ", SELECT_BY_POS ) - Error #", _GetLastError );
   continue;
  }


  if ( OrderSymbol() != Symbol() ) continue;


  if ( OrderMagicNumber() != EA识别码 ) continue;


  switch ( OrderType() )
  {
   case OP_BUY:  BuyOrder   = OrderTicket(); break;
   case OP_SELL:  SellOrder  = OrderTicket(); break;
   case OP_BUYSTOP: BuyStopOrder = OrderTicket(); break;
   case OP_SELLSTOP: SellStopOrder = OrderTicket(); break;
  }
 }
 
//-----------------------PENDING ORDERS PROCESS-----------------+

 if(subTotalOpenTrade()<1)
 {  PTLocked = 0;
    LastXMIN = 0;
    LastXMAX = 9999999;
      BStopLossLevel = NormalizeDouble( EMAX - N*止损倍数, Digits );
    SStopLossLevel = NormalizeDouble( EMIN + N*止损倍数, Digits );
    double Spread = NormalizeDouble(spread*Point,Digits);
    string Modify1 = "none";
    string Modify2 = "none";   
      trueEMAX = EMAX + Spread;
      trueEMIN = EMIN - Spread;
    
      if((LastEMAX != trueEMAX)||(BuyStopOrder<1))
      {
            if (BuyStopOrder>0)
            {
               int cnt;
               int total = subTotalBuyStopTrade();
               for(cnt=0;cnt<total;cnt++)
               {    
                  OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

                  if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol() && OrderMagicNumber()==EA识别码)
                  {
                       
                        BuyStopOrder = OrderTicket();
                  }
                  OrderDelete(BuyStopOrder);
               }
               BuyStopOrder = 0;
            }
          
              
              
            if(subTotalBuyStopTrade()<1)
            {
               if (OrderSend(Symbol(),OP_BUYSTOP,Unit,trueEMAX,6,BStopLossLevel,0,"TURTLE POWER",EA识别码,0,Green)<0)
               {
                 Print( "OrderSend Error #", GetLastError() );
               return(-1);
             }
               LastEMAX = trueEMAX;
               double BuyPrice = LastEMAX;           
            }
        } 
        if((LastEMIN != trueEMIN)||(SellStopOrder<1))
        {
            if (SellStopOrder>0)
            {
               total = subTotalSellStopTrade();
               for(cnt=0;cnt<total;cnt++)
               {    
                  OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

                  if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol() && OrderMagicNumber()==EA识别码)
                  {
                       
                        SellStopOrder = OrderTicket();
                  }
                  OrderDelete(SellStopOrder);
               }
               SellStopOrder = 0;
            }
            if(subTotalSellStopTrade()<1)
            {
               if (OrderSend(Symbol(),OP_SELLSTOP,Unit,trueEMIN,6,SStopLossLevel,0,"TURTLE POWER",EA识别码,0,Green)<0)
               {
              Alert( "OrderSend Error #", GetLastError() );
            return(-1);
             }
               LastEMIN = trueEMIN;
               double SellPrice = LastEMIN;
            }
        }
    }
  
//-----------------------------------------------------+  
//$$$$$$$$$$$$$$$$(OPEN BUY PROCESS)$$$$$$$$$$$$$$$$$$$+
//-----------------------------------------------------+
   if(BuyOrder>0)
   { 
      if (SellStopOrder>0)
      {
     if ( !OrderDelete( SellStopOrder ) )
     {
      Alert( "OrderDelete Error #", GetLastError() );
      return(-1);
     }
      }
      LastOpen = subLastOpenPrice();
      //-------------PENDING REENTRY PROCESS
      total = subTotalOpenTrade();
      if(total<最大持仓单子个数)
      {
         double PendingTotal = subTotalBuyStopTrade();
         if(PendingTotal<1)
         { 
 
            BuyPrice = NormalizeDouble((LastOpen+N*入场倍数ATR),Digits);
            double SL = NormalizeDouble(BuyPrice - N*止损倍数, Digits );
            if(BuyPrice>Bid){
               if (OrderSend(Symbol(),OP_BUYSTOP,Unit,BuyPrice,6,SL,0,"TURTLE POWER",EA识别码,0,Green)<0)
               {
                   Print( BuyPrice+"OrderSend Error #", GetLastError() );
                  return(-1);
              }
            LastOpen = subLastOpenPrice();
            }        
         }
      }
      //-----------MODIFY STOPS AFTER REENTRY
      LastOpen = subLastOpenPrice();
      if((total>1)&&(XMIN<LastOpen))
      {   LastOpen = subLastOpenPrice();
          BStopLossLevel = NormalizeDouble(LastOpen - N*止损倍数, Digits );
          total = OrdersTotal();
          for(cnt=0;cnt<total;cnt++)
          {    
              OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

              if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber()==EA识别码)
              { 
                  if ( BStopLossLevel > OrderStopLoss()|| OrderStopLoss() <= 0.0 )
                  {
                      if ( !OrderModify( OrderTicket(), OrderOpenPrice(), BStopLossLevel,OrderTakeProfit(), OrderExpiration() ) )
            {
        Print( "OrderModify Error #", GetLastError() );
        return(-1);
            }
            return(0);
        }
               }
           }         
      }
      LastOpen = subLastOpenPrice();
      //-----------BREAK EVEN AFTER PIPS PROCESS
      if((ATR保护)&&(XMIN<LastOpen))
      {
         double BreakEvenPrice = NormalizeDouble(LastOpen + N*ATR保护参数_倍数,Digits);
         if(Bid > BreakEvenPrice){
           for(cnt=0;cnt<total;cnt++)
          {    
              OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

              if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber()==EA识别码)
              {  
                  if ( LastOpen > OrderStopLoss()|| OrderStopLoss() <= 0.0 )
                  {
                     if ( !OrderModify( OrderTicket(), OrderOpenPrice(), LastOpen,OrderTakeProfit(), OrderExpiration() ) )
           {
             Print( "OrderModify Error #", GetLastError() );
             return(-1);
           }
        }
               }
           }
           Modify2="done";  
         }
      }
      //-----------TRAILING STOP PROCESS
      LastSL = subLastSLPrice();
      total = subTotalOpenTrade();
      if(total>1)
      {
          if(LastSL < XMIN)
          {
               total = OrdersTotal();
               for(cnt=0;cnt<total;cnt++)
               {    
                  OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

                  if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber()==EA识别码)
                  {
                     if ( !OrderModify( OrderTicket(), OrderOpenPrice(), XMIN,OrderTakeProfit(), OrderExpiration() ) )
       {
        Print( "OrderModify Error #", GetLastError() );
        return(-1);
       }
                  }
               }  
    LastSL = subLastSLPrice();
      
          } 
      }
      //+----------END OF TRAILING STOP PROCESS
   }
//-----------------------------------------------------+  
//$$$$$$$$$$$$$$$(OPEN SELL PROCESS)$$$$$$$$$$$$$$$$$$$+
//-----------------------------------------------------+
   if(SellOrder>0)
   {
     if (BuyStopOrder>0)
     {
     if ( !OrderDelete( BuyStopOrder ) )
     {
      Alert( "OrderDelete Error #", GetLastError() );
      return(-1);
     }
      }
       LastOpen = subLastOpenPrice();
      //-------------PENDING REENTRY PROCESS
      total = subTotalOpenTrade();
      if(total<最大持仓单子个数)
      {
         PendingTotal = subTotalSellStopTrade();
         if(PendingTotal<1)
         { 
 
            SellPrice = NormalizeDouble((LastOpen-N*入场倍数ATR),Digits);
            SL = NormalizeDouble(SellPrice + N*止损倍数, Digits );
           
            if(SellPrice<Bid){
               if (OrderSend(Symbol(),OP_SELLSTOP,Unit,SellPrice,6,SL,0,"TURTLE POWER",EA识别码,0,Green)<0)
               {
                   Print( BuyPrice+"OrderSend Error #", GetLastError() );
                  return(-1);
             }
            LastOpen = subLastOpenPrice();
            }       
         }
      }
      //-----------MODIFY STOPS AFTER REENTRY
      LastOpen = subLastOpenPrice();
      if((total>1)&&(XMAX>LastOpen))
      {  
         SStopLossLevel = NormalizeDouble(LastOpen + N*止损倍数, Digits );
          total = OrdersTotal();
          for(cnt=0;cnt<total;cnt++)
          {    
              OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

              if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==EA识别码)
              { 
                  if ( SStopLossLevel < OrderStopLoss()|| OrderStopLoss() <= 0.0 )
                  {
                      if ( !OrderModify( OrderTicket(), OrderOpenPrice(), SStopLossLevel,OrderTakeProfit(), OrderExpiration() ) )
            {
        Print( "OrderModify Error #", GetLastError() );
        return(-1);
            }
            return(0);
        }
               }
           }         
      }

      //-----------BREAK EVEN AFTER PIPS PROCESS
      LastOpen = subLastOpenPrice();
      if((ATR保护)&&(XMAX>LastOpen)&&(total==最大持仓单子个数))
      {  total = OrdersTotal();
         BreakEvenPrice = NormalizeDouble(LastOpen - N*ATR保护参数_倍数,Digits);
         if(Bid < BreakEvenPrice){
           for(cnt=0;cnt<total;cnt++)
          {    
              OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

              if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==EA识别码)
              {  
                  if ( LastOpen < OrderStopLoss()|| OrderStopLoss() <= 0.0 )
                  {
                     if ( !OrderModify( OrderTicket(), OrderOpenPrice(), LastOpen,OrderTakeProfit(), OrderExpiration() ) )
           {
             Print( "OrderModify Error #", GetLastError() );
             return(-1);
           }
        }
               }
           }
         }
      }
      //-----------TRAILING STOP PROCESS
      LastSL = subLastSLPrice();
      if(XMAX<=LastOpen)
      {
          if(LastSL > XMAX)
          {
               total = OrdersTotal();
               for(cnt=0;cnt<total;cnt++)
               {    
                  OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

                  if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==EA识别码)
                  {
                     if ( !OrderModify( OrderTicket(), OrderOpenPrice(), XMAX,OrderTakeProfit(), OrderExpiration() ) )
       {
        Print( "OrderModify Error #", GetLastError() );
        return(-1);
       }
                  }
               }  
    LastSL = subLastSLPrice();
      
          } 
      }
      //+----------END OF TRAILING STOP PROCESS
   }
 
    
//----
   return(0);
}
//+--------------------------END OF PROGRAM--------------------------+


//----------------------- GENERATE MAGIC NUMBER BASE ON SYMBOL AND TIME FRAME FUNCTION
//----------------------- SOURCE   : PENGIE

int subGenerateMagicNumber(int EA识别码, string symbol, int timeFrame)
{
   int isymbol = 0;
   if (symbol == "EURUSD")       isymbol = 1;
   else if (symbol == "GBPUSD")  isymbol = 2;
   else if (symbol == "USDJPY")  isymbol = 3;
   else if (symbol == "USDCHF")  isymbol = 4;
   else if (symbol == "AUDUSD")  isymbol = 5;
   else if (symbol == "USDCAD")  isymbol = 6;
   else if (symbol == "EURGBP")  isymbol = 7;
   else if (symbol == "EURJPY")  isymbol = 8;
   else if (symbol == "EURCHF")  isymbol = 9;
   else if (symbol == "EURAUD")  isymbol = 10;
   else if (symbol == "EURCAD")  isymbol = 11;
   else if (symbol == "GBPUSD")  isymbol = 12;
   else if (symbol == "GBPJPY")  isymbol = 13;
   else if (symbol == "GBPCHF")  isymbol = 14;
   else if (symbol == "GBPAUD")  isymbol = 15;
   else if (symbol == "GBPCAD")  isymbol = 16;
   else                          isymbol = 17;
   if(isymbol<10) EA识别码 = EA识别码 * 10;
   return (StrToInteger(StringConcatenate(EA识别码, isymbol, timeFrame)));
  
}
//----------------------- PRINT COMMENT FUNCTION
//----------------------- SOURCE : CODERSGURU
void subPrintDetails()
{
   string sComment   = "";
   string sp         = "-------------------------------------------------------------\n";
   string NL         = "\n";

   sComment = sp;

   sComment = sComment + sp;
   sComment = sComment + "BULL ENTRY= " + DoubleToStr(EMAX,4) + " | ";
   sComment = sComment + "BULL EXIT= " + DoubleToStr(XMIN,4) + " | ";
   sComment = sComment + NL;
   sComment = sComment + sp;
   sComment = sComment + "BEAR ENTRY= " + DoubleToStr(EMIN,4) + " | ";
   sComment = sComment + "BEAR EXIT= " + DoubleToStr(XMAX,4) + " | ";
   sComment = sComment + NL;
   sComment = sComment + sp;
   sComment = sComment + "ATR =" + DoubleToStr(N,4) + " | ";
   sComment = sComment + "Spread =" + DoubleToStr(spread,4) + " | ";
   sComment = sComment + "tickvalue =" + DoubleToStr(tickvalue,4) + " | ";
   sComment = sComment + NL;
   sComment = sComment + sp;
   sComment = sComment + "Total Pips= " +DoubleToStr(subPipProfitTotal(),0) + " | ";
   sComment = sComment + "Pips Locked in= " + DoubleToStr(PTLocked,0) + " | ";
   sComment = sComment + "T.P.Percent =" + DoubleToStr(PTPercent,4) + " | ";
   sComment = sComment + NL;
   sComment = sComment + sp;
   Comment(sComment);
}

//----------COUNT OPEN TRADES------------------+

int subTotalOpenTrade()
{
   int
      cnt,
      total = 0;

   for(cnt=0;cnt<OrdersTotal();cnt++)
   {
      OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
      if((OrderType()==OP_SELL||OrderType()==OP_BUY) &&
         OrderSymbol()==Symbol() &&
         OrderMagicNumber()==EA识别码) total++;
   }
   return(total);
}
//----------GET LASt OPENED PRICE------------------+

double subLastOpenPrice()
{
   int
      cnt,
      total = 0;
   double OpenPrice;
  
   for(cnt=0;cnt<OrdersTotal();cnt++)
   {
      OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
      if((OrderType()==OP_SELL||OrderType()==OP_BUY) &&
         OrderSymbol()==Symbol() &&
         OrderMagicNumber()==EA识别码)
        
         OpenPrice = OrderOpenPrice();
        
   }
   return(OpenPrice);
}
//----------GET LASt SL PRICE------------------+

double subLastSLPrice()
{
   int
      cnt,
      total = 0;
   double SLPrice;
  
   for(cnt=0;cnt<OrdersTotal();cnt++)
   {
      OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
      if((OrderType()==OP_SELL||OrderType()==OP_BUY) &&
         OrderSymbol()==Symbol() &&
         OrderMagicNumber()==EA识别码)
        
         SLPrice = OrderStopLoss();
        
   }
   return(SLPrice);
}
//----------COUNT BUYSTOP ORDERS---------------+

int subTotalBuyStopTrade()
{
   int
      cnt,
      total = 0;

   for(cnt=0;cnt<OrdersTotal();cnt++)
   {
      OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
      if(OrderType()==OP_BUYSTOP&&
         OrderSymbol()==Symbol() &&
         OrderMagicNumber()==EA识别码) total++;
   }
   return(total);
}
//-----------COUNT SELLSTOP ORDERS-------------+

int subTotalSellStopTrade()
{
   int
      cnt,
      total = 0;

   for(cnt=0;cnt<OrdersTotal();cnt++)
   {
      OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
      if(OrderType()==OP_SELLSTOP&&
         OrderSymbol()==Symbol() &&
         OrderMagicNumber()==EA识别码) total++;
   }
   return(total);
}
//----------COUNT OPEN TRADES------------------+

double subPipProfitTotal()
{
   int
      cnt,
      total = 0;
   tickvalue = MarketInfo(Symbol(),MODE_TICKVALUE);
   double TotalProfit = 0;
   for(cnt=0;cnt<OrdersTotal();cnt++)
   {
      OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
      if((OrderType()==OP_SELL||OrderType()==OP_BUY) &&
         OrderSymbol()==Symbol() &&
         OrderMagicNumber()==EA识别码)
         {
         double PipProfit = (OrderProfit()/OrderLots()/tickvalue);
         TotalProfit = TotalProfit+PipProfit;
         }
   }
   return(TotalProfit);
}
//----------------------- CLOSE ORDER FUNCTION
//----------------------- SOURCE: FIREDAVE
void subCloseOrder()
{
   int
         cnt,
         total       = 0,
         ticket      = 0,
         err         = 0,
         c           = 0;

   total = OrdersTotal();
   for(cnt=total-1;cnt>=0;cnt--)
   {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

      if(OrderSymbol()==Symbol() &&
         OrderMagicNumber()==EA识别码)
      {
         switch(OrderType())
         {
            case OP_BUY      :
               for(c=0;c<10;c++)
               {
                  ticket=OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
                  err=GetLastError();
                  if(err==0)
                  {
                     if(ticket>0) break;
                  }
                  else
                  {
                     if(err==0 || err==4 || err==136 || err==137 || err==138 || err==146) //Busy errors
                     {
                        Sleep(5000);
                        continue;
                     }
                     else //normal error
                     {
                        if(ticket>0) break;
                     } 
                  }
               }  
               break;
              
            case OP_SELL     :
               for(c=0;c<10;c++)
               {
                  ticket=OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
                  err=GetLastError();
                  if(err==0)
                  {
                     if(ticket>0) break;
                  }
                  else
                  {
                     if(err==0 || err==4 || err==136 || err==137 || err==138 || err==146) //Busy errors
                     {
                        Sleep(5000);
                        continue;
                     }
                     else //normal error
                     {
                        if(ticket>0) break;
                     } 
                  }
               }  
               break;
              
            case OP_BUYLIMIT :
            case OP_BUYSTOP  :
            case OP_SELLLIMIT:
            case OP_SELLSTOP :
               OrderDelete(OrderTicket());
         }
      }
   }     
}
//----------GET ORDER TYPE
int subOrderType()
{
   int
      cnt,
      total = 0;

   for(cnt=0;cnt<OrdersTotal();cnt++)
   {
      OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
      total = OrderType();
   }
   return(total);


 回到顶部
帅哥哟,离线,有人找我吗?
wenarm
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2017/12/12 8:28:18    Post IP:180.169.30.6[只看该作者]

抱歉,这类语言和金子塔出入较大,能力有限无法完成转换。


编程无捷径,技巧靠积累。
 回到顶部