设为首页收藏本站

外汇天网_外汇天论坛_元宇宙EA策略_元宇宙神器_汇天神器_财神风暴_稳赚EA_暴利EA_外汇110网_ICMarkets怎么样_代客操盘月赚50%_外汇ea之家_外汇ea编程_外汇ea下载_外汇通_外汇代客操盘协议_趋势EA_点差最低MT4平台_盛宝外汇平台_交易家_zulutrade跟单_MT4商品代码代表什么_剥头皮策略、外汇天眼、外汇换算、外汇论坛排行榜、外汇论坛哪个最好、外汇论坛哪家好、外汇额度、外汇EA、外汇EA策略、外汇EA编程、外汇EA是什么、EA观外汇平仓、外汇MT4摩、外汇平台哪个比较好、

 找回密码
 立即注册
查看: 5326|回复: 2
打印 上一主题 下一主题

写EA语法大全 编写程序必备语法下载

[复制链接]

1275

主题

30

听众

1069万

积分

管理员

Rank: 29Rank: 29Rank: 29Rank: 29Rank: 29Rank: 29Rank: 29Rank: 29

活跃会员 热心会员 推广达人 宣传达人 突出贡献 优秀版主 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2018-3-13 22:52:08 |只看该作者 |倒序浏览
写EA语法大全.rar (98.46 KB, 下载次数: 16, 售价: 2 金币)
1.1-1 控单模版
/*
【程序名称及版本号】
控单模版[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--)



上一篇:如何提高自己的外汇交易技巧
下一篇:超稳定的短牛EA,带止损的好EA

0

主题

4

听众

1557

积分

金牌会员

Rank: 6Rank: 6

沙发
发表于 2019-3-2 11:22:59 |只看该作者
看看学习学习。
回复

使用道具 举报

0

主题

6

听众

183

积分

注册会员

Rank: 2

板凳
发表于 2019-7-30 10:02:58 |只看该作者
写EA语法大全 编写程序必备语法下载
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册
验证问答 换一个

外汇天发布的写EA语法大全 编写程序必备语法下载帖子由网友提供或转载于网络,若发布的写EA语法大全 编写程序必备语法下载侵犯了您的权益,请联系我们.

微信扫码加好友
咨询中心
关闭
客服中心
外汇投资交流3群 ——业务合作咨询:QQ:1377422008
QQ:1136145178
电子邮箱:
1377422008@QQ.com
网址:FXwht.com
客服中心

QQ|Archiver|手机版|外汇天网    

GMT+8, 2024-11-25 19:14 , Processed in 0.145656 second(s), 34 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部