设为首页 收藏本站 切换语言

【Combo Right EA】含源码代码解析

| 发表于 2022-12-3 16:56:52 | 显示全部楼层 |复制链接
Combo_Right EA单量偏大,属于超短剥头皮类型EA。如何有效的解决盈亏比乃是决定该款EA能否创造盈利的核心问题。




原版说明在这里 。

//+------------------------------------------------------------------+
//|                                          Combo_Right.mq4 |
//|                           Copyright ?2008, Yury V. Reshetov |
//|                          /load/2-1-0-171 |
//+------------------------------------------------------------------+
#property copyright "Copyright ?2008, Yury V. Reshetov"
#property link     "http://bigforex.biz/load/2-1-0-171"

//---- input parameters
extern double      tp1 = 50;
extern double      sl1 = 50;
extern int         p1 = 10;
extern int         x12 = 100;
extern int         x22 = 100;
extern int         x32 = 100;
extern int         x42 = 100;
extern double      tp2 = 50;
extern double      sl2 = 50;
extern int         p2 = 20;
extern int         x13 = 100;
extern int         x23 = 100;
extern int         x33 = 100;
extern int         x43 = 100;
extern double      tp3 = 50;
extern double      sl3 = 50;
extern int         p3 = 20;
extern int         x14 = 100;
extern int         x24 = 100;
extern int         x34 = 100;
extern int         x44 = 100;
extern int         p4 = 20;
extern int         pass = 1;
extern double      lots = 0.01;
extern int         mn = 888;
static int         prevtime = 0;
static double      sl = 10;
static double      tp = 10;

以上是相关的变量 ,带有 Extern 的可以被 优化和外部更改 ;

//+------------------------------------------------------------------+
//| expert start function                                     |
//+------------------------------------------------------------------+
int start()
  {
   if (Time[0] == prevtime) return(0);
   prevtime = Time[0];
   //上面判断是否在当前时段已经做过处理了 ;
   if (! IsTradeAllowed()) {
     again();
     return(0);
   }
   //这段判断是否允许交易 ;
//----
   int total = OrdersTotal();
   for (int i = 0; i < total; i++) {
     OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == mn) {
        return(0);
     }
   }
  //如果有EA开出的交易单存在,则退出时段,等待交易单被止损或者止盈 ;

   sl = sl1;
   tp = tp1;
   //盈亏点的初始化 ;
   int ticket = -1;

   RefreshRates();
   //强制刷新数据 ;

   if (Supervisor() > 0) {
     ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, 1, Bid - sl * Point, Bid + tp * Point, WindowExpertName(), mn, 0, Blue);
      if (ticket < 0) {
        again();     
     }
   } else {
     ticket = OrderSend(Symbol(), OP_SELL, lots, Bid, 1, Ask + sl * Point, Ask - tp * Point, WindowExpertName(), mn, 0, Red);
      if (ticket < 0) {
        again();
     }
   //根据判断开单子,做东或者做空 ;如果开单失败,清除标记位,等待Tick到来后,重新开单 ;
   }
//-- Exit --
   return(0);
}
//+--------------------------- getLots ----------------------------------+


double Supervisor() {
   if (pass == 4) {
      if (perceptron3() > 0) {
        if (perceptron2() > 0) {
           sl = sl3;
           tp = tp3;
          return(1);
        }
      } else {
        if (perceptron1() < 0) {
           sl = sl2;
           tp = tp2;
          return(-1);
        }
     }
     return(basicTradingSystem());
   }

   if (pass == 3) {
      if (perceptron2() > 0) {
        sl = sl3;
        tp = tp3;
        return(1);
      } else {
       return(basicTradingSystem());
      }
   }

   if (pass == 2) {
      if (perceptron1() < 0) {
        sl = sl2;
        tp = tp2;
        return(-1);
      } else {
       return(basicTradingSystem());
      }

   }
  return(basicTradingSystem());

   //这里根据 Pass 参数的不同选择不同的判断方式和参数,从神经网络来看,这里应该是构成 BTS 基本的感知器
}

double perceptron1()   {
   double      w1 = x12 - 100;
   double      w2 = x22 - 100;
   double      w3 = x32 - 100;
   double      w4 = x42 - 100;
   double a1 = Close[0] - Open[p2];
   double a2 = Open[p2] - Open[p2 * 2];
   double a3 = Open[p2 * 2] - Open[p2 * 3];
   double a4 = Open[p2 * 3] - Open[p2 * 4];
   return(w1 * a1 + w2 * a2 + w3 * a3 + w4 * a4);
}

double perceptron2()   {
   double      w1 = x13 - 100;
   double      w2 = x23 - 100;
   double      w3 = x33 - 100;
   double      w4 = x43 - 100;
   double a1 = Close[0] - Open[p3];
   double a2 = Open[p3] - Open[p3 * 2];
   double a3 = Open[p3 * 2] - Open[p3 * 3];
   double a4 = Open[p3 * 3] - Open[p3 * 4];
   return(w1 * a1 + w2 * a2 + w3 * a3 + w4 * a4);
}

double perceptron3()   {
   double      w1 = x14 - 100;
   double      w2 = x24 - 100;
   double      w3 = x34 - 100;
   double      w4 = x44 - 100;
   double a1 = Close[0] - Open[p4];
   double a2 = Open[p4] - Open[p4 * 2];
   double a3 = Open[p4 * 2] - Open[p4 * 3];
   double a4 = Open[p4 * 3] - Open[p4 * 4];
   return(w1 * a1 + w2 * a2 + w3 * a3 + w4 * a4);
}
//  上面是三个用于训练的感知器 ;基本算法是四段同周期开盘价差乘以各自系数再相加。


double basicTradingSystem() {
   return(iCCI(Symbol(), 0, p1, PRICE_OPEN, 0));
}

void again() {
   prevtime = Time[1];
   Sleep(30000);
}
photo_2022-12-03_16-54-14.jpg
photo_2022-12-03_16-54-22.jpg

Combo Right EA,基于神经网络(NN)的EA,超短剥头皮EA,含源码代码解析.ex4.ex4

21.78 KB, 下载次数: 2, 下载积分: 活跃度 -5 售价: 1 H币  [记录]  [下载]

评分
  • 1
  • 2
  • 3
  • 4
  • 5
平均分:NAN    参与人数:0    我的评分:未评 下载时遇到问题?
举报

评论 使用道具

精彩评论5

2148819371
C
| 发表于 2022-12-3 18:09:35 | 显示全部楼层
我是趟雷了吗?,加载和回测都没有半点反应
举报

点赞 1 评论 使用道具

ea12213
C
| 发表于 2022-12-3 19:50:42 | 显示全部楼层
刷单的啊
举报

点赞 评论 使用道具

kingsman
DDD
| 发表于 2022-12-3 21:03:52 | 显示全部楼层
这个手续费都不够,如果0佣金的,点差就玩死了
举报

点赞 评论 使用道具

brock
D
| 发表于 2022-12-3 23:39:54 | 显示全部楼层
客户结构i雨后i会哦
举报

点赞 评论 使用道具

emart01
DD
| 发表于 2024-3-10 08:20:57 来自手机 | 显示全部楼层
感谢分享,感谢堂雷
举报

点赞 评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册

简体中文
繁體中文
English(英语)
日本語(日语)
Deutsch(德语)
Русский язык(俄语)
بالعربية(阿拉伯语)
Türkçe(土耳其语)
Português(葡萄牙语)
ภาษาไทย(泰国语)
한어(朝鲜语/韩语)
Français(法语)