2017-07-19 150 views
-2

我如何計算昨天/前一天的纖維水平。如何在MQL4中自動計算昨天/前一天的斐波那契水平?

這是我多遠我目前:

int shift = iBarShift(NULL, PERIOD_D1, Time[0]) + 1; // yesterday 
HiPrice  = iHigh( NULL, PERIOD_D1, shift); 
LoPrice  = iLow ( NULL, PERIOD_D1, shift); 
StartTime = iTime( NULL, PERIOD_D1, shift); 

if (TimeDayOfWeek(StartTime) == 0 /* Sunday */) 
{          // Add fridays high and low 
     HiPrice = MathMax(HiPrice, iHigh(NULL, PERIOD_D1, shift + 1)); 
     LoPrice = MathMin(LoPrice, iLow( NULL, PERIOD_D1, shift + 1)); 
} 
Range = HiPrice - LoPrice; 

我想現在我應該擁有所有必要計算它的值。

我不知道如何,我現在就可以計算出不同程度的現在:
23.6 38.2 50.0 61.8 76.4和-23.6 -38.2 -50.0 -61.8 -76.4 -100

+0

哇感謝-2,不知道爲什麼它得到downvoted,但確定。 – Salexes

回答

1

所有必需的黃金分割回調的水平可就像我所知的那樣,這是最簡單的方法。然後簡單地循環對這種陣列和
+值(high + array[i]/100 * range)
值FIBO下面 - (low - array[i]/100 * range)
其中
array[] = { 23.6, 38.2, .. }(只有正值足夠)

+0

非常感謝! – Salexes

1

斐波納契水平需要的方向上,所以在上述代碼,您可能想要使用前一欄的打開和關閉值或將方向強加到高和低。這會讓您知道以何種方式繪製擴展名和回溯。

這是我以前爲此編寫的函數question。此函數假定price1位於比price2更早的時間點,然後計算方向和水平,返回FibLevel結構。

struct FibLevel { 
    double retrace38; 
    double retrace50; 
    double retrace61; 
    double extension61; 
    double extension100; 
    double extension138; 
    double extension161; 
}; 

void FibLevel(double price1, double price2,FibLevel &fiblevel) 
{ 
    double range = MathAbs(price1-price2); 
    fiblevel.retrace38 =(price1<price2)?price2-range*0.382:price1+range*0.382; 
    fiblevel.retrace50 =(price1<price2)?price2-range*0.500:price1+range*0.500; 
    fiblevel.retrace61 =(price1<price2)?price2-range*0.618:price1+range*0.618; 
    fiblevel.extension61 =(price1<price2)?price2+range*0.618:price1-range*0.618; 
    fiblevel.extension100=(price1<price2)?price2+range  :price1-range; 
    fiblevel.extension138=(price1<price2)?price2+range*1.382:price1-range*1.382; 
    fiblevel.extension161=(price1<price2)?price2+range*1.618:price1-range*1.618; 
} 
+0

非常感謝。這也像一個魅力。 – Salexes