您需要 登录 才可以下载或查看,没有帐号?注册
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 {}
}
外汇交易有很大的风险性,本站所有资源均来自网络,请选择使用,如若出现亏损,本站不承担任何责任!