OrderSendSplitLots()当下单手数超过平仓限制,自动拆单
函数名称int OrderSendSplitLots(string SymbolX,int OrderTypeX,double LotX,double PriceX,int SlipX,double StopLossX,double TakeProfitX,string CommentX,int MagicX,datetime ExpirationX,color ColorX)
函数介绍
OrderSendSplitLots()可以按照你的需要把一个大的手数,拆分成多个小的手数进行下单;函数中自带了一个全局变量SplitLots,该SplitLots就是外界可设置的拆分手数,如果SplitLots>0,开仓手数就以SplitLots进行拆分开仓;
如果SplitLots=0,则函数就以平台支持的最大开仓手数进行拆分。
//举例:多单开仓500手。
OrderSendSplitLots(Symbol(),OP_BUY,500,Ask,0,0,0,"eacode.cn",MAGIC,0,Blue);
参数介绍
SymbolX:需要开仓的交易品种,一般是Symbol(),当前交易品种。
OrderTypeX:订单类型,OP_BUY是开多单;OP_SELL是开空单;。
LotX:要开仓的手数。
PriceX:开仓的价格,开多单一般是Ask;开空单一般是Bid
SlipX:滑点,一般设置为0
StopLossX:止损价格,按照需要填写,不设置为0
TakeProfitX:止盈价格,按照需要填写,不设置为0
CommentX:订单注释
MagicX:EA唯一魔术码
ExpirationX:订单过期时间,挂单才需要,默认为0
ColorX:开仓箭头颜色
函数定义
注意:本人发布的函数均为实战开发所用,低价或免费发布并不赚钱,仅限懂编程的朋友使用,不提供指导,因为人工成本巨贵,感谢朋友们海涵。int OrderSendSplitLots(string SymbolX,int OrderTypeX,double LotX,double PriceX,int SlipX,double StopLossX,double TakeProfitX,string CommentX,int MagicX,datetime ExpirationX,color ColorX)
{
int var=0;
double SplitLot=MarketInfo(Symbol(),MODE_MAXLOT);
if(SplitLots>0 && SplitLots<=MarketInfo(Symbol(),MODE_MAXLOT))
SplitLot=NormalizeDouble(SplitLots,DoubleDigit(MarketInfo(Symbol(),MODE_LOTSTEP)));
int Timexs=0;
double Remainder=0;
if(LotX<SplitLot)
Remainder=LotX;
else
{
Timexs=(int)MathFloor(LotX/SplitLot);
Remainder=NormalizeDouble(LotX-Timexs*SplitLot,DoubleDigit(MarketInfo(Symbol(),MODE_LOTSTEP)));
}
for(int i=0; i<Timexs; i++)
if(OrderSend(SymbolX, OrderTypeX,SplitLot,PriceX,SlipX,StopLossX,TakeProfitX,CommentX, MagicX, ExpirationX, ColorX)<0)
var=-1;
if(Remainder!=0)
if(OrderSend(SymbolX, OrderTypeX,Remainder,PriceX,SlipX,StopLossX,TakeProfitX,CommentX, MagicX, ExpirationX, ColorX)<0)
var=-1;
return(var);
}
这个函数还是挺实用的 你这个代码你实盘在用吗?这个编译有错误啊。 不是吧 报错 这个函数还是挺实用的谢谢分享 是不是报错 很不错的 感谢付出分享 想自己写EA最终还是放弃了 有没有能支持自动拆分大手数订单的跟单EA?
页:
[1]