zyc8008 发表于 2018-3-13 22:52:08

写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--)


LAKMA 发表于 2019-3-2 11:22:59

看看学习学习。

随宇真疯 发表于 2019-7-30 10:02:58

写EA语法大全 编写程序必备语法下载
页: [1]
查看完整版本: 写EA语法大全 编写程序必备语法下载