在我们做下单的程序时,我们肯定也会想到一些问题,比如说单子手数很小,小于平台的最小手数限制,或者反之单子大于了平台最大单子的限制怎么办? 对于手数很小的单子我们没有办法,只能给一个输出提示一下,毕竟如果强行用最小手数的话有可能会出问题,因为有些品种的最小手数是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);
- }
- }
复制代码
|