分享

加仓代码

 weewas 2010-09-16
//+------------------------------------------------------------------+
//|                                                     加仓模板.mq4 |
//|                                           Copyright 2009, Weewas |
//|                                   欢迎加我探讨ea    QQ:104206237 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2009, Weewas"
#property link      "QQ:104206237"
extern double Lots = 0.1;
extern double  TakeProfit = 10;
extern double  StopProfit = 500;
extern double wind=15;
datetime time=0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CalculateBuyOrders() {
   int l_count_8 = 0;
   for (int l_pos_12 = 0; l_pos_12 < OrdersTotal(); l_pos_12++) {
      if (OrderSelect(l_pos_12, SELECT_BY_POS, MODE_TRADES) == FALSE) break;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == 12345 && OrderCloseTime()==0 )
         {if (OrderType() == OP_BUY) l_count_8++;else l_count_8 = 0;}
   }
   return (l_count_8);
}
int CalculateSellOrders() {
   int l_count_8 = 0;
   for (int l_pos_12 = 0; l_pos_12 < OrdersTotal(); l_pos_12++) {
      if (OrderSelect(l_pos_12, SELECT_BY_POS, MODE_TRADES) == FALSE) break;
      if (OrderSymbol() == Symbol()&& OrderMagicNumber() == 54321 && OrderCloseTime()==0)
         {if (OrderType() == OP_SELL) l_count_8++;else l_count_8 = 0;}
   }
   return (l_count_8);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double buyprice() {
   double op;
 int i, n, ticket;
 datetime max=0, x;
 n = OrdersTotal();
 if (n == 0)return;
 for (i=0; i<n; i++) {
  if ((OrderSelect(i, SELECT_BY_POS) && OrderSymbol() == Symbol() && OrderMagicNumber() == 12345 && OrderCloseTime()==0 )== false)continue;
  x = OrderOpenTime();
  if (x > max) {
   ticket = OrderTicket();
   max = x;
  }
 }
 if (OrderSelect(ticket, SELECT_BY_TICKET) == false && OrderCloseTime()==0) return;
 op = OrderOpenPrice();
 return(op);
}
double sellprice() {
   double op;
 int i, n, ticket;
 datetime max=0, x;
 n = OrdersTotal();
 if (n == 0)return;
 for (i=0; i<n; i++) {
  if ((OrderSelect(i, SELECT_BY_POS) && OrderSymbol() == Symbol() && OrderMagicNumber() == 54321)== false&& OrderCloseTime()==0)continue;
  x = OrderOpenTime();
  if (x > max) {
   ticket = OrderTicket();
   max = x;
  }
 }
 if (OrderSelect(ticket, SELECT_BY_TICKET) == false&& OrderCloseTime()==0) return;
 op = OrderOpenPrice();
 return(op);
}
                                                    
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void profit(double &buyprofit,double &sellprofit)
{
   for (int l_pos_12 = 0; l_pos_12 < OrdersTotal(); l_pos_12++) {
      if (OrderSelect(l_pos_12, SELECT_BY_POS, MODE_TRADES) == FALSE) break;
      if (OrderSymbol() == Symbol()&& OrderCloseTime()==0)
         {if (OrderMagicNumber() == 54321) sellprofit+=OrderProfit();}
         {if (OrderMagicNumber() == 12345)  buyprofit+=OrderProfit();}
   }
  return(0);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CheckForOpen(int type)
{
     int l_ticket_104;    
     int buy_ticket = CalculateBuyOrders();
     int sell_ticket= CalculateSellOrders();
     if (type > 0)if ( time!=Time[0])
        {l_ticket_104 =OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, "", 12345, 0, Green);
         time=Time[0];}
     if (type < 0)if ( time!=Time[0])
         {l_ticket_104 = OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, "", 54321, 0, Red);
          time=Time[0];}
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CheckForadd(int type)
{
     int l_ticket_104;
     double point = MarketInfo(Symbol(),MODE_POINT);
     if(point==0.00001)point=0.0001;
     if(point==0.001)point=0.01;
     int buy_ticket = CalculateBuyOrders();
     int sell_ticket= CalculateSellOrders();
     if (type > 0)if ( time!=Time[0] && buyprice()-Ask>wind*point)
        {l_ticket_104 =OrderSend(Symbol(), OP_BUY, Lots*MathPow(2,buy_ticket), Ask, 3, 0, 0, "", 12345, 0, Green);
        time=Time[0];}   
     if (type < 0)if ( time!=Time[0] && Bid-sellprice()>wind*point)
         {l_ticket_104 = OrderSend(Symbol(), OP_SELL, Lots*MathPow(2,sell_ticket), Bid, 3, 0, 0, "", 54321, 0, Red);
          time=Time[0];}
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int Signal_OpenOrder()
{
     int x=0;
     return(x);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int Signal_OpenAdd()
{
     int x=0;      
    
     return(x);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int Signal_CloseOrder()
{
     int x=0;      
    
     return(x);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll()
{
   int l_error_8;
   int l_ord_total_0 = OrdersTotal();
   if (l_ord_total_0 > 0) {
      for (int l_pos_4 = l_ord_total_0 - 1; l_pos_4 >= 0; l_pos_4--) {
         OrderSelect(l_pos_4, SELECT_BY_POS, MODE_TRADES);
         if (OrderSymbol() == Symbol()) {
            if (OrderType() == OP_BUY) {
               OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 3, Yellow);
               l_error_8 = GetLastError();
               if (l_error_8 > 1/* NO_RESULT */) Print("Error message line 47 , error: ", l_error_8);
            } else {
               if (OrderType() == OP_SELL) {
                  OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 3, Yellow);
                  l_error_8 = GetLastError();
                  if (l_error_8 > 1/* NO_RESULT */) Print("Error message line 56 , error: ", l_error_8);
               } else {
                  if (OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP || OrderType() == OP_BUYLIMIT || OrderType() == OP_SELLLIMIT ) {
                    OrderDelete(OrderTicket());
                     l_error_8 = GetLastError();
                     if (l_error_8 > 1/* NO_RESULT */) Print("Error message line 65 , error: ", l_error_8);
                  }
               }
            }
        }
      }
   }
   return (0);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Closebuy()
{
  int l_error_8;
   int l_ord_total_0 = OrdersTotal();
   if (l_ord_total_0 > 0) {
      for (int l_pos_4 = l_ord_total_0 - 1; l_pos_4 >= 0; l_pos_4--) {
         OrderSelect(l_pos_4, SELECT_BY_POS, MODE_TRADES);
         if (OrderSymbol() == Symbol() && OrderMagicNumber()==12345) {
            if (OrderType() == OP_BUY ) {
               OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 3, Yellow);
               l_error_8 = GetLastError();
               if (l_error_8 > 1) Print("Error message line 47 , error: ", l_error_8);
            }
        }
      }
   }
   return (0);
}
void Closesell()
{
  int l_error_8;
   int l_ord_total_0 = OrdersTotal();
   if (l_ord_total_0 > 0) {
      for (int l_pos_4 = l_ord_total_0 - 1; l_pos_4 >= 0; l_pos_4--) {
         OrderSelect(l_pos_4, SELECT_BY_POS, MODE_TRADES);
         if (OrderSymbol() == Symbol() && OrderMagicNumber()==54321) {
            if (OrderType() == OP_SELL ) {
               OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 3, Yellow);
               l_error_8 = GetLastError();
               if (l_error_8 > 1) Print("Error message line 47 , error: ", l_error_8);
            }
        }
      }
   }
   return (0);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void start()
 {  
   double buyprofit,sellprofit;
   profit(buyprofit,sellprofit);
   int li_0 = CalculateBuyOrders() + CalculateSellOrders();
   int li_4 = CalculateSellOrders();
   int li_8 = CalculateBuyOrders();  
   if (li_4 == 0 && Signal_OpenOrder()==-1) CheckForOpen(-1);  
   if (li_4  > 0 && Signal_OpenAdd()  ==-1) CheckForadd (-1);
   if (li_8 == 0 && Signal_OpenOrder()== 1) CheckForOpen( 1);  
   if (li_8  > 0 && Signal_OpenAdd()  == 1) CheckForadd ( 1);
   if (li_4  > 0 && Signal_CloseOrder()==-1) Closesell();
   if (li_8  > 0 && Signal_CloseOrder()== 1) Closebuy();
   if((buyprofit+sellprofit)>TakeProfit)CloseAll();
   if((buyprofit>=TakeProfit ) || buyprofit <-StopProfit)Closebuy();
   if((sellprofit>=TakeProfit) || sellprofit<-StopProfit)Closesell();
   return(0);
}
 


 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多