mql4 mysql_MQL4的几个常用函数

写程序应该多多使用函数,这样能够提高编程的效率,下面是曾经用到的函数,将他们保存下来,供以后直接复制过去使用,这就不必每次都要重写了。

//---显示信息函数,因为创建了两个对象,所以在退出时,应该删除对象-----------------

void showinfo(){

ObjectCreate("p1",OBJ_LABEL,0,0,0);

ObjectSetText("p1",Symbol()+"

帐户余额:"+DoubleToStr(AccountBalance(),0)+"

帐户净值:"+DoubleToStr(AccountEquity(),0),18,"华文细黑",Yellow);

ObjectSet("p1",OBJPROP_XDISTANCE,10);

ObjectSet("p1",OBJPROP_YDISTANCE,40);

ObjectCreate("p2",OBJ_LABEL,0,0,0);

ObjectSetText("p2","EA-yunkaicn

自动交易系统已经启动。时间:"+Month()+"月"+Day()+"日"+Hour()+"点"+Minute()+"分",18,"华文细黑",Yellow);

ObjectSet("p2",OBJPROP_XDISTANCE,10);

ObjectSet("p2",OBJPROP_YDISTANCE,10);

}

//---计算当前货币订单数函数。

int CalculateCurrentOrders(string symbol)

{

int buys=0,sells=0;

for(int i=0;i

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

if(OrderSymbol()==Symbol() &&

OrderMagicNumber()==MAGICMA)

{

if(OrderType()==OP_BUY) buys++;

if(OrderType()==OP_SELL) sells++;

}

}

if(buys>0) return(buys);

else return(-sells);

}

//---计算交易手数的函数。

double LotsOptimized()

{

if(AccountEquity()<300) return(0.1);

if(AccountEquity()>=300 && AccountEquity()<500)

return(0.2);

if(AccountEquity()>=500 && AccountEquity()<1000)

return(0.4);

if(AccountEquity()>=1000 && AccountEquity()<5000)

return(0.6);

if(AccountEquity()>=5000 && AccountEquity()<10000)

return(1);

if(AccountEquity()>=10000) return(5);

}

//---开仓函数。

void CheckForOpen()

{

Lots=0.1;

if(zo=-ccipt)

{

res=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid + StopLoss*Point,Bid

- TakeProfit*Point,"",MAGICMA,0,Red);

if(res>0)

{

if(OrderSelect(res,SELECT_BY_TICKET,MODE_TRADES))

Alert(Symbol(),"卖单已经开了,价格是:",OrderOpenPrice());

}

else

Alert(Symbol(),"卖单开仓出错:",ErrorDescription(GetLastError()));

return;

return;

}

if(zo>maxfan && ccip1>ccipt &&

ccip2<=ccipt)

{

res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask - StopLoss*Point, Ask

+ TakeProfit*Point,"",MAGICMA, 0, Red);

if(res>0)

{

if(OrderSelect(res,SELECT_BY_TICKET,MODE_TRADES))

Alert(Symbol(),"买单已经开了,价格是:",OrderOpenPrice());

}

else

Alert(Symbol(),"买单开仓出错:",ErrorDescription(GetLastError()));

return;

}

}

//---平仓函数。

void CheckForClose()

{

Print("当前订单的利润:",OrderProfit(),"当前交易量(手):",LotsOptimized());

for(int i=0;i

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol())

continue;

if(OrderType()==OP_BUY)

{

if(Open[3]>=Close[3] && Open[2]>=Close[2] &&

Open[1]>=Close[1] )

OrderClose(OrderTicket(),OrderLots(),Bid,3,White);

}

if(OrderType()==OP_SELL)

{

if(Open[3]<=Close[3] && Open[2]<=Close[2] &&

Open[1]<=Close[1] )

OrderClose(OrderTicket(),OrderLots(),Ask,3,White);

}

}

}

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值