2114  

 

中文有人翻譯為正弦波指標,在multicharts裡面並沒有該內建指標,google可以搜尋得到,計算公式有些複雜程式碼有點長 ,有興趣的自行研究看看

Inputs: Price((H+L)/2);

Vars: InPhase(0), Quadrature(0),Phase(0),DeltaPhase(0),count(0),InstPeriod(0),Period(0),DCPhase(0),RealPart(0),ImagPart(0);

 If CurrentBar > 5 then begin

Value1 = Price - Price[6];

Value2 =Value1[3];

Value3 =.75*(Value1 - Value1[6]) + .25*(Value1[2] - Value1[4]);

InPhase = .33*Value2 + .67*InPhase[1];

Quadrature = .2*Value3 + .8*Quadrature[1];

If AbsValue(InPhase +InPhase[1]) > 0 then Phase =

ArcTangent(AbsValue((Quadrature+Quadrature[1]) / (InPhase+InPhase[1])));

If InPhase < 0 and Quadrature > 0 then Phase = 180 - Phase;

If InPhase < 0 and Quadrature < 0 then Phase = 180 + Phase;

If InPhase > 0 and Quadrature < 0 then Phase = 360 - Phase;

DeltaPhase = Phase[1] - Phase;

If Phase[1] < 90 and Phase > 270 then DeltaPhase = 360 + Phase[1] - Phase;

If DeltaPhase < 1 then DeltaPhase = 1;

If DeltaPhase > 60 then Deltaphase = 60;

InstPeriod = 0;

Value4 = 0;

For count = 0 to 40 begin

Value4 = Value4 + DeltaPhase[count];

If Value4 > 360 and InstPeriod = 0 then begin

InstPeriod = count;

end;

end;

If InstPeriod = 0 then InstPeriod = InstPeriod[1];

Value5 = .25*InstPeriod + .75*Value5[1];

Period = IntPortion(Value5);

RealPart = 0;

ImagPart = 0;

For count = 0 To Period - 1 begin

RealPart = RealPart + Sine(360 * count / Period) * (Price[count]);

ImagPart = ImagPart + Cosine(360 * count / Period) * (Price[count]);

end;

If AbsValue(ImagPart) > 0.001 then DCPhase = Arctangent(RealPart / ImagPart);

If AbsValue(ImagPart) <= 0.001 then DCPhase = 90 * Sign(RealPart);

 DCPhase = DCPhase + 90;

If ImagPart < 0 then DCPhase = DCPhase + 180;

If DCPhase > 315 then DCPhase = DCPhase - 360;

Plot1(Sine(DCPhase), "Sine");

Plot2(Sine(DCPhase + 45), "LeadSine");

 end;

2110   

 

 

 

arrow
arrow
    全站熱搜

    元大期貨楊宗儒 發表在 痞客邦 留言(0) 人氣()