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