Job finished
![](https://c.mql5.com/i/avatar/avatar_na2.png)
![](https://c.mql5.com/i/avatar/avatar_na2.png)
Specification
Hello,
I need a code to implement at my EA.
Make sure you got every detail of the code and do not hesitate to contact me.
When my EA will call this function ( "int Moment()" ), the result of the code should be: +1 for UP trend, -1 for DOWN trend and 0 for NEUTRAL.
The following should be the parameters inputs:
input group "MA" input ENUM_TIMEFRAMES MA_TimeFrame = PERIOD_CURRENT; // MA: TimeFrame input int MA_Period = 20; // MA: Averaging Period input int MA_Shift = 0; // MA: Shift input ENUM_MA_METHOD MA_Method = MODE_SMA; // MA: Smoothing Type input ENUM_APPLIED_PRICE MA_Applied_Price = PRICE_CLOSE; // MA: Type Of Price input group "VOLUME" input ENUM_TIMEFRAMES VOL_TimeFrame = PERIOD_CURRENT; // Volume: TimeFrame (Must be equal to MA TF). input ENUM_APPLIED_VOLUME Vol_Type = VOLUME_REAL; // Volume: Type input group "GENERAL" input int CalculateBars = 300; // Bars To Calculate input int Moments_Average = 20; // Average of the Volume Moment
The function will calculate up to "x" last bars (CalculateBars = 300).
Every time 02 sequence bars (i and i+1) close (close price) above the MA trend line, it will initiate a new "moment" (UP trend), until 02 sequence bars close below MA trend line and initiate a new "moment" (DOWN trend this time).
So, when 02 sequence bars close above the MA trend line, the function will start to calculate the following data:
1) How many points is the diference between the value of the close price of the first bar of this "moment" and the close price value of the last bar. (Should be in points and always positive value) - "mov_distance"
2) The sum of the volume (real or tick) of all the bars that compose the "moment". - "vol_sum"
3) The result of the division from the sum of the volume and the distance of the bars movement. - "power = vol_sum / mov_distance"
This function will calculate it until the next 02 sequence bars close below the MA trend line.
When it happen, it will initiate a new "moment", but this time it will be a down trend. PS: Remember the "power" result must be always a positive value, because the "mov_distance" should be the result in points.
As we are calculating the last x bars (300 for example), it should happen a lot of mixed "moments" of up trends and down trends.
For each "moment" of this, the function code will save the results ("power") separately.
After that, it will calculate the average of all moments results. "Moments_Average".
Now, the last part is:
If the value of the current "moment" is greater then the "Moments_Average", it will return +1 for up trend and -1 for down trend.
If the value of the current "moment" is minor of the "Movements_Average", it will return 0.