设为首页 收藏本站 切换语言

【平设定时间持仓单】开仓后超出设定时间平仓

| 发表于 昨天 10:54 | 显示全部楼层 |复制链接
© 本贴为 My05613828 原创/首发,严禁抄袭!

//------------------------------------------------------
void             平N时间前单(long magic,long 时间)
  {
   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionGetTicket(i)>0)
        {
         magic=魔术幻数(magic);
         if(PositionGetInteger(POSITION_MAGIC)==magic)
           {
            if(PositionGetInteger(POSITION_TIME)<TimeCurrent()-时间)
              {
               if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
                 {
                  MqlTradeRequest request= {};
                  MqlTradeResult  result= {};
                  request.action=TRADE_ACTION_DEAL;
                  request.magic=PositionGetInteger(POSITION_MAGIC);
                  request.position=PositionGetInteger(POSITION_TICKET);
                  request.volume=PositionGetDouble(POSITION_VOLUME);
                  request.symbol=PositionGetString(POSITION_SYMBOL);
                  request.type_filling=返回交易量指令(request.symbol);
                  request.price=SymbolInfoDouble(request.symbol,SYMBOL_BID);
                  request.deviation=deviation(slippage,request.symbol);;
                  request.type=ORDER_TYPE_SELL;
                  request.comment=PositionGetString(POSITION_COMMENT);
                  bool X=OrderSendAsync(request,result);
                  if(X==false)
                    {
                     Print("订单发送失败代码:"+IntegerToString(GetLastError()));
                     Print("交易返回代码:"+IntegerToString(result.retcode));
                    }
                 }
               if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
                 {
                  MqlTradeRequest request= {};
                  MqlTradeResult  result= {};
                  request.action=TRADE_ACTION_DEAL;
                  request.magic=PositionGetInteger(POSITION_MAGIC);
                  request.position=PositionGetInteger(POSITION_TICKET);
                  request.volume=PositionGetDouble(POSITION_VOLUME);
                  request.symbol=PositionGetString(POSITION_SYMBOL);
                  request.type_filling=返回交易量指令(request.symbol);
                  request.price=SymbolInfoDouble(request.symbol,SYMBOL_ASK);
                  request.deviation=deviation(slippage,request.symbol);;
                  request.type=ORDER_TYPE_BUY;
                  request.comment=PositionGetString(POSITION_COMMENT);
                  bool X=OrderSendAsync(request,result);
                  if(X==false)
                    {
                     Print("订单发送失败代码:"+IntegerToString(GetLastError()));
                     Print("交易返回代码:"+IntegerToString(result.retcode));
                    }
                 }
              }
           }
        }
     }
  };
//+------------------------------------------------------------------+


ENUM_ORDER_TYPE_FILLING 返回交易量指令(string symbol)
  {
// 获取现价单开仓的交易命令类型 ( 如果一个交易币种同时允许SYMBOL_FILLING_FOK和SYMBOL_FILLING_IOC成交指令,则交易命令类型为ORDER_FILLING_FOK )

   ENUM_ORDER_TYPE_FILLING 指令类型=ORDER_FILLING_FOK;
   if(SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE)==SYMBOL_FILLING_IOC)
      指令类型=ORDER_FILLING_IOC;
   if(SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE)==SYMBOL_FILLING_FOK)
      指令类型=ORDER_FILLING_FOK;
   return(指令类型);
  }
//+------------------------------------------------------------------+
image.png
91bb46bb3254c959b6844e8f2f5d856.png
如果有帮助,就支持一下我呗
举报

评论 使用道具

精彩评论3

yuwentao4761
DD
| 发表于 昨天 14:11 | 显示全部楼层
需要注明,这是 MQL5的代码 。。。
举报

点赞 评论 使用道具

My05613828
CCC
 楼主 | 发表于 昨天 23:01 | 显示全部楼层
void 平N时间前单(string symbol_s,int magic,long 时间)
  {
   bool result=false;
   for(int i=0; i<OrdersTotal(); i++)
     {
      if(i==1)
         break;
      if(OrderSelect(i,SELECT_BY_POS)&&order_type(1))
        {
         if(OrderTicket()>0)
           {
            magic=魔术幻数(magic);
            if(Symbol()==symbol_s&&OrderMagicNumber()==magic)
              {
               if(OrderOpenTime()<TimeCurrent()-时间)
                 {
                  switch(OrderType())
                    {
                     case OP_BUY:
                        result=OrderClose(OrderTicket(),OrderLots(),卖价(OrderSymbol()),20,Yellow);
                        break;
                     case OP_SELL:
                        result=OrderClose(OrderTicket(),OrderLots(),买价(OrderSymbol()),20,Red);
                        break;
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
举报

点赞 评论 使用道具

My05613828
CCC
 楼主 | 发表于 昨天 23:02 | 显示全部楼层
2c4b792758f77c75cff25cf15aefd61.png
举报

点赞 评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册

简体中文
繁體中文
English(英语)
日本語(日语)
Deutsch(德语)
Русский язык(俄语)
بالعربية(阿拉伯语)
Türkçe(土耳其语)
Português(葡萄牙语)
ภาษาไทย(泰国语)
한어(朝鲜语/韩语)
Français(法语)