EaCode小胖李 发表于 2022-12-26 16:16:46

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);
}



pakart 发表于 2023-6-22 20:43:40

这个函数还是挺实用的

pakart 发表于 2023-6-23 11:03:08

你这个代码你实盘在用吗?这个编译有错误啊。

ken138888 发表于 2023-6-24 21:02:22

不是吧 报错

shllwk 发表于 2023-9-16 20:58:09

这个函数还是挺实用的谢谢分享

ken138888 发表于 2024-1-20 13:49:21

是不是报错

xinhua123 发表于 2024-3-5 15:06:13

很不错的

bxwpzly 发表于 2024-5-23 09:03:23

感谢付出分享

liguangxing2007 发表于 2024-5-27 09:12:59

想自己写EA最终还是放弃了

素封 发表于 2025-4-10 19:34:01

有没有能支持自动拆分大手数订单的跟单EA?
页: [1]
查看完整版本: OrderSendSplitLots()当下单手数超过平仓限制,自动拆单