/  Forum 

Mechanical Trading System "Chuvashov's Triangle" Let me offer you an overview and the program code of the mechanical trading system based on ideas of Stanislav Chuvashov. Triangle's construction is based on the intersection of two trend lines built by the upper and lower fractals. 

28355 
May be a few later. See attached files.


Thanks for the reply! I have a Newbie question regarding the start() function: 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? 
28355 
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. 
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");