写EA语法大全 编写程序必备语法下载
1.1-1 控单模版/*【程序名称及版本号】控单模版【开发记录】*///----程序预设参数extern string str1 = "====系统预设参数====";extern double 预设开仓量 = 0.1;double Lots;string 订单注释="";string MyOrderComment;int 订单特征码=0;int MyMagicNum;//----程控参数int BuyGroupOrders, SellGroupOrders; //买入、卖出组成交持仓单数量总计int BuyGroupFirstTicket, SellGroupFirstTicket; //买入、卖出组第一单单号int BuyGroupLastTicket, SellGroupLastTicket; //买入、卖出组最后一单单号int BuyGroupMaxProfitTicket, SellGroupMaxProfitTicket; //买入、卖出组最大盈利单单号int BuyGroupMinProfitTicket, SellGroupMinProfitTicket; //买入、卖出组最小盈利单单号int BuyGroupMaxLossTicket, SellGroupMaxLossTicket; //买入、卖出组最大亏损单单号int BuyGroupMinLossTicket, SellGroupMinLossTicket; //买入、卖出组最小亏损单单号double BuyGroupLots, SellGroupLots; //买入、卖出组成交持仓单开仓量总计double BuyGroupProfit, SellGroupProfit; //买入、卖出组成交持仓单利润总计int BuyLimitOrders, SellLimitOrders; //买入限制挂单、卖出限制挂单数量总计int BuyStopOrders, SellStopOrders; //买入停止挂单、卖出停止挂单数量总计//持仓订单基本信息:0订单号,1开仓时间,2订单利润,3订单类型,4开仓量,5开仓价,// 6止损价,7止赢价,8订单特征码,9订单佣金,10掉期,11挂单有效日期double OrdersArray[];//第1维:订单序号;第2维:订单信息double TempOrdersArray[];//临时数组int MyArrayRange; //数组记录数量int cnt, i, j; //计数器变数
int start() { iMain(); return(0); }
/*函 数:主控程序输入参数:输出参数:算 法:*/void iMain() { iShowInfo(); }
/*函 数:显示交易信息输入参数:输出参数:算 法:*/void iShowInfo() { //初始化变数 BuyGroupOrders=0; SellGroupOrders=0; //买入、卖出组成交持仓单数量总计 BuyGroupFirstTicket=0; SellGroupFirstTicket=0; //买入、卖出组第一张订单单号 BuyGroupLastTicket=0; SellGroupLastTicket=0; //买入、卖出组最后一张订单号 BuyGroupMaxProfitTicket=0; SellGroupMaxProfitTicket=0; //买入、卖出组最大盈利单单号 BuyGroupMinProfitTicket=0; SellGroupMinProfitTicket=0; //买入、卖出组最小盈利单单号 BuyGroupMaxLossTicket=0; SellGroupMaxLossTicket=0; //买入、卖出组最大亏损单单号 BuyGroupMinLossTicket=0; SellGroupMinLossTicket=0; //买入、卖出组最小亏损单单号 BuyGroupLots=0; SellGroupLots=0; //买入、卖出组成交单持仓量 BuyGroupProfit=0; SellGroupProfit=0; //买入、卖出组成交单利润 BuyLimitOrders=0; SellLimitOrders=0; //买入限制挂单、卖出限制挂单数量总计 BuyStopOrders=0; SellStopOrders=0; //买入停止挂单、卖出停止挂单数量总计 //初始化订单数组 MyArrayRange=OrdersTotal()+1; ArrayResize(OrdersArray, MyArrayRange); //重新界定数组 ArrayInitialize(OrdersArray, 0.0); //初始化数组 if (OrdersTotal()>0) { //遍历持仓单,创建数组 for (cnt=0; cnt<=MyArrayRange; cnt++) { //选中当前货币对相关持仓订单 if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==MyMagicNum) { OrdersArray=OrderTicket();//0订单号 OrdersArray=OrderOpenTime();//1开仓时间 OrdersArray=OrderProfit();//2订单利润 OrdersArray=OrderType();//3订单类型 OrdersArray=OrderLots();//4开仓量 OrdersArray=OrderOpenPrice();//5开仓价 OrdersArray=OrderStopLoss();//6止损价 OrdersArray=OrderTakeProfit();//7止赢价 OrdersArray=OrderMagicNumber();//8订单特征码 OrdersArray=OrderCommission();//9订单佣金 OrdersArray=OrderSwap();//10掉期 OrdersArray=OrderExpiration();//11挂单有效日期 } } //统计基本信息 for (cnt=0; cnt<MyArrayRange; cnt++) { //买入持仓单 if (OrdersArray!=0 && OrdersArray==OP_BUY) { BuyGroupOrders=BuyGroupOrders+1; //买入组订单数量 BuyGroupLots=BuyGroupLots+OrdersArray; //买入组开仓量 BuyGroupProfit=BuyGroupProfit+OrdersArray; //买入组利润 } //卖出持仓单 if (OrdersArray!=0 && OrdersArray==OP_SELL) { SellGroupOrders=SellGroupOrders+1; //卖出组订单数量 SellGroupLots=SellGroupLots+OrdersArray; //卖出组开仓量 SellGroupProfit=SellGroupProfit+OrdersArray; //卖出组利润 } //买入组限制挂单总计 if (OrdersArray!=0 && OrdersArray==OP_BUYLIMIT) BuyLimitOrders=BuyLimitOrders+1; //卖出组限制挂单总计 if (OrdersArray!=0 && OrdersArray==OP_SELLLIMIT) SellLimitOrders=SellLimitOrders+1; //买入组停止挂单总计 if (OrdersArray!=0 && OrdersArray==OP_BUYSTOP) BuyStopOrders=BuyStopOrders+1; //卖出组停止挂单总计 if (OrdersArray!=0 && OrdersArray==OP_SELLSTOP) SellStopOrders=SellStopOrders+1; } //计算买入卖出组首尾单号 BuyGroupFirstTicket=iOrderSortTicket(0,0,1); //买入组第1单单号 SellGroupFirstTicket=iOrderSortTicket(1,0,1); //卖出组第1单单号 BuyGroupLastTicket=iOrderSortTicket(0,0,0); //买入组最后1单单号 SellGroupLastTicket=iOrderSortTicket(1,0,0); //卖出组最后1单单号
BuyGroupMinProfitTicket=iOrderSortTicket(0,1,1); //买入组最小盈利单单号 SellGroupMinProfitTicket=iOrderSortTicket(1,1,1); //卖出组最小盈利单单号 BuyGroupMaxProfitTicket=iOrderSortTicket(0,1,0); //买入组最大盈利单单号 SellGroupMaxProfitTicket=iOrderSortTicket(1,1,0); //卖出组最大盈利单单号 BuyGroupMaxLossTicket=iOrderSortTicket(0,2,0); //买入组最大亏损单单号 SellGroupMaxLossTicket=iOrderSortTicket(1,2,0); //卖出组最大亏损单单号 BuyGroupMinLossTicket=iOrderSortTicket(0,2,1); //买入组最小亏损单单号 SellGroupMinLossTicket=iOrderSortTicket(1,2,1); //卖出组最小亏损单单号 } return(0); }
/*函 数:计算特定条件的订单输入参数:myOrderType:订单类型 0-Buy,1-Sell,2-BuyLimit,3-SellLimit,4-BuyStop,5-SellStop myOrderSort:排序类型 0-按时间,1-按盈利,2-按亏损 myMaxMin:最值 0-最大,1-最小输出参数:返回订单号算 法:*/int iOrderSortTicket(int myOrderType,int myOrderSort,int myMaxMin) { int myTicket=0; int myArraycnt=0; int myArraycnt1=0; int myType; //创建临时数组 double myTempArray[]; //定义临时数组 ArrayResize(myTempArray, MyArrayRange); //重新界定临时数组 ArrayInitialize(myTempArray, 0.0); //初始化临时数组 double myTempOrdersArray[]; //定义临时数组 myArraycnt=BuyGroupOrders+SellGroupOrders; if (myArraycnt==0) return(0); myArraycnt1=myArraycnt; myArraycnt=myArraycnt-1; ArrayResize(myTempOrdersArray, myArraycnt1); //重新界定临时数组 ArrayInitialize(myTempOrdersArray, 0.0); //初始化临时数组 for (cnt=0; cnt<=MyArrayRange; cnt++) { if ((OrdersArray==0 || OrdersArray==1) && OrdersArray!=0) { myTempOrdersArray=OrdersArray; myTempOrdersArray=OrdersArray; myTempOrdersArray=OrdersArray; myTempOrdersArray=OrdersArray; myTempOrdersArray=OrdersArray; myTempOrdersArray=OrdersArray; myTempOrdersArray=OrdersArray; myTempOrdersArray=OrdersArray; myTempOrdersArray=OrdersArray; myTempOrdersArray=OrdersArray; myTempOrdersArray=OrdersArray; myTempOrdersArray=OrdersArray; myArraycnt=myArraycnt-1; } } //按时间降序排列数组 if (myOrderSort==0) { for (i=0; i<=MyArrayRange; i++) { for (j=MyArrayRange; j>i; j--) { if (OrdersArray>OrdersArray) { myTempArray=OrdersArray; myTempArray=OrdersArray; myTempArray=OrdersArray; myTempArray=OrdersArray; myTempArray=OrdersArray; myTempArray=OrdersArray; myTempArray=OrdersArray; myTempArray=OrdersArray; myTempArray=OrdersArray; myTempArray=OrdersArray; myTempArray=OrdersArray; myTempArray=OrdersArray;
OrdersArray=OrdersArray; OrdersArray=OrdersArray; OrdersArray=OrdersArray; OrdersArray=OrdersArray; OrdersArray=OrdersArray; OrdersArray=OrdersArray; OrdersArray=OrdersArray; OrdersArray=OrdersArray; OrdersArray=OrdersArray; OrdersArray=OrdersArray; OrdersArray=OrdersArray; OrdersArray=OrdersArray;
OrdersArray=myTempArray; OrdersArray=myTempArray; OrdersArray=myTempArray; OrdersArray=myTempArray; OrdersArray=myTempArray; OrdersArray=myTempArray; OrdersArray=myTempArray; OrdersArray=myTempArray; OrdersArray=myTempArray; OrdersArray=myTempArray; OrdersArray=myTempArray; OrdersArray=myTempArray; } } } } //按利润降序排列数组 double myTempArray1[]; //定义临时数组 ArrayResize(myTempArray1, myArraycnt1); //重新界定临时数组 ArrayInitialize(myTempArray1, 0.0); //初始化临时数组 if (myOrderSort==1 || myOrderSort==2) { for (i=0; i<=myArraycnt1; i++) { for (j=myArraycnt1-1; j>i; j--) { if (myTempOrdersArray>myTempOrdersArray) { myTempArray1=myTempOrdersArray; myTempArray1=myTempOrdersArray; myTempArray1=myTempOrdersArray; myTempArray1=myTempOrdersArray; myTempArray1=myTempOrdersArray; myTempArray1=myTempOrdersArray; myTempArray1=myTempOrdersArray; myTempArray1=myTempOrdersArray; myTempArray1=myTempOrdersArray; myTempArray1=myTempOrdersArray; myTempArray1=myTempOrdersArray; myTempArray1=myTempOrdersArray;
myTempOrdersArray=myTempOrdersArray; myTempOrdersArray=myTempOrdersArray; myTempOrdersArray=myTempOrdersArray; myTempOrdersArray=myTempOrdersArray; myTempOrdersArray=myTempOrdersArray; myTempOrdersArray=myTempOrdersArray; myTempOrdersArray=myTempOrdersArray; myTempOrdersArray=myTempOrdersArray; myTempOrdersArray=myTempOrdersArray; myTempOrdersArray=myTempOrdersArray; myTempOrdersArray=myTempOrdersArray; myTempOrdersArray=myTempOrdersArray;
myTempOrdersArray=myTempArray1; myTempOrdersArray=myTempArray1; myTempOrdersArray=myTempArray1; myTempOrdersArray=myTempArray1; myTempOrdersArray=myTempArray1; myTempOrdersArray=myTempArray1; myTempOrdersArray=myTempArray1; myTempOrdersArray=myTempArray1; myTempOrdersArray=myTempArray1; myTempOrdersArray=myTempArray1; myTempOrdersArray=myTempArray1; myTempOrdersArray=myTempArray1; } } } } //X订单类型最小亏损单 if (myOrderSort==2 && myMaxMin==1) { for (cnt=0; cnt<=myArraycnt1; cnt++) { myType=NormalizeDouble(myTempOrdersArray,0); if (myTempOrdersArray<0 && myType==myOrderType) { myTicket=NormalizeDouble(myTempOrdersArray,0); break; } } } //X订单类型最大亏损单 if (myOrderSort==2 && myMaxMin==0) { for (cnt=myArraycnt1; cnt>=0; cnt--) { myType=NormalizeDouble(myTempOrdersArray,0); if (myTempOrdersArray<0 && myType==myOrderType) { myTicket=NormalizeDouble(myTempOrdersArray,0); break; } } } //X订单类型最大盈利单 if (myOrderSort==1 && myMaxMin==0) { for (cnt=0; cnt<=myArraycnt1; cnt++) { myType=NormalizeDouble(myTempOrdersArray,0); if (myTempOrdersArray>0 && myType==myOrderType) { myTicket=NormalizeDouble(myTempOrdersArray,0); break; } } } //X订单类型最小盈利单 if (myOrderSort==1 && myMaxMin==1) { for (cnt=myArraycnt1; cnt>=0; cnt--) { myType=NormalizeDouble(myTempOrdersArray,0); if (myTempOrdersArray>0 && myType==myOrderType) { myTicket=NormalizeDouble(myTempOrdersArray,0); break; } } }
//X订单类型第1开仓单 if (myOrderSort==0 && myMaxMin==1) { for (cnt=MyArrayRange; cnt>=0; cnt--)
看看学习学习。
写EA语法大全 编写程序必备语法下载
页:
[1]