📅 财经日历 📊 实时波动 📈 大盘云图 📶 行情走势 🆚 投机情绪 🚀 今日热点

    请大家看一下 这ea通不过 怎么修改?

    2017-05-01 · 2415 阅读

    /*
    【程序名称及版本号】
    控单模版[1.00]
    【开发记录】
    */
    //----程序预设参数
    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[][12];//第1维:订单序号;第2维:订单信息
    double TempOrdersArray[][12];//临时数组
    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[cnt][0]=OrderTicket();//0订单号
                            OrdersArray[cnt][1]=OrderOpenTime();//1开仓时间
                            OrdersArray[cnt][2]=OrderProfit();//2订单利润
                            OrdersArray[cnt][3]=OrderType();//3订单类型
                            OrdersArray[cnt][4]=OrderLots();//4开仓量
                            OrdersArray[cnt][5]=OrderOpenPrice();//5开仓价
                            OrdersArray[cnt][6]=OrderStopLoss();//6止损价
                            OrdersArray[cnt][7]=OrderTakeProfit();//7止赢价
                            OrdersArray[cnt][8]=OrderMagicNumber();//8订单特征码
                            OrdersArray[cnt][9]=OrderCommission();//9订单佣金
                            OrdersArray[cnt][10]=OrderSwap();//10掉期
                            OrdersArray[cnt][11]=OrderExpiration();//11挂单有效日期
                         }
                   }
                //统计基本信息
                for (cnt=0; cnt<MyArrayRange; cnt++)
                   {
                      //买入持仓单
                      if (OrdersArray[cnt][0]!=0 && OrdersArray[cnt][3]==OP_BUY)
                         {
                            BuyGroupOrders=BuyGroupOrders+1; //买入组订单数量
                            BuyGroupLots=BuyGroupLots+OrdersArray[cnt][4]; //买入组开仓量
                            BuyGroupProfit=BuyGroupProfit+OrdersArray[cnt][2]; //买入组利润
                         }
                      //卖出持仓单
                      if (OrdersArray[cnt][0]!=0 && OrdersArray[cnt][3]==OP_SELL)
                         {
                            SellGroupOrders=SellGroupOrders+1; //卖出组订单数量
                            SellGroupLots=SellGroupLots+OrdersArray[cnt][4]; //卖出组开仓量
                            SellGroupProfit=SellGroupProfit+OrdersArray[cnt][2]; //卖出组利润
                         }
                      //买入组限制挂单总计
                      if (OrdersArray[cnt][0]!=0 && OrdersArray[cnt][3]==OP_BUYLIMIT) BuyLimitOrders=BuyLimitOrders+1;
                      //卖出组限制挂单总计
                      if (OrdersArray[cnt][0]!=0 && OrdersArray[cnt][3]==OP_SELLLIMIT) SellLimitOrders=SellLimitOrders+1;
                      //买入组停止挂单总计
                      if (OrdersArray[cnt][0]!=0 && OrdersArray[cnt][3]==OP_BUYSTOP) BuyStopOrders=BuyStopOrders+1;
                      //卖出组停止挂单总计
                      if (OrdersArray[cnt][0]!=0 && OrdersArray[cnt][3]==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[][12]; //定义临时数组
          ArrayResize(myTempArray, MyArrayRange); //重新界定临时数组
          ArrayInitialize(myTempArray, 0.0); //初始化临时数组
          double myTempOrdersArray[][12]; //定义临时数组
          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[cnt][3]==0 || OrdersArray[cnt][3]==1) && OrdersArray[cnt][0]!=0)
                   {
                      myTempOrdersArray[myArraycnt][0]=OrdersArray[cnt][0];
                      myTempOrdersArray[myArraycnt][1]=OrdersArray[cnt][1];
                      myTempOrdersArray[myArraycnt][2]=OrdersArray[cnt][2];
                      myTempOrdersArray[myArraycnt][3]=OrdersArray[cnt][3];
                      myTempOrdersArray[myArraycnt][4]=OrdersArray[cnt][4];
                      myTempOrdersArray[myArraycnt][5]=OrdersArray[cnt][5];
                      myTempOrdersArray[myArraycnt][6]=OrdersArray[cnt][6];
                      myTempOrdersArray[myArraycnt][7]=OrdersArray[cnt][7];
                      myTempOrdersArray[myArraycnt][8]=OrdersArray[cnt][8];
                      myTempOrdersArray[myArraycnt][9]=OrdersArray[cnt][9];
                      myTempOrdersArray[myArraycnt][10]=OrdersArray[cnt][10];
                      myTempOrdersArray[myArraycnt][11]=OrdersArray[cnt][11];
                      myArraycnt=myArraycnt-1;
                   }
             }
          //按时间降序排列数组
          if (myOrderSort==0)
             {
                for (i=0; i<=MyArrayRange; i++)
                   {
                      for (j=MyArrayRange; j>i; j--)
                         {
                            if (OrdersArray[j][1]>OrdersArray[j-1][1])
                               {
                                  myTempArray[0][0]=OrdersArray[j-1][0];
                                  myTempArray[0][1]=OrdersArray[j-1][1];
                                  myTempArray[0][2]=OrdersArray[j-1][2];
                                  myTempArray[0][3]=OrdersArray[j-1][3];
                                  myTempArray[0][4]=OrdersArray[j-1][4];
                                  myTempArray[0][5]=OrdersArray[j-1][5];
                                  myTempArray[0][6]=OrdersArray[j-1][6];
                                  myTempArray[0][7]=OrdersArray[j-1][7];
                                  myTempArray[0][8]=OrdersArray[j-1][8];
                                  myTempArray[0][9]=OrdersArray[j-1][9];
                                  myTempArray[0][10]=OrdersArray[j-1][10];
                                  myTempArray[0][11]=OrdersArray[j-1][11];
                                  
                                  OrdersArray[j-1][0]=OrdersArray[j][0];
                                  OrdersArray[j-1][1]=OrdersArray[j][1];
                                  OrdersArray[j-1][2]=OrdersArray[j][2];
                                  OrdersArray[j-1][3]=OrdersArray[j][3];
                                  OrdersArray[j-1][4]=OrdersArray[j][4];
                                  OrdersArray[j-1][5]=OrdersArray[j][5];
                                  OrdersArray[j-1][6]=OrdersArray[j][6];
                                  OrdersArray[j-1][7]=OrdersArray[j][7];
                                  OrdersArray[j-1][8]=OrdersArray[j][8];
                                  OrdersArray[j-1][9]=OrdersArray[j][9];
                                  OrdersArray[j-1][10]=OrdersArray[j][10];
                                  OrdersArray[j-1][11]=OrdersArray[j][11];
                                  
                                  OrdersArray[j][0]=myTempArray[0][0];
                                  OrdersArray[j][1]=myTempArray[0][1];
                                  OrdersArray[j][2]=myTempArray[0][2];
                                  OrdersArray[j][3]=myTempArray[0][3];
                                  OrdersArray[j][4]=myTempArray[0][4];
                                  OrdersArray[j][5]=myTempArray[0][5];
                                  OrdersArray[j][6]=myTempArray[0][6];
                                  OrdersArray[j][7]=myTempArray[0][7];
                                  OrdersArray[j][8]=myTempArray[0][8];
                                  OrdersArray[j][9]=myTempArray[0][9];
                                  OrdersArray[j][10]=myTempArray[0][10];
                                  OrdersArray[j][11]=myTempArray[0][11];
                               }
                         }
                   }
             }
          //按利润降序排列数组
          double myTempArray1[][12]; //定义临时数组
          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[j][2]>myTempOrdersArray[j-1][2])
                               {
                                  myTempArray1[0][0]=myTempOrdersArray[j-1][0];
                                  myTempArray1[0][1]=myTempOrdersArray[j-1][1];
                                  myTempArray1[0][2]=myTempOrdersArray[j-1][2];
                                  myTempArray1[0][3]=myTempOrdersArray[j-1][3];
                                  myTempArray1[0][4]=myTempOrdersArray[j-1][4];
                                  myTempArray1[0][5]=myTempOrdersArray[j-1][5];
                                  myTempArray1[0][6]=myTempOrdersArray[j-1][6];
                                  myTempArray1[0][7]=myTempOrdersArray[j-1][7];
                                  myTempArray1[0][8]=myTempOrdersArray[j-1][8];
                                  myTempArray1[0][9]=myTempOrdersArray[j-1][9];
                                  myTempArray1[0][10]=myTempOrdersArray[j-1][10];
                                  myTempArray1[0][11]=myTempOrdersArray[j-1][11];
                                  
                                  myTempOrdersArray[j-1][0]=myTempOrdersArray[j][0];
                                  myTempOrdersArray[j-1][1]=myTempOrdersArray[j][1];
                                  myTempOrdersArray[j-1][2]=myTempOrdersArray[j][2];
                                  myTempOrdersArray[j-1][3]=myTempOrdersArray[j][3];
                                  myTempOrdersArray[j-1][4]=myTempOrdersArray[j][4];
                                  myTempOrdersArray[j-1][5]=myTempOrdersArray[j][5];
                                  myTempOrdersArray[j-1][6]=myTempOrdersArray[j][6];
                                  myTempOrdersArray[j-1][7]=myTempOrdersArray[j][7];
                                  myTempOrdersArray[j-1][8]=myTempOrdersArray[j][8];
                                  myTempOrdersArray[j-1][9]=myTempOrdersArray[j][9];
                                  myTempOrdersArray[j-1][10]=myTempOrdersArray[j][10];
                                  myTempOrdersArray[j-1][11]=myTempOrdersArray[j][11];
                                  
                                  myTempOrdersArray[j][0]=myTempArray1[0][0];
                                  myTempOrdersArray[j][1]=myTempArray1[0][1];
                                  myTempOrdersArray[j][2]=myTempArray1[0][2];
                                  myTempOrdersArray[j][3]=myTempArray1[0][3];
                                  myTempOrdersArray[j][4]=myTempArray1[0][4];
                                  myTempOrdersArray[j][5]=myTempArray1[0][5];
                                  myTempOrdersArray[j][6]=myTempArray1[0][6];
                                  myTempOrdersArray[j][7]=myTempArray1[0][7];
                                  myTempOrdersArray[j][8]=myTempArray1[0][8];
                                  myTempOrdersArray[j][9]=myTempArray1[0][9];
                                  myTempOrdersArray[j][10]=myTempArray1[0][10];
                                  myTempOrdersArray[j][11]=myTempArray1[0][11];
                               }
                         }
                   }
             }
          //X订单类型最小亏损单
          if (myOrderSort==2 && myMaxMin==1)
             {
                for (cnt=0; cnt<=myArraycnt1; cnt++)
                   {
                      myType=NormalizeDouble(myTempOrdersArray[cnt][3],0);
                      if (myTempOrdersArray[cnt][2]<0 && myType==myOrderType)
                         {
                            myTicket=NormalizeDouble(myTempOrdersArray[cnt][0],0);
                            break;
                         }
                   }
             }
          //X订单类型最大亏损单
          if (myOrderSort==2 && myMaxMin==0)
             {
                for (cnt=myArraycnt1; cnt>=0; cnt--)
                   {
                      myType=NormalizeDouble(myTempOrdersArray[cnt][3],0);
                      if (myTempOrdersArray[cnt][2]<0 && myType==myOrderType)
                         {
                            myTicket=NormalizeDouble(myTempOrdersArray[cnt][0],0);
                            break;
                         }
                   }
             }
          //X订单类型最大盈利单
          if (myOrderSort==1 && myMaxMin==0)
             {
                for (cnt=0; cnt<=myArraycnt1; cnt++)
                   {
                      myType=NormalizeDouble(myTempOrdersArray[cnt][3],0);
                      if (myTempOrdersArray[cnt][2]>0 && myType==myOrderType)
                         {
                            myTicket=NormalizeDouble(myTempOrdersArray[cnt][0],0);
                            break;
                         }
                   }
             }
          //X订单类型最小盈利单
          if (myOrderSort==1 && myMaxMin==1)
             {
                for (cnt=myArraycnt1; cnt>=0; cnt--)
                   {
                      myType=NormalizeDouble(myTempOrdersArray[cnt][3],0);
                      if (myTempOrdersArray[cnt][2]>0 && myType==myOrderType)
                         {
                            myTicket=NormalizeDouble(myTempOrdersArray[cnt][0],0);
                            break;
                         }
                   }
             }
          //X订单类型第1开仓单
          if (myOrderSort==0 && myMaxMin==1)
             {
                for (cnt=MyArrayRange; cnt>=0; cnt--)
                   {
                      myType=NormalizeDouble(OrdersArray[cnt][3],0);
                      if (OrdersArray[cnt][0]!=0 && myType==myOrderType)
                         {
                            myTicket=NormalizeDouble(OrdersArray[cnt][0],0);
                            break;
                         }
                   }
             }
          //X类型最后开仓单
          if (myOrderSort==0 && myMaxMin==0)
             {
                for (cnt=0; cnt<=MyArrayRange; cnt++)
                   {
                      myType=NormalizeDouble(OrdersArray[cnt][3],0);
                      if (OrdersArray[cnt][0]!=0 && myType==myOrderType)
                         {
                            myTicket=NormalizeDouble(OrdersArray[cnt][0],0);
                            break;
                         }
                   }
             }
          return(myTicket);
       }
    int init()
       {
          iShowInfo();
          //初始化预设变数
          Lots=预设开仓量;
          MyOrderComment=订单注释;
          MyMagicNum=订单特征码;
          return(0);
       }
    int deinit()
       {
          return(0);
       }

    ""
    还没有人打赏,支持一下
    回复

    举报

     

    回答|共 7 个

    sailchen LV0

    发表于 2017-5-2 11:11:53 | 显示全部楼层

    各位大虾  帮个忙吧  我小白一个  求助。。。

    sailchen LV0

    发表于 2017-5-2 20:45:18 | 显示全部楼层

    自己处理已经通过

    笑傲股林 LV3

    发表于 2020-4-21 17:46:44 | 显示全部楼层

    :lol不错

    gold LV6

    发表于 2020-7-21 14:27:35 | 显示全部楼层

    学习了,不错

    sorry LV3

    发表于 2020-7-21 15:08:29 | 显示全部楼层

    帮你顶下哈!!

    FXSIN LV3

    发表于 2020-8-9 14:18:17 | 显示全部楼层

    谢谢楼主分享
    您需要登录后才可以回帖 登录 | 注册

    提醒: 禁止引战、谩骂、灌水内容

    微信二维码

    有问题联系客服