Skip to main content

MHJ multi_model/improved MACD for Amibroker (AFL)

mhjwisestocktrader over 9 years ago Amibroker (AFL)

  • Rating:
    3 / 5 (Votes 2)
  • Tags:
    oscillator, amibroker

Salaam;

this is a multi_model/improved MACD.
the idea is to use regression (somewhere) instead of moving average.
some models are using division instead of minus sign that improves the working of MACD and also shows it by percentage!!!

there is no plotting or signal alarm instructions. and you may write it by yourself… (or tell me to do it for you.)

hope enjoy.

Indicator / Formula

Copy & Paste Friendly
//In the name of Allah the compassionate the merciful بسم الله الرحمن الرحيم
//by MHJ محمد حسين
//MACD - Moving Average Convergence Divergence

//==========================================================================
//=================================مکدي=====================================
//==========================================================================
_SECTION_BEGIN( "Macd" );
Var_Fast_Period = Param( "fast period", 12, 1, 200, 1 );
Var_Slow_Period = Param( "slow period", 26, 1, 200, 1 );
Param_macd_kind = ParamList( "گونه", "AVG-AVG|REG-AVG|REG-REG|REG-AVG REG|REG/REG|AVG/AVG|REG/AVG REG|macd", 0 );

if( Param_macd_kind == "AVG-AVG" )
    show_var = ma( C, Var_Fast_Period ) - MA( C, Var_Slow_Period );

if( Param_macd_kind == "REG-AVG" )
    show_var = LinearReg( C, Var_Fast_Period ) - MA( C, Var_Fast_Period );

if( Param_macd_kind == "REG-REG" )
    show_var = LinearReg( C, Var_Fast_Period ) - LinearReg( C, Var_Slow_Period );

if( Param_macd_kind == "REG-AVG REG" )
    show_var = LinearReg( C, Var_Fast_Period ) - MA( LinearReg( C, Var_Fast_Period ), Var_Fast_Period );

if( Param_macd_kind == "REG/AVG REG" )
    show_var = 100 * ( LinearReg( C, ( Var_Fast_Period ) / MA( LinearReg( C, Var_Fast_Period ), Var_Fast_Period ) - 1 ) );

if( Param_macd_kind == "AVG/AVG" )
    show_var = 100 * ( ( ma( C, Var_Fast_Period ) / MA( C, Var_Slow_Period ) ) - 1 );

if( Param_macd_kind == "REG/REG" )
    show_var = 100 * ( ( LinearReg( C, Var_Fast_Period ) / LinearReg( C, Var_Slow_Period ) ) - 1 );

if( Param_macd_kind == "MACD" )
    show_var = ema( C, Var_Fast_Period ) - eMA( C, Var_Slow_Period ); //show_var=MACD(Var_Fast_Period,Var_Slow_Period);

_SECTION_END();

Title = StrFormat(
            EncodeColor( colorred ) + "MACD(%g,%g)=  " + NumToStr( show_var, 1.0 )
            + EncodeColor( colordarkred ) + "   Model  " + Param_macd_kind + "   "
            , Var_Fast_Period, Var_Slow_Period
        );




/*



here you may paste your buy/sell strategies 
or plotting instructions...



*/

12 comments

over 9 years ago

thanks for kind help sir, can add any buy/sell strategies best suite for intraday

2. shon
over 9 years ago

Sir, this is not working for me, I used amibroker version 6, what can i do now?

over 9 years ago

salam;
I can’t edit my post,
add this to the end of codes for seeing results:

//
//
Color_Usual_Highdown = IIf( show_var > show_middle, Color_High, Color_Low );
            Plot( show_var, _DEFAULT_NAME(), Color_Usual_Highdown , styleline | styleNoTitle , Null, Null, 0, 0);
            PlotOHLC( show_var, show_var, 0, 0, "", IIf( show_var > 0, Colorred, Colorgreen ), styleCloud | styleClipMinMax | styleNoTitle | styleNoLabel , show_middle, show_middle );

//
//
over 9 years ago

for buy/sell signals add these to the end of your codes:

//
//
Buy_condition_5 = show_var > Ref( show_var, -1 ) AND Ref( show_var, -1 ) < Ref( show_var, -2 );
Buy_condition_6 = show_var < ( MA( IIf(show_var>0,0,show_var) , 100 ) * 1.5 );


Sell_Condition_5 = show_var > Ref( show_var, -1 ) AND Ref( show_var, -1 ) < Ref( show_var, -2 );
Sell_Condition_6 = show_var > ( MA( IIf(show_var<0,show_var,0) , 100 ) * 1.5 );


Buy = Buy_condition_5 AND Buy_condition_6;
Sell = Sell_Condition_5 AND Sell_Condition_6;
//
//
6. shon
over 9 years ago

I hope you will post new version of this afl,until some problem with this afl.

8. val2004
over 9 years ago

Can you post a complete code with plot and signal that works

tks a lot

10. hotaro3
over 9 years ago

variables color_high, Color_Low and show_middle used with previous definition therfor no plot at all, please check your code mohammad hossien jan

over 9 years ago

Salam;
I’m so sorry for these problems. I will write a better one and will share it’s link here (soon)
======
(the problem was from here that I have several included files of my older AFLs for showing my indicators… and I have not bring them all here… so I need time to somehow partially add them to this AFL… and also the parameters selection descriptions are in Persian language that I should change them to english, so it takes time)
======
the output of this AFL (I mean… next AFL) is not great when using alone. (without combining with other AFLs) so this afl is not good for amateur users.
the power of this AFL is when it combines with other trading system that is up to you!
==
هتاروی عزیز، میتونی بیای به جستار من تا با هم تو کارگاه من کار کنیم. اینجا:
http://forums.boursy.com/showthread.php?t=3454&p=706279&viewfull=1#post706279
یا علی

Leave Comment

Please login here to leave a comment.