用来设定固定时间开多仓,并且自动设置止盈、止损操作系统。其中参数设置:
小时=指定小时数。常数12 代表12点,以MT4系统时间为准;
分钟=指定分钟数。常数 1代表01分。
(说明:如果时间参数设为:小时=12,分钟=02,则限定在时间12:02内自动下单,其余时间不操作。)
止损、止盈,均采用5位数平台,具体可根据你平台填入相应的数位,如:200=20点。
- //
- #define MAGICMA 20050610 //系统单编码
- extern double 手数 = 0.1; //下单量
- extern int 小时 = 12; //系统小时数
- extern int 分钟 = 1; //系统分钟数
- extern int 止损 = 200; //5位平台,4位平台为20
- extern int 止盈 = 300; //5位平台,4位平台为30
- //自定义函数:返回/整数型——计算下单量
- int CalculateCurrentOrders(string symbol)
- {
- int buys=0,sells=0; //设局部变量
- for(int i=0;i<OrdersTotal();i++) //循环查找历史仓单
- {
- if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
- //如果 仓单类型=假 则跳出循环
- if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
- //如果 货币对=当前货币对 且 仓单号=本系统仓单号
- {
- if(OrderType()==OP_BUY) buys++;
- //如果 仓单类型=多单 则 多单数=多单数+1
- if(OrderType()==OP_SELL) sells++;
- //如果 仓单类型=空单 则 空单数=空单数+1
- }
- }
- if(buys>0) return(buys);
- //如果 多单数>0,则 返回(多单数)
- else return(-sells);
- //否则,返回(-空单数)
- }
- //自定义函数:无返回型-开仓操作
- void CheckForOpen()
- {
- int res; //设局部变量-整数型
- if( TimeHour(TimeCurrent()) == 小时 && TimeMinute(TimeCurrent()) == 分钟)
- //如果 取当前小时数=小时 且 取当前分钟数=分钟
- {
- res=OrderSend(Symbol(),OP_BUY,手数,Ask,3,0,0,"",MAGICMA,0,Red);
- //发送订单(当前货币对,买入,手数,买价,滑点3,无止损,无止赢,编号,挂单,标示红色箭头)
- return;
- }
- }
- //自定义函数:无返回型-平仓操作
- void CheckForClose()
- {
- for(int i=0;i<OrdersTotal();i++)
- //循环检查
- {
- OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-Point*止损,
- OrderOpenPrice()+Point*止盈,0,Red);
- //修改挂单(仓单号,开仓价,止损价=开仓价-止损*点,止赢价=开仓价+止盈*点,挂单,标示红色箭头)
- }
- }
- //主运行程序
- void start()
- {
- if(Bars<100 || IsTradeAllowed()==false) return;
- //如果 K线数<100 或者 允许自动交易=假 返回
- if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
- //如果 持仓=0 则 进行开仓操作
- else CheckForClose();
- //否则 进行平仓操作
- }
|