[转FX988]Forex Combo 1.46 详解笔记六

已经研究了前面的两个模式,继续完成第三模式的研究,Reversal模式,列出它相关的参数:
extern int BegHourSys_III = 22;
extern int EndHourSys_III = 0;
extern double TakeProfit_III = 160.0;
extern int StopLoss_III = 70;
int gi_508 = 300;
extern int MaxPipsTrailing3 = 60;
extern int MinPipsTrailing3 = 20;
int g_period_520 = 60;
double gd_524 = 13.0;
int g_period_532 = 26;
int gi_536 = -3;
int gi_540 = 30;
bool gi_544 = TRUE;
string gs_548 = "";
double g_minlot_556 = 0.0;
double g_maxlot_564 = 0.0;
int g_leverage_572 = 0;
int g_lotsize_576 = 0;
int g_stoplevel_580 = 0;
int g_datetime_584 = 0;
int g_datetime_588 = 0;


不是extern的,可能有些不是它的参数,因为这是整个EA,全局变量的结尾了,也就是我们的研究已经接近尾声了。
我们先研究下面两个外部参数,并且列出它的代码出现地方:
extern int BegHourSys_III = 22;
extern int EndHourSys_III = 0;
   int li_204 = BegHourSys_III + li_48;
   int li_208 = EndHourSys_III + li_48;
   if (li_204 > 23) li_204 -= 24;
   if (li_204 < 0) li_204 += 24;
   if (li_208 > 23) li_208 -= 24;
   if (li_208 < 0) li_208 += 24;

大概就明白了,这两个参数是限制这个模式所处于的时间段。
用Alert调试一下。
我测试的时候是0、1、2这三个小时数交易
extern double TakeProfit_III = 160.0;
extern int StopLoss_III = 70;

这是这个模式的止损止盈的设置,不进行探讨
int gi_508 = 300;
 int li_292 = g_datetime_588 + gi_508;
这个 gi_508 是用来设置移动止损的修改间隔
与模式二的有类似的地方
extern int MaxPipsTrailing3 = 60;
extern int MinPipsTrailing3 = 20;

如果要上面这两个外部参数,把这段贴出来可能更好的去理解它以及还有其他参数:
                  if (TimeCurrent() >= li_292) {
                     ld_376 = l_iatr_156 * gd_524;
                     if (ld_376 > MaxPipsTrailing3 * ld_40) ld_376 = MaxPipsTrailing3 * ld_40;
                     if (ld_376 < MinPipsTrailing3 * ld_40) ld_376 = MinPipsTrailing3 * ld_40;
                     l_price_384 = NormalizeDouble(Bid - ld_376, Digits);
                     if (Bid - OrderOpenPrice() > ld_376) {
                        if (OrderStopLoss() < l_price_384 && CheckStop(OrderType(), l_price_384)) {
                           l_bool_36 = OrderModify(OrderTicket(), OrderOpenPrice(), l_price_384, OrderTakeProfit(), 0, Blue);
                           if (l_bool_36) {
                              l_datetime_288 = TimeCurrent();
                              g_datetime_588 = l_datetime_288;
                           }
                        }
                     }
                  }


double l_iatr_156 = iATR(NULL, PERIOD_M5, g_period_520, 1);
int g_period_520 = 60;
double gd_524 = 13.0;
MaxPipsTrailing3 = 60;
MinPipsTrailing3 = 20;

 if (ld_376 > MaxPipsTrailing3 * ld_40)  如果这个条件为真的话那么l_iatr_15>=0.0005的值,它满足这个条件
 if (ld_376 < MinPipsTrailing3 * ld_40)如果这个条件为真的话那么l_iatr_156<=0.0001的值,它满足这个条件
MinPipsTrailing应该很难达到了。
这种移动止损模式真的很特别。根据ATR指标来移动止损,用MAX和MIN限制移动的大小。
  l_price_384 = NormalizeDouble(Bid - ld_376, Digits)//计算新止损的位置
 if (Bid - OrderOpenPrice() > ld_376) //如果买单盈利的点数>ld_376
 if (OrderStopLoss() < l_price_384 && CheckStop(OrderType(), l_price_384)) {//毕竟新的止损位>旧的止损位则进行修改止损
                           if (l_bool_36) {
                              l_datetime_288 = TimeCurrent();
                              g_datetime_588 = l_datetime_288;
                           }

//如果修改成功,则记录当前时间。

它的模式二和模式三是用同样的方式进行移动止损,使用ATR*一个系数,等到移动的点子,然后进行判断移动的点子是不是在合理的范围内,超过了就设定为最大或最小的移动的止损点,然后计算新的止损位置,再判断现在的盈利点是否>这个要移动的止损点,并且新的止损>旧的止损就修改止损。当然模式二它移动止损比模式三就多了一个条件。基本差不多
点评:这个移动止损机制的好坏,要看参数的设置,参数设置的好,才可以充分利用盈利空间,否则将浪费百分50的利润,那就弄巧成拙了。所以调整好这几个参数,反而资金管理参数默认的就可以了,甚至不用都可以。

移动止损分析完,可是还没有涉及到开仓和平仓内容,证明这两部分的参数都被隐藏起来了,FOREXCOMBO看来是只给客户提供修改资金管理和移动止损的接口,除了模式一,基本没有透漏多少的策略,真需要分析代码。

找一下Reversal模式的开仓条件,我所有的笔记都是只讲解BUY或SELL。

         if (l_count_272 < 1 && (li_204 <= li_208 && TimeHour(TimeCurrent()) >= li_204 && TimeHour(TimeCurrent()) <= li_208) || (li_204 > li_208 && TimeHour(TimeCurrent()) >= li_204 ||
            TimeHour(TimeCurrent()) <= li_208) && l_ibands_180 - l_ibands_188 >= gi_540 * ld_40 && l_ilow_172 < l_ibands_188 - gi_536 * ld_40) {

这个IF条件是BUY单的条件,好长一段代码是限制时间的条件,不解读了。
 l_ibands_180 - l_ibands_188 >= gi_540 * ld_40 && l_ilow_172 < l_ibands_188 - gi_536 * ld_40 这是主要的交易条件

   double l_ibands_180 = iBands(NULL, PERIOD_H1, g_period_532, 2, 0, PRICE_CLOSE, MODE_UPPER, 1);
   double l_ibands_188 = iBands(NULL, PERIOD_H1, g_period_532, 2, 0, PRICE_CLOSE, MODE_LOWER, 1);

int gi_540 = 30;//BOLL的轨道距离
int g_period_532 = 26;//一小时BOLL的周期
 l_ilow_172 1小时图的前一根K线的最低价
int gi_536 = -3;
主要是这两个条件了,1小时的26的BOLL规矩>30并且前一根K线的最低价格已经跌破了BOLL下轨-(-3)点
如果gi_536如果越大则越难满足交易条件。

现在我们去寻找其BUY的平仓条件:
                  if ((li_204 <= li_208 && TimeHour(TimeCurrent()) >= li_204 && TimeHour(TimeCurrent()) <= li_208) || (li_204 > li_208 && TimeHour(TimeCurrent()) >= li_204 || TimeHour(TimeCurrent()) <= li_208) && l_ibands_180 - l_ibands_188 >= gi_540 * ld_40 && l_ihigh_164 > l_ibands_180 + gi_536 * ld_40) {
一样平仓和开仓都必须是在指定的小时数里面
 l_ibands_180 - l_ibands_188 >= gi_540 * ld_40 && l_ihigh_164 > l_ibands_180 + gi_536 * ld_40
这才是主要的平仓条件:轨道的距离要>=30并且前一根K线的最高突破上轨+(-3)点

买单的平仓条件也是卖单的开仓条件
卖单的平仓条件也是买单的开仓条件

整个FOREXCOMBO就分析完了。这个EA对通道这玩意用的很多,有自己构造的通道。移动止损方便它特有的ATR的移动止损方法。接着上传一下第三模式的测试图
 

骚片AV说真的这个模式不咋滴,1年了折腾的很,如果叫一个人去投资这样的收益率的EA估计他肯定不肯。

var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?44d5929b98ed1fd093ffc3d47ec712b9"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();