MQL4 - automated forex trading   /  

Forum

Login | Register | Language: ru cn en
Have Something to Say to Traders? Welcome to Blogs!

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");

 
The average bid of high-yield flow-name bonds rocketed 272 bps, single largest gain in roughly three years
The average bid of high-yield flow-name bonds rocketed 272 bps, to 101.33% of par, yielding 6.74%, from 98.61, according to LCD. All 15 of the constituents notched big gains. In a snapback rally from the depths of October’s nosedive, the average posted its single largest gain in roughly three years, or since a gain of 332 bps for the observation of Sept.
avatar
39
marcb 2008.02.06 11:47 #
 

Anybody would help with this?

Thanks!

avatar
Moderator
28386
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
28386
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