📅  最后修改于: 2023-12-03 14:55:34.828000             🧑  作者: Mango
在MQL4中,分形(Fractal)是由Bill Williams 在其《深入了解市场》一书中提出的一种技术指标。分形可以辅助我们识别市场趋势以及反转点的位置。在分形中,最后一个分形的位置尤为重要,因为它可以告诉我们当前市场的走势方向。
在MQL4中查找最后一个分形的方法有很多种,以下是其中的两种方法。
iFractals函数是MQL4中用来计算分形指标的内置函数。在该函数中,mode参数为0代表计算上升分形,为1代表计算下降分形。通过遍历最近的K个价格序列,我们可以获取最后一个分形的位置。
int lastFractal = -1;
for(int i = 1; i <= K; i++){
double topFractal = iFractals(_Symbol, _Period, 0, i);
double bottomFractal = iFractals(_Symbol, _Period, 1, i);
if(topFractal > 0){
lastFractal = i;
}
if(bottomFractal > 0){
lastFractal = i;
}
}
在上述代码中,我们先将最后一个分形的位置初始化为-1,然后遍历最近的K个价格序列。在每个价格序列中,我们使用iFractals函数计算出上升分形和下降分形的位置,并将lastFractal更新为当前位置i。最终得到的lastFractal即为最后一个分形的位置。
我们也可以自定义一个函数来查找最后一个分形的位置。在该函数中,我们先遍历最近的N个价格序列,找到第一个分形的位置,然后从该位置开始继续查找下一个分形,直到找到最后一个分形。
int findLastFractal(int symbol, ENUM_TIMEFRAMES timeframe, int n){
double topFractal = iFractals(symbol, timeframe, 0, n);
double bottomFractal = iFractals(symbol, timeframe, 1, n);
if(topFractal > 0){
for(int i = n+1; i <= Bars; i++){
double nextTopFractal = iFractals(symbol, timeframe, 0, i);
double nextBottomFractal = iFractals(symbol, timeframe, 1, i);
if(nextTopFractal > 0){
topFractal = nextTopFractal;
}
if(nextBottomFractal > 0){
bottomFractal = nextBottomFractal;
}
}
int lastFractal = topFractal > bottomFractal ? topFractal : bottomFractal;
return lastFractal;
}
if(bottomFractal > 0){
for(int i = n+1; i <= Bars; i++){
double nextTopFractal = iFractals(symbol, timeframe, 0, i);
double nextBottomFractal = iFractals(symbol, timeframe, 1, i);
if(nextTopFractal > 0){
topFractal = nextTopFractal;
}
if(nextBottomFractal > 0){
bottomFractal = nextBottomFractal;
}
}
int lastFractal = topFractal > bottomFractal ? topFractal : bottomFractal;
return lastFractal;
}
return -1;
}
在上述代码中,我们定义了一个名为findLastFractal的函数,该函数有三个参数:symbol代表货币对,timeframe代表时间周期,n代表遍历的最近N个价格序列。首先我们使用iFractals函数计算出第一个分形的位置,然后从该位置开始遍历后续的价格序列。在每个价格序列中,我们使用iFractals函数计算出上升分形和下降分形的位置,并将topFractal和bottomFractal更新为当前位置i。最终的lastFracal即为topFractal和bottomFractal中最大的值。
以上即是查找最后一个分形函数 MQL4 的介绍。希望对大家有所帮助。