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

接着讲Forex Combo 1.46…… 睡不着还是来写完它比较踏实。这我认为是个不错的EA
上一次已经讲完它MM Parameters的参数作用以及前面参数的作用。

extern string CommonMM = "==== Main MM Parameters ====";
extern double MMMax = 20.0;
extern double MaximalLots = 50.0;
Main固然汉义过来是主要的意思。来看看这两个参数作用。
MMMax出现的代码处:
回顾上一遍的CalcTradeMMSys1\2\3函数,在这里的末尾都有出现:
if (MMMax > 0.0 && ld_ret_0 > MMMax) ld_ret_0 = MMMax;
作用很明显主要来限制CalcTradeMMSys返回的最大值。如果大于MMMax就返回MMMax
MaximalLots出现的代码处:
 if (l_lots_392 > MaximalLots) l_lots_392 = MaximalLots;
l_lots_392变量是下单的手数,大概的作用也就是用于限制最大的下单手数。
这两个参数都是最基础,但是也是三种模式都共用的,所以才是主要资金管理参数的原因吧。
 
到下面的都是三种模式交易的参数:System Parameters
extern string Scalping = "==== FXCOMBO Scalping System Parameters ====";
extern int StopLoss = 300;
extern int TakeProfit = 21;
int g_period_336 = 60;
extern int TREND_STR = 20;
int g_period_344 = 18;
extern int OSC_open = 10;
extern int OSC_close = 13;
int gi_356 = -5;
int gi_360 = 21;
int gi_unused_364 = 21;
int gi_368 = 6;

StopLoss与TakeProfit:设置止损和止盈这个没什么疑问
g_period_336 = 60:这个参数也没有提供外部参数,那么我们看看这个参数出现的代码处
double l_ima_100 = iMA(NULL, PERIOD_M15, g_period_336, 0, MODE_SMMA, PRICE_CLOSE, 1);
大家需要根据自己的代码来看来搜索,有可能反编译的变量名不一样,但如果出处一样这些的变量名称应该是一样。
大概看了一下 l_ima_100 是它用于判断交易值之一,g_period_336,是设置其均线周期。
TREND_STR:部分代码
double l_iclose_92 = iClose(NULL, PERIOD_M15, 1);
if (Digits <= 3) ld_40 = 0.01;
else ld_40 = 0.0001;
l_iclose_92 > l_ima_100 + TREND_STR * ld_40

判断前一根柱子的收盘价是否在均线值+TREND_STR的上面
由于代码太多,不太方便粘贴,只能在这里粗略的说说。大家应该看得懂这些参数的用意。
 g_period_344这个参数没有提供外部参数,看看出现的代码处
double l_iwpr_108 = iWPR(NULL, PERIOD_M15, g_period_344, 1);
if (l_iwpr_108 > (-OSC_close) && Bid > l_iclose_92 + gi_356 * ld_40)

这是wpr的周期设置,顺便查看一下应用108变量的地方,这里还出现了OSC_close的变量。
OSC_open、OSC_close:
l_iwpr_108 < OSC_open + (-100)

联系一下上文就可以知道其参数的意义。
gi_356出现的代码段:也是交易条件之一
Bid > l_iclose_92 + gi_356 * ld_40
Bid < l_iclose_92 - gi_356 * ld_40
gi_360 出现的代码段:
int li_196 = gi_360 + li_48;
li_48是值是时区;gi_360看来跟时间有关系。
gi_unused_364 没有被使用过的痕迹,估计写多了的。
 gi_368出现的代码处:
l_iwpr_108 < gi_368 +(-100)
这样分散来看,只能看出这些变量的定义和使用地方,还不能完全看出系统的交易方法。但这很有用。我们开始去交易的地方看看。

下面是买单的交易条件:

         if (l_count_256 < 1 && (l_iclose_92 > l_ima_100 + TREND_STR * ld_40 && l_iwpr_108 < OSC_open + (-100) && Bid < l_iclose_92 - gi_356 * ld_40) || (l_iwpr_108 < gi_368 +

            (-100) && Bid < l_iclose_92 - gi_356 * ld_40 && Hour() == li_196 || Hour() == li_200)) {

            ls_400 = "BUY";

            l_cmd_28 = 0;

            l_color_24 = Aqua;

            RefreshRates();

            l_price_0 = NormalizeDouble(Ask, Digits);

            l_price_8 = l_price_0 - StopLoss * ld_40;

            l_price_16 = l_price_0 + TakeProfit * ld_40;

         }

下面是卖单条件:

         if (l_count_260 < 1 && (l_iclose_92 < l_ima_100 - TREND_STR * ld_40 && l_iwpr_108 > (-OSC_open) && Bid > l_iclose_92 + gi_356 * ld_40) || (l_iwpr_108 > (-gi_368) &&

            Bid > l_iclose_92 + gi_356 * ld_40 && Hour() == li_196 || Hour() == li_200)) {

            ls_400 = "SELL";

            l_cmd_28 = 1;

            l_color_24 = Red;

            RefreshRates();

            l_price_0 = NormalizeDouble(Bid, Digits);

            l_price_8 = l_price_0 + StopLoss * ld_40;

            l_price_16 = l_price_0 - TakeProfit * ld_40;

         }

在结合我们上面变量,大概应该可以知道Scalping交易的条件。
 

笔记到此,待续……

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); })();