输入参数:
输出参数: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); } /* 函数:交易繁忙,程序等待,更新缓存数据 输入参数: 输出参数: 算法说明:
相关推荐: