不断补挂单的

楼主  收藏   举报   帖子创建时间:  2019-05-05 13:04 回复:0 关注量:138
//[EA] 不断补挂单的

extern int    挂单距离     = 11;
extern double 初手数       = 0.1;
extern double IncLot       = 0;
extern double 最小赢利目标 = 100;
extern int    滑点         = 3;
extern double 补单距       = 5;
extern int    魔术号       = 20140908;

double 最后卖手数 = 0;
double 最后买手数 = 0;
double 最后开卖价;
double 最后开买价;
int    改四系数;

//----------------初始化-----------------+

int init()
  {
   //--设置初始余额全局变量
   GlobalVariableSet("初始余额", AccountBalance());

   if(Digits==3 || Digits==5)
      改四系数= 10;

   return(0);
  }

//---------------主函数------------------+

int start()
  {
   //--达赢额全消全平 (写法不错)
   if(AccountEquity()>=GlobalVariableGet("初始余额")+最小赢利目标){
      消挂子(魔术号);
      全平子(魔术号);
      GlobalVariableSet("初始余额", 0);
     }

   GlobalVariableSet("初始余额", AccountBalance());

   //--无单时 挂双向突单  (策略过于简单!)
   if(已发送单总数子(魔术号)==0){
      OrderSend(Symbol(), OP_SELLSTOP, 初手数, Ask-挂单距离*改四系数*Point, 3*改四系数, 0, 0, "", 魔术号, 0, Red);
      OrderSend(Symbol(), OP_BUYSTOP,  初手数, Bid+挂单距离*改四系数*Point, 3*改四系数, 0, 0, "", 魔术号, 0, Blue);
     }

   最后开卖价= 最后开卖价子(魔术号);
   最后开买价= 最后开买价子(魔术号);

   //--补开买挂
   if(最后开卖价-Bid<=补单距*改四系数*Point){
      OrderSend(Symbol(), OP_BUYSTOP, 最后卖手数+IncLot, 最后开卖价+挂单距离*改四系数*Point, 3*改四系数, 0, 0, "", 魔术号, 0, Blue);
     }
   //--补开卖挂
   if(Ask-最后开买价<=补单距*改四系数*Point){
      OrderSend(Symbol(), OP_SELLSTOP, 最后买手数+IncLot, 最后开买价-挂单距离*改四系数*Point, 3*改四系数, 0, 0, "", 魔术号, 0, Red);
     }

   return(0);
  }

//---------------消挂子--------------------+

int 消挂子(int 魔号)
  {
   for(int i=OrdersTotal()-1; i>=0; i--){
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderMagicNumber()==魔号 && OrderSymbol()==Symbol()){
         if(OrderType()!=OP_BUY || OrderType()!=OP_SELL){
            OrderDelete(OrderTicket(), Black);
           }
        }
     }
   return(0);
  }

//---------------全平子--------------------+

int 全平子(int 魔号)
  {
   for(int i=OrdersTotal()-1; i>=0; i--){
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderMagicNumber()==魔号 && OrderSymbol()==Symbol()){

         if(OrderType()==OP_BUY){
            OrderClose(OrderTicket(), OrderLots(), Ask, 3*改四系数, White);
           }

         if(OrderType()==OP_SELL){
            OrderClose(OrderTicket(), OrderLots(), Bid, 3*改四系数, White);
           }
        }
     }
   return(0);
  }

//------------已发送单总数子-----------------+

int 已发送单总数子(int 魔号)
  {
   int 统计单数= 0;
   for(int i=0; i<OrdersTotal(); i++){
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderMagicNumber()==魔号 && OrderSymbol()==Symbol()){
         统计单数++;
        }
     }
   return(统计单数);
  }

//--------------最后开买价子-----------------+

double 最后开买价子(int 魔号)
  {
   for(int i=OrdersTotal()-1; i>=0; i--){
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderMagicNumber()==魔号 && OrderSymbol()==Symbol()){
         if(OrderType()==OP_SELLSTOP || OrderType()==OP_BUY){
            //--记录最后买手
            最后买手数= OrderLots();
            //--返回最后开买价
            return(OrderOpenPrice());
            break;
           }
        }
     }
   return(0);
  }

//--------------最后开卖价子----------------+

double 最后开卖价子(int 魔号)
  {
   for (int i=OrdersTotal()-1; i>=0; i--){
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderMagicNumber()==魔号 && OrderSymbol()==Symbol() && (OrderType()==OP_BUYSTOP || OrderType()==OP_SELL)){
         //--记录最后卖手
         最后卖手数= OrderLots();
         //--返回最后开卖价
         return(OrderOpenPrice());
         break;
        }
     }
   return(100000);
  }

//--------试译者:  ea.whyhui.com  --------+


打赏