|
MT4脚本 平三分之一仓可以实现平仓当前订单的三分之一手数,当然最小0.03才能平仓三分之一 MQL4源码如下: int start() { int cnt, total; total=OrdersTotal(); for(cnt=total-1;cnt>=0;cnt–) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); double lot = NormalizeDouble( OrderLots() * 1/3, 2); //取得单子的手数,然后算出要平仓的手数,并精确到小数点后两位 if(OrderType()==OP_SELL) { OrderClose(OrderTicket(),lot,Ask,3,CLR_NONE); } if(OrderType()==OP_BUY) { OrderClose(OrderTicket(),lot,Bid,3,CLR_NONE); } } return(0); } //.删除所有挂件 int start() { ObjectsDeleteAll(0); return(0); } ################################################ //全部平仓 int start() { int cnt, total; total=OrdersTotal(); for(cnt=total-1;cnt>=0;cnt--) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE); } if(OrderType()==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE); } } return(0); } ######################################## //删除所有挂单 #include <stdlib.mqh> #include <WinUser32.mqh> int start() { if (IsTradeAllowed()==false) { alert("自动交易功能未打开,请在选项中设置。"); return; } if(MessageBox("是否要删除所有挂单? ", "删除挂单", MB_YESNO|MB_ICONQUESTION) != IDYES) return;// int total=OrdersTotal(); for(int i=total-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ==false) continue; if(OrderType() < 2) continue; while(true) { if( OrderDelete(OrderTicket()) !=TRUE ) Print("LastError = ", ErrorDescription(GetLastError())); else break; } } return; } ######################################### //取消所有单子 int start() { bool result; double price; int cmd,error; while(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)) { cmd=OrderType(); //---- first order is buy or sell if(cmd==OP_BUY || cmd==OP_SELL) { while(true) { if(cmd==OP_BUY) price=Bid; else price=Ask; result=OrderClose(OrderTicket(),OrderLots(),price,3,CLR_NONE); if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); } else error=0; if(error==135) RefreshRates(); else break; } } } Print( "单子全平 ! "); return(0); } ######################################## //------------定单操作函数版本1.3------------------------ //m取值0、1、2、3、4、5、6、7//0-5表示定单类型//6表示所有//也可以指定某个定单号//7表示清理所有挂单 //1.0版本 0表示多单平仓、1表示空单平仓、2表示BUYLIMIT、3表示SELLLIMIT、4表示BUYSTOP、5表示SELLSTOP //1.1版本 继续1.0版本所有功能,加入6删除所有挂单,平仓所有成交定单 //1.2版本 继续1.1版本功能,加入7删除所有挂单 bool delwhat(int m) { bool trueorfalse; if(m > 100000) { if(OrderSelect(m,SELECT_BY_TICKET,MODE_TRADES) == true) { if(OrderType() == 0) { trueorfalse = OrderClose(OrderTicket(),OrderLots(),Bid,maxslippages,Yellow); //平仓操作 return(trueorfalse); } else if(OrderType() == 1) { trueorfalse = OrderClose(OrderTicket(),OrderLots(),Ask,maxslippages,Yellow);//平仓操作 return(trueorfalse); } else if(OrderType() > 1) { trueorfalse = OrderDelete(OrderTicket()); //删除挂单操作 return(trueorfalse); } } else { Print("赋予删除函数的参数数值无效,请检查"); //MT_SpeechText("赋予删除函数的参数数值无效,请检查",1); } } if (-1 < m < 8) { for(b=0;b<=OrdersTotal();b ) //循环建立一系列数字为序列号 { if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES) == false) break;//根据系列号抓取定单,失败打断该操作 if(m == 0) //假如参数m的值为0,表示假如抓取的当前定单为buy单 { if(OrderType()==0) { trueorfalse = OrderClose(OrderTicket(),OrderLots(),Bid,maxslippages,CLR_NONE); //平仓操作 return(trueorfalse); } else {} //返回操作结果,成功为1,失败为0 } else if(m == 1) //抓取sell单 { if(OrderType()==1) { trueorfalse = OrderClose(OrderTicket(),OrderLots(),Ask,maxslippages,CLR_NONE);//平仓操作 return(trueorfalse); } else {} //返回操作结果 } else if(m > 1 && m < 6 ) //抓取4种挂单 { if(OrderType()>1 && OrderType() == m) { trueorfalse = OrderDelete(OrderTicket()); //删除挂单操作 return(trueorfalse); } else {} //返回操作结果 } else if(m == 6) //表示需要删除所有挂单,平仓所有多和空单 { if(OrderType() == 0) { trueorfalse = OrderClose(OrderTicket(),OrderLots(),Bid,maxslippages,CLR_NONE);//平仓操作 return(trueorfalse); //返回操作结果 } else if (OrderType() == 1) { trueorfalse = OrderClose(OrderTicket(),OrderLots(),Ask,maxslippages,CLR_NONE);//平仓操作 return(trueorfalse); //返回操作结果 } else if(OrderType()>1) { trueorfalse = OrderDelete(OrderTicket()); //删除挂单操作 return(trueorfalse); } } else if(m == 7) { if(OrderType()>1) { trueorfalse = OrderDelete(OrderTicket()); //删除挂单操作 return(trueorfalse); } else {} } |
MT4脚本 平三分之一仓可以实现平仓当前订单的三分之一手数
回复:0 浏览:848
- 楼主admin 圈主
- 2019-05-05 11:54