MQL4 - automated forex trading   /  

Forum

Login | Register | Language: ru cn en
How to Use MQL5 Constructions? Check the Documentation!

Ehlers sinewave indicator translation into MQL4

Back to topics list To post a new topic, please log in or register
avatar
39
marcb 2008.02.02 14:10
 

Hello,

Is there enybody who could help in rewriting the Ehlers sinewave indicator in MQL4?
This is the code in Easylanguage (Tradestation).

Thanks!

--------------------------------------------------------------

Inputs: Price((H+L)/2),
alpha(.07);

Vars: Smooth(0),
Cycle(0),
I1(0),
Q1(0),
I2(0),
Q2(0),
Deltaphase(0),
MedianDelta(0),
Maxhmp(0),
AmpFix(0),
Re(0),
Im(0),
DC(0),
alpha1(0),
InstPeriod(0),
DCPeriod(0),
count(0),
Smoothcycle(0),
Realpart(0),
Imagpart(0),
DCPhase(0);

smooth = (Price + 2*Price[1] + 2*Price[2] + Price[3])/6;

Cycle = (1 - .5*alpha)*(1 - .5*alpha)*(Smooth - 2*Smooth[1] + Smooth[2]) + 2*(1 - alpha)*Cycle[1] - (1 - alpha)*(1 - alpha)*Cycle[2];
If currentbar < 7 then Cycle = (Price - 2*Price[1] + Price[2]) / 4;
{Cycle = Price;}

Q1 = (.0962*Cycle + .5769*Cycle[2] - .5769*Cycle[4] - .0962*Cycle[6])*(.5 + .08*InstPeriod[1]);
I1 = Cycle[3];
If Q1 <> 0 and Q1[1] <> O then Deltaphase = (I1/Q1 - I1[1]/Q1[1]) / (1 + I1*I1[1]/(Q1*Q1[1]));

If Deltaphase < 0.1 then Deltaphase = 0.1;
If Deltaphase > 1.1 then Deltaphase = 1.1;
MedianDelta = Median(Deltaphase, 5);
If MedianDelta = 0 then DC = 15 else DC = 6.28318/MedianDelta + .5;
InstPeriod = .33*DC + .67*InstPeriod[1];
Value1 = .15*InstPeriod + .85*Value1[1];

{Compute Dominant Cycle Phase}
DcPeriod = IntPortion(value1);
RealPart = 0:
ImagPart = 0;
For count = 0 To DcPeriod - 1 begin
RealPart = RealPart + Sine(360 * count/DcPeriod) * (Cycle[count]);
ImagPart = ImagPart + Cosine(360 * count/DcPeriod) * (Cycle[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");
Plot1(Sine(Dcphase + 45), "LeadSine");

 
USDJPY Technical Analysis: Longs Preferred, Doji by indecision, Daily Close Above 107.00 With Next 108.00

USDJPY Technical Analysis: Longs Preferred, Doji by indecision, Daily Close Above 107.00 With Next 108.00

USDJPY traders are showing signs of indecision as denoted by a Doji on the daily. Yet in the absence of clear reversal signals there remains the potential for a journey higher to resume. The daily close above the 107 hurdle may set the pair up for a grind towards the next psychologically-significant ceiling at 108.

avatar
39
marcb 2008.02.06 11:47 #
 

Anybody would help with this?

Thanks!

avatar
Moderator
28371
Rosh 2008.02.06 13:01 #
 
May be a few later. See attached files.
Attached files:
  mama_slave2.mq4  (5.81 KB)
  mama_fama.mq4  (3.86 KB)
avatar
39
marcb 2008.02.06 15:29 #
 

Thanks for the reply!

I have a Newbie question regarding the start() function:
this will be trigger each time a candle has been closed or while it's forming?

For example, you are workin with 15 minutes chart, the most recent candle is still forming and continously updating during 15 minutes time interval.

The start() function will be called only at the end of each 15 minutes time frame or each time the candle gets updated before the end of 15 minutes interval?

 
avatar
Moderator
28371
Rosh 2008.02.06 16:37 #
 
No. Each incoming tick launches the start() function. See Documentation - http://docs.mql4.com/runtime/start

At incoming of new quotes, the start() function of the attached experts and custom indicators will be executed. If the start() function launched at the preceding quote was running when a new quote came, the new quote will be skipped by the expert. All new quotes income while the program was being executed are skipped by the program until the current execution of the start() function has been completed. After that, the start() function will be run only when a successive new quote incomes. For custom indicators, the start() function will be launched for recalculation after the current chart symbol or timeframe has been changed independently on new quotes incoming. The start() function will not be run when the expert properties window is open. The latter cannot be opened during the expert execution.


 
Back to topics list  

To add comments, please log in or register