客服热线:18391752892

MT4脚本 平三分之一仓可以实现平仓当前订单的三分之一手数

   日期:2019-01-12     浏览:117    
马上注册,结交更多好友,下载更多资源

您需要 登录 才可以下载或查看,没有帐号?注册 MT4脚本 平三分之一仓可以实现平仓当前订单的三分之一手数,当然最小0.03才能平仓三分之一
MQL4源码如下:
int start()
{
int cnt, total; total=OrdersTotal();
for(cnt=total-1;cnt 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 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 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 {} 
}

外汇交易有很大的风险性,本站所有资源均来自网络,请选择使用,如若出现亏损,本站不承担任何责任!


特别提示:本信息由相关企业自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关行情
推荐行情
点击排行