EA编程实训课程 - 图文

发布时间 : 星期五 文章EA编程实训课程 - 图文更新完毕开始阅读

输入参数:

输出参数:9-无信号

0- 买入开仓信号 1- 卖出开仓信号 2- BuyLimit信号 3- SellLimit信号 4- BuyStop信号 5- SellStop信号 6- 买入单平仓信号 7- 卖出单平仓信号

算法: /*

Int iTradingSignals() {

Int myReturn=9;//预定义返回变量

iDrawSign(“Dot”,0,Ask,Green,241);标注买入开仓信号 iDrawSign(“Dot”,0,Bid,Red,242);//标注卖出开仓信号 return(myReturn); }

函数:显示交易信息 输入参数: 输出参数: 算 法: */

Void iShowInfo() {

//统计持仓单数据

BuyGroupOrders=0;SellGroupOrders=0;//买入、卖出组成交持仓单数量总计

BuyGroupFirstTicket=0;SellGroupFirstTicket=0;//买入、卖出组持仓单第1张单订单号 BuyGroupLastTicket=0;SellGroupLastTicket=0;//买入、卖出组最后1张单的订单号 BuyGroupLots=0;SellGroupLots=0;//买入、卖出组成交单持仓量 BuyGroupProfit=0;SellGroupProfit=0;//买入、卖出组成交单利润

BuyLimitOrders=0;SellLimitOrders=0;//买入、卖出限制挂单数量总计 BuyStopOrders=0;SellStopOrders=0;//买入、卖出停止挂单数量总计 If(OrdersTotal()>0) {

ArrayResize(OrdersArray,OrdersTotal());//重新界定数组 ArrayInitialize(OredrsArray,0.0);//初始化数组 For(cnt=0;cnt<=OrdersTotal()-1;cnt++) {

iWait();

//选中当前货币对相关持仓订单

If(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES && OrderSymbol()==Symbol() && OrderComment()==MyOrderComment)

{

OrdersArray[cnt][0]=OrderOpenTime(); OrdersArray[cnt][1]=OrderTicket(); OrdersArray[cnt][2]=OrderType(); //买入持仓单

If(OrderType()==OP_BUY) {

BuyGroupOrders=BuyGroupOrders+1;//买入组订单数量 BuyGroupLots=BuyGroupLots+OrderLots();//买入组开仓量 BuyGroupProfit=BuyGroupProfit+OrderProfit();//买入组利润

}

//卖出持仓单

If(OrderType()==OP_SELL) {

SellGroupOrders=SellGroupOrders+1;//卖出组订单数量 SellGroupLots=SellGroupLots+OrderLots();//卖出组开仓量 sellGroupProfit=SellGroupprofit+OrderProfit();//卖出组利润

}

//Limit挂单数量

If(OrderType()==OP_BUYLIMIT)

BuyLimitOrders=BuyLimitOrders+1;

If(OrderType()==OP_SELLLIMIT)

SellLimitOrders=SellLimitOrders+1; //Stop挂单数量

If(OrderType()==OP_BUYSTOP) BuyLimitOrders=BuyStopOrders+1;

If(OrderType()==OP_SELLSTOP)

SellLimitOrders=SellStopOrders+1;

}) }

//重新定义持仓单数组边界 Double myTempArray[][3]; Int

myTrallingOrders=BuyGroupOrders+SellGroupOrders+BuyLimitOrders+SellLimitOrders+BuyStopOrders+SellStopOrders; If (myTrallingOrders>0) {

ArrayResize(OrdersArray,myTrallingOrders);//重新界定数组 //ArrayInitialize(ordersArray,0.0);//初始化数组

ArrayResize(myTempArray,myTrallingOrders);//重新界定临时数组 ArrayInitialize(myTempArray,0.0);//初始化临时数组

}

//按订单开仓时间降序排列,重组订单数组-----冒泡排序 For(i=0;i

For(j=myTrallingOrders-1;j>i;j--) {

If(OrdersArray[j][0]>OrdersArray[j-1][0]) {

myTempArray[0][0]=OrdersArray[j-1][0]; myTempArray[0][1]=OrdersArray[j-1][1]; myTempArray[0][2]=OrdersArray[j-1][2]; myTempArray[j-1][0]=OrdersArray[j][0]; myTempArray[j-1][1]=OrdersArray[j][1]; myTempArray[j-1][2]=OrdersArray[j][2]; myTempArray[j][0]=OrdersArray[0][0]; myTempArray[j][1]=OrdersArray[0][1]; myTempArray[j][2]=OrdersArray[0][2];

} } }

//买入卖出组第1单、最后1单变量赋值 For(cnt=0;cnt

If(OrdersArray[cnt][2]==0) {

BuyGroupLastTicket=StrToInteger(DoubleToStr(OrdersArray[cnt][1],0)); Break;

} }

For(cnt=0;cnt

If(OrdersArray[cnt][2]==1) {

SellGroupLastTicket=StrToInteger(DoubleToStr(OrdersArray[cnt][1],0)); Break;

} }

For(cnt=myTrallingOrders-1;cnt>=0;cnt--) {

If(OrdersArray[cnt][2]==0) {

BuyGroupFirstTicket=StrToInteger(DoubleToStr(OrdersArray[cnt][1],0)); Break;

}

}

For(cnt=myTrallingOrders-1;cnt>=0;cnt--) {

If(OrdersArray[cnt][2]==1) {

SellGroupFirstTicket=StrtoInteger(DoubleToStr(OrdersArray[cnt][1],0)); Break;

} } }

//显示订单信息

iDisplayInfo(Symbol()+”-BuyGroup”,”买入组”,1,70,70,12,”Arial”,Red);

iDispalyInfo(Symbol()+”-Ask”,DoubleToStr(Ask,Digits),1,70,90,12,”Arial”,Red); iDispalyInfo(Symbol()+”-SellGroup”,”卖出组”,1,5,70,12,”Arial”,Green);

iDisplayInfo(Symbol()+”-Bid”,DoubleToStr(Bid,Digit),1,5,90,12,”Arial”,Green); //显示买入组信息

iDisplayInfo(Symbol()+”-BuyGroup”,”买入组”,1,70,70,12,”Arial”,Red);

iDispalyInfo(Symbol()+”-Ask”,DoubleToStr(Ask,Digits),1,70,90,12,”Arial”,Red);

iDispalyInfo(Symbol()+”BuyOrders”,BuyGroupOrders,1,80,110,10,”Arial”,iObjectColor(BuygroupProfit));

iDisplayInfo(Symbol()+”buyGroupLots”,DoubleToStr(BuyGroupLots,2),1,80,125,10,”Arial”,iObectColor(BuyGroupProfit));

iDisplayInfo(Symbol()+”buyGroupProfit”,DoubleToStr(BuyGroupProfit,2),1,80,140,10,”Arial”,iObectColor(BuyGroupProfit)); //显示卖出组信息

iDisplayInfo(Symbol()+”-SellGroup”,”卖出组”,1,5,70,12,”Arial”,Green);

iDispalyInfo(Symbol()+”-Bid”,DoubleToStr(Bid,Digits),1,5,90,12,”Arial”,Green);

iDispalyInfo(Symbol()+”SellOrders”,SellGroupOrders,1,10,110,10,”Arial”,iObjectColor(SellGroupProfit));

iDisplayInfo(Symbol()+”SellGroupLots”,DoubleToStr(SellGroupLots,2),1,10,125,10,”Arial”,iObectColor(SellGroupProfit));

iDisplayInfo(Symbol()+”SellGroupProfit”,DoubleToStr(SellGroupProfit,2),1,10,140,10,”Arial”,iObectColor(SellGroupProfit)); return(0); } /*

函数:交易繁忙,程序等待,更新缓存数据 输入参数: 输出参数: 算法说明:

联系合同范文客服:xxxxx#qq.com(#替换为@)