找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
首页论坛EAHub 外汇论坛
查看: 21|回复: 0

【MQL4函数】分批下单

[复制链接]

4万

主题

54

回帖

4万

积分

管理员

积分
45954
发表于 2026-8-27 12:28:00 | 显示全部楼层 |阅读模式
在我们做下单的程序时,我们肯定也会想到一些问题,比如说单子手数很小,小于平台的最小手数限制,或者反之单子大于了平台最大单子的限制怎么办?对于手数很小的单子我们没有办法,只能给一个输出提示一下,毕竟如果强行用最小手数的话有可能会出问题,因为有些品种的最小手数是1手,盈亏会很大,所以不建议当手数小于最小手数时采用最小手数下单。那么当手数大于最大手数时,我们就得把这个单子拆成几个单子来下了,其实也不难,采用for循环就可以轻松做到,下面是一个例子:


void OnStart()
  {
      string sym= Symbol();
      int huadian=10;
      double lot=0.001;
      double maxlot= MarketInfo(Symbol(),MODE_MAXLOT);
      double minlot= MarketInfo(Symbol(),MODE_MINLOT);
      double amount=0;
      double lot_last=0;
      int i;
      int ticket=0;
      if (lot<minlot)
      {
               Print("手数太小");
                        return;
      }
      else if (lot>maxlot)
      {
                        amount= MathCeil(lot/maxlot);
                        lot_last=lot-(amount-1)*maxlot;
                        for(i=(int)amount;i>0;i--)
                        {
                              if (i!=1)
                              {
ticket= OrderSend (sym,OP_BUY, maxlot,
MarketInfo(Symbol(),MODE_ASK),huadian, 0,0,
"MQL4  Lesson",1000,0, clrAliceBlue);
                              }


                              else
                              {
ticket= OrderSend (sym,OP_BUY, lot_last,
MarketInfo(Symbol(),MODE_ASK),huadian, 0,0,
"MQL4 Lesson",1000,0, clrAliceBlue);
                              }
}
      }
      else
      {
                      ticket= OrderSend (Symbol(),OP_BUY,lot,
MarketInfo(Symbol(),MODE_ASK),huadian, 0, 0,
"MQL4 Lesson",1000,0, clrAliceBlue);
      }
  }复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|EAHub外汇论坛

GMT+8, 2026-10-10 01:32 , Processed in 0.375798 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表