📜  查找最后一个分形函数 MQL4 (1)

📅  最后修改于: 2023-12-03 14:55:34.828000             🧑  作者: Mango

查找最后一个分形函数 MQL4

在MQL4中,分形(Fractal)是由Bill Williams 在其《深入了解市场》一书中提出的一种技术指标。分形可以辅助我们识别市场趋势以及反转点的位置。在分形中,最后一个分形的位置尤为重要,因为它可以告诉我们当前市场的走势方向。

在MQL4中查找最后一个分形的方法有很多种,以下是其中的两种方法。

方法一:使用iFractals函数

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 的介绍。希望对大家有所帮助。