Madrid

Madrid Sinewave

This implements the Even Better Sinewave indicator as described in the book Cycle Analysis for Traders by John F. Ehlers.
In the example I used 36 as the cycle to be analyzed and a second cycle with a shorter period, 9, the larger period tells where the dominant cycle is heading, and the faster cycle signals entry/exit points and reversals.

สคริปต์โอเพนซอร์ซ

ด้วยจิตวิญญาณของ TradingView อย่างแท้จริง ผู้เขียนสคริปต์นี้ได้เผยแพร่เป็นโอเพนซอร์ส เพื่อให้ผู้ค้าสามารถเข้าใจและตรวจสอบได้ ไชโยให้กับผู้เขียน! คุณสามารถใช้ได้ฟรี แต่การใช้รหัสนี้ซ้ำในสิ่งพิมพ์อยู่ภายใต้กฎระเบียบการใช้งาน คุณสามารถตั้งเป็นรายการโปรดเพื่อใช้บนชาร์ตได้

คำจำกัดสิทธิ์ความรับผิดชอบ

ข้อมูลและบทความไม่ได้มีวัตถุประสงค์เพื่อก่อให้เกิดกิจกรรมทางการเงิน, การลงทุน, การซื้อขาย, ข้อเสนอแนะ หรือคำแนะนำประเภทอื่น ๆ ที่ให้หรือรับรองโดย TradingView อ่านเพิ่มเติมที่ เงื่อนไขการใช้บริการ

ต้องการที่จะใช้สคริปต์นี้บนชาร์ตใช่ไหม?
// Madrid : 09/Jun/2015 21:09 : Even Better Sinewave : 1.0
// This implements the Even Better Sinewave indicator 
// Ref. Cycle Analysis for Traders by John F. Ehlers.
//

study("Madrid Sinewave", shorttitle="MSineWave")
Duration = input(36)
src = close

OB = 0.85, OS = -0.85
PI = 3.14159265358979

deg2rad( deg ) =>
        deg*PI/180.0

lowerBand = input(9)
ssFilter( price, lowerBand ) =>
    angle = sqrt(2)*PI/lowerBand
    a1= exp(-angle)
    b1 = 2*a1*cos(angle)
    c2 = b1
    c3 = -a1*a1
    c1 = 1 - c2 -c3
    filt = c1*(price + nz(price[1]))/2 + c2*nz(filt[1]) + c3*nz(filt[2])


// HighPass filter cyclic components whose periods are shorter than Duration input
x = src
angle = deg2rad(360)/Duration
alpha1 = ( 1-sin(angle) ) / cos(angle)
HP = 0.5*(1+alpha1)*(x-x[1]) + alpha1*nz(HP[1],0)

// Smooth with a Super Smoother Filter
Filt = ssFilter( HP, lowerBand )

Wave = ( Filt + nz(Filt[1],0) + nz(Filt[2],0) ) / 3
Pwr = ( Filt*Filt + nz(Filt[1],0)* nz(Filt[1],0) +  nz(Filt[2],0)* nz(Filt[2],0) ) /3

// Normalize the Average Wave to Square Root of the Average Power
sineWave = Wave / sqrt(Pwr)

// Output
sineWaveColor = sineWave>OB?green
            :  sineWave<OS?red
            :  change(sineWave)>0?green
            :  red

plot( sineWave, color=sineWaveColor, linewidth=3 )
plot( sineWave, color=sineWaveColor, linewidth=1, style=histogram )

hline(0, color=silver, linestyle=dotted)