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

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

| 发表于 2024-9-18 10:54:16 | 显示全部楼层 |复制链接
© 本贴为 My05613828 原创/首发,严禁抄袭!
  1. //------------------------------------------------------
  2. void             平N时间前单(long magic,long 时间)
  3.   {
  4.    for(int i=PositionsTotal()-1; i>=0; i--)
  5.      {
  6.       if(PositionGetTicket(i)>0)
  7.         {
  8.          magic=魔术幻数(magic);
  9.          if(PositionGetInteger(POSITION_MAGIC)==magic)
  10.            {
  11.             if(PositionGetInteger(POSITION_TIME)<TimeCurrent()-时间)
  12.               {
  13.                if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
  14.                  {
  15.                   MqlTradeRequest request= {};
  16.                   MqlTradeResult  result= {};
  17.                   request.action=TRADE_ACTION_DEAL;
  18.                   request.magic=PositionGetInteger(POSITION_MAGIC);
  19.                   request.position=PositionGetInteger(POSITION_TICKET);
  20.                   request.volume=PositionGetDouble(POSITION_VOLUME);
  21.                   request.symbol=PositionGetString(POSITION_SYMBOL);
  22.                   request.type_filling=返回交易量指令(request.symbol);
  23.                   request.price=SymbolInfoDouble(request.symbol,SYMBOL_BID);
  24.                   request.deviation=deviation(slippage,request.symbol);;
  25.                   request.type=ORDER_TYPE_SELL;
  26.                   request.comment=PositionGetString(POSITION_COMMENT);
  27.                   bool X=OrderSendAsync(request,result);
  28.                   if(X==false)
  29.                     {
  30.                      Print("订单发送失败代码:"+IntegerToString(GetLastError()));
  31.                      Print("交易返回代码:"+IntegerToString(result.retcode));
  32.                     }
  33.                  }
  34.                if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
  35.                  {
  36.                   MqlTradeRequest request= {};
  37.                   MqlTradeResult  result= {};
  38.                   request.action=TRADE_ACTION_DEAL;
  39.                   request.magic=PositionGetInteger(POSITION_MAGIC);
  40.                   request.position=PositionGetInteger(POSITION_TICKET);
  41.                   request.volume=PositionGetDouble(POSITION_VOLUME);
  42.                   request.symbol=PositionGetString(POSITION_SYMBOL);
  43.                   request.type_filling=返回交易量指令(request.symbol);
  44.                   request.price=SymbolInfoDouble(request.symbol,SYMBOL_ASK);
  45.                   request.deviation=deviation(slippage,request.symbol);;
  46.                   request.type=ORDER_TYPE_BUY;
  47.                   request.comment=PositionGetString(POSITION_COMMENT);
  48.                   bool X=OrderSendAsync(request,result);
  49.                   if(X==false)
  50.                     {
  51.                      Print("订单发送失败代码:"+IntegerToString(GetLastError()));
  52.                      Print("交易返回代码:"+IntegerToString(result.retcode));
  53.                     }
  54.                  }
  55.               }
  56.            }
  57.         }
  58.      }
  59.   };
  60. //+------------------------------------------------------------------+
  61. ENUM_ORDER_TYPE_FILLING 返回交易量指令(string symbol)
  62.   {
  63. // 获取现价单开仓的交易命令类型 ( 如果一个交易币种同时允许SYMBOL_FILLING_FOK和SYMBOL_FILLING_IOC成交指令,则交易命令类型为ORDER_FILLING_FOK )
  64.    ENUM_ORDER_TYPE_FILLING 指令类型=ORDER_FILLING_FOK;
  65.    if(SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE)==SYMBOL_FILLING_IOC)
  66.       指令类型=ORDER_FILLING_IOC;
  67.    if(SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE)==SYMBOL_FILLING_FOK)
  68.       指令类型=ORDER_FILLING_FOK;
  69.    return(指令类型);
  70.   }
  71. //+------------------------------------------------------------------+
复制代码

image.png
91bb46bb3254c959b6844e8f2f5d856.png
如果有帮助,就支持一下我呗
举报

评论 使用道具

精彩评论3

yuwentao4761
DDD
| 发表于 2024-9-18 14:11:04 | 显示全部楼层
需要注明,这是 MQL5的代码 。。。
举报

点赞 评论 使用道具

My05613828
CCC
 楼主 | 发表于 2024-9-18 23:01:38 | 显示全部楼层
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
 楼主 | 发表于 2024-9-18 23:02:04 | 显示全部楼层
2c4b792758f77c75cff25cf15aefd61.png
举报

点赞 评论 使用道具

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

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