[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [amibroker] Re: HOW TO PLOT PRICE, MACD, STOCHASTIC ON ONE CHART?



PureBytes Links

Trading Reference Links



Dennis --
Your post looks like a major stride in the right direction.  I had briefly tried something with StaticVar, but gave up after only a little unsuccessful experimentation.  I will study what you have done and will renew my effort.

The necessity of setting parameters in all related panes, plus in AA, and the repercussions of forgetting to make a change in one or more locations, had for a very long time convinced me to not use Param() at all, but to just change values in the editor.

Thanks so much.

Bistrader --
Maybe try something like this:
else if(status("action")== 5){ // backtest / optimize
// generic param fetch block
myControlParam1 = StaticVarGet( "myControlParam1" );
myControlParam2 = StaticVarGet( "myControlParam2" );
myControlParam3 = StaticVarGet( "myControlParam3" );
myControlParam4 = StaticVarGet( "myControlParam4" );
myControlParam5 = StaticVarGet( "myControlParam5" );

-- Keith

bistrader wrote:
 

Dennis,

Thank you and others for helping me along.

Tried a similar approach. The afl would also have Buy and Sell logic so it can be used to provide backtest to get at trades and equity curve, and also to provide exploration to see buy and sell signals. Plus, the 3 charts or pans (Price, Macd Historgram and Stochastic). So, if I put, for example, the Macd Historgram code within the 'if' statement for that pane, then I the afl will not be able to determine the buys and sells, based on price, Mach and Stochastic combined, for backtesting and explorations. Correct??

--- In amibroker@xxxxxxxxxps.com, Dennis Brown <see3d@xxx> wrote:
>
> bistrader,
>
> If I were going to approach this problem of wanting to have the same
> afl in each pane, with parameters shared by all, then the approach I
> would use would be to structure the parameter code like below (tested):
>
> It does not matter what your chart ID is. Just insert x many panes
> buy double clicking on the formula. Pull up the parameter window for
> the price pane first and set it to Price, then do the same with the
> others, selecting which data to plot. Finally pull up the param
> window of the price pane again and you can control all panes from that
> one window.
>
> Best regards,
> Dennis
>
> _SECTION_BEGIN( "Pane Function" );
> IAM = ParamList( "Pane Function", "None|Price|MACD|MACDH" );
> _SECTION_END();
>
> if ( IAM == "Price" ) { // price code here including all params
> _SECTION_BEGIN( "All Parameters" );
> StaticVarSet( "myControlParam1", ParamColor( "Color",
> colorBlack ) );
> StaticVarSet( "myControlParam2", ParamStyle( "Style" ) );
> StaticVarSet( "myControlParam3", Param( "Fast Periods", 12, 1,
> 100, 1 ) );
> StaticVarSet( "myControlParam4", Param( "Slow Periods", 26, 1,
> 100, 1 ) );
> StaticVarSet( "myControlParam5", Param( "Signal", 9, 1, 100, 1 ) );
> _SECTION_END();
>
> // generic param fetch block
> myControlParam1 = StaticVarGet( "myControlParam1" );
> myControlParam2 = StaticVarGet( "myControlParam2" );
> myControlParam3 = StaticVarGet( "myControlParam3" );
> myControlParam4 = StaticVarGet( "myControlParam4" );
> myControlParam5 = StaticVarGet( "myControlParam5" );
> // all the code to plot the price pane
> Plot( C, "Close", myControlParam1, styleNoTitle | myControlParam2
> | GetPriceStyle() );
> Title = "Price + Params";
> }
>
>
> else if ( IAM == "MACDH" ) { // MACDcode here including all params
>
> // generic param fetch block
> myControlParam1 = StaticVarGet( "myControlParam1" );
> myControlParam2 = StaticVarGet( "myControlParam2" );
> myControlParam3 = StaticVarGet( "myControlParam3" );
> myControlParam4 = StaticVarGet( "myControlParam4" );
> myControlParam5 = StaticVarGet( "myControlParam5" );
> // all the code to plot the MACD pane
> MD1 = MACD( myControlParam3, myControlParam4 );
> MDS = Signal( myControlParam3, myControlParam4, myControlParam5 );
> MDH = MDS - MD1;
> Plot( MDH, "MACD", myControlParam1, styleHistogram | styleNoTitle
> | myControlParam2 );
> Plot( 0 , "MACD", colorBlack );
> Title = "MACD-Histogram";
> }
>
> else if ( IAM == "MACD" ) { // Stoch code here including all params
>
> // generic param fetch block
> myControlParam1 = StaticVarGet( "myControlParam1" );
> myControlParam2 = StaticVarGet( "myControlParam2" );
> myControlParam3 = StaticVarGet( "myControlParam3" );
> myControlParam4 = StaticVarGet( "myControlParam4" );
> myControlParam5 = StaticVarGet( "myControlParam5" );
> // all the code to plot the Stochpane
> MD1 = MACD( myControlParam3, myControlParam4 );
> Plot( MD1, "MACD", myControlParam1, styleNoTitle |
> myControlParam2 );
> Plot( 0 , "MACD", colorBlack );
> Title = "MACD";
> }
>
> else { Title = "Select Pane Function"; }
>
>
> On Oct 13, 2009, at 12:19 PM, bistrader wrote:
>
> > One has to go to each chart to change the parameters for that chart.
> >
> > The afl is a system so all parameters are needed so that Buy and
> > Sell can be defined. I can, for example, change the Macd parameters
> > via the top chart but these changes are not reflected in the middle
> > Macd chart. I have to go to the middle chart, change the Macd
> > parameters and then see the revised Macd chart.
> >
> > I really can not put parameters within each 'if' as I need for the
> > system buys and sells. I guess I will have to live with this.
> >
> > Thanks for the help as understand another way of doing charts.
> >
> > --- In amibroker@xxxxxxxxxps.com, Keith McCombs <kmccombs@> wrote:
> >>
> >> Bistrader --
> >> I rarely use Param() --
> >> However, I _believe_ that if the Param() statements are outside and
> >> before the plot() statements that they will effect the three charts
> >> equally. But if this isn't so, you might explicitly try declaring
> >> the
> >> arrays that you are setting equal to Param() as Global. Again, I
> >> am not
> >> sure. You will have to try it.
> >>
> >> I also _believe_ that, whatever Param() statements you put inside the
> >> if(GetChartID()==chartID + 1){ }, will effect that pane only.
> >> -- Keith
> >>
> >> bistrader wrote:
> >>>
> >>>
> >>> Got it and thanks. I will do it now. I am hoping that I can right
> >>> click on first chart, change parameters and see all 3 charts
> >>> change as
> >>> I move parameter bars around.
> >>>
> >>> --- In amibroker@xxxxxxxxxps.com <mailto:amibroker
> >>> %40yahoogroups.com>,
> >>> Keith McCombs <kmccombs@> wrote:
> >>>>
> >>>> Bistrader --
> >>>> Yes you insert link 3 times, once for each chart. You want to do
> >>>> them
> >>>> consecutively, before doing any other charts for other strategies,
> >>>> because they are numbered consecutively as they are entered.
> >>>>
> >>>> Oops, for the third chart it should be:
> >>>> if(GetChartID()==chartID + 2){
> >>>> instead of:
> >>>> if(GetChartID()==chartID + 1){
> >>>> That's what I get for using cut and paste.
> >>>>
> >>>> BTW, I embedded an image in my first post. It is not displayed,
> >>>> if you
> >>>> view the posts on the Yahoo groups web site. However, if you view
> >>>> posts
> >>>> in your own email, it is displayed.
> >>>> -- Keith
> >>>>
> >>>> bistrader wrote:
> >>>>>
> >>>>>
> >>>>> I will give it a go. Do I insert link the same afl 3 times? Once
> >>>>> to
> >>>>> get xxxx and display price, a second time for Macd and finally for
> >>>>> stochastic?
> >>>>>
> >>>>> --- In amibroker@xxxxxxxxxps.com
> >>> <mailto:amibroker%40yahoogroups.com>
> >>> <mailto:amibroker%40yahoogroups.com>,
> >>>>> Keith McCombs <kmccombs@> wrote:
> >>>>>>
> >>>>>> bistrader --
> >>>>>> Looks like you might be trying to take to large a bite out of
> >>>>>> that
> >>>>>> sandwich all at once.
> >>>>>>
> >>>>>> Can you do the following to your satisfaction?
> >>>>>> 1. Plot the price chart with the EMA. Leave the shapes for later.
> >>>>>> 2. Plot the MACD histogram on the same chart. Again, shapes for
> >>> later.
> >>>>>> 3. Plot the Stochastic on the same chart. Again, shapes for
> >>>>>> later.
> >>>>>>
> >>>>>> I gave up trying to do the above long ago. Instead, I have three
> >>>>>> separate charts, displayed horizontally. I use one .afl, with the
> >>>>>> following construct:
> >>>>>>
> >>>>>> ////---- code -----/////
> >>>>>> chartID = xxxx; // get xxxx using 'insert' indicator, not 'Apply'
> >>>>>> indicator.
> >>>>>> // do as many inserts has you want charts, in your case 3.
> >>>>>> if(GetChartID()==chartID){
> >>>>>> _SECTION_BEGIN("Price");
> >>>>>> ; // plot price and emas here with shapes if desired
> >>>>>> _SECTION_END();
> >>>>>> }
> >>>>>> if(GetChartID()==chartID + 1){
> >>>>>> _SECTION_BEGIN("MACD");
> >>>>>> ; // plot MACD here with shapes if desired
> >>>>>> _SECTION_END();
> >>>>>> }
> >>>>>> if(GetChartID()==chartID + 1){
> >>>>>> _SECTION_BEGIN("Stoch");
> >>>>>> ; // plot Stoch here with shapes if desired
> >>>>>> _SECTION_END();
> >>>>>> }
> >>>>>> ////---- end code -----/////
> >>>>>>
> >>>>>> Once you've have that working you can move the size and reorder
> >>>>>> the
> >>>>>> charts by using on screen manual manipulation. Scale, display
> >>>>>> dates,
> >>>>>> etc. independently.
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> bistrader wrote:
> >>>>>>>
> >>>>>>>
> >>>>>>> I am having problems with Plot statements in one afl that I
> >>> want to
> >>>>>>> plot Price (with EMAs) at the top, Macd histogram in the
> >>> middle and
> >>>>>>> stochastic at the bottom. Each of the 3 has PlotShapes as well.
> >>>>>>>
> >>>>>>> Here is what I have.
> >>>>>>> 1. I use the following for price with EMAs and with plotshape
> >>> arrows
> >>>>>>> at top. This works fine:
> >>>>>>> Plot(Close, "Close",colorBlack,styleThick);
> >>>>>>> Plot(ema, "EMA",colorRed,styleThick);
> >>>>>>> OffsetTradeArrow = -25;
> >>>>>>> PlotShapes(ema_buy*shapeUpArrow, colorGreen, 0, Fund,
> >>>>> OffsetTradeArrow);
> >>>>>>> PlotShapes(ema_sell*shapeDownArrow, colorRed, 0, Fund,
> >>>>> OffsetTradeArrow);
> >>>>>>>
> >>>>>>> 2. Then, I move on to Macd histogram where I am having
> >>> problems with
> >>>>>>> Min and Max values to start with and then with how to overlay
> >>>>>>> its
> >>>>>>> PlotShapes:
> >>>>>>>
> >>>>>
> >>> Plot(MACD_Histo,"MACD_Histo",colorBlack,styleHistogram|
> >>> styleOwnScale,min?,max?);
> >>>>>>> OffsetTradeArrow = -25;
> >>>>>>> PlotShapes(macd_buy*shapeUpArrow, colorGreen, 0, MACD_Histo,
> >>>>>>> OffsetTradeArrow);
> >>>>>>> PlotShapes(macd_sell*shapeDownArrow, colorRed, 0, MACD_Histo,
> >>>>>>> OffsetTradeArrow);
> >>>>>>>
> >>>>>>> I play around (a lot) using an rsi example posted here but not
> >>> making
> >>>>>>> any progress. I can get Macd_Histo times 100 (Macd_Histo*100)
> >>> to plot
> >>>>>>> with min at -100 and max at 100/20*100 or 500, but have no
> >>> idea why I
> >>>>>>> had to use -100 for min value. The 100/20*100 is from the rsi
> >>> example
> >>>>>>> posted here. And, I can not figure out how to get PlotShapes
> >>> for macd
> >>>>>>> to be over this Macd_Hist plot.
> >>>>>>>
> >>>>>>> 3. Then, I move onto Stochastic and can only get this to plot
> >>> over
> >>>>> the
> >>>>>>> Macd_histo and not below it. So, can not figure out how to do
> >>>>>>> min
> >>>>>>> value, max value and then plotshapes over this.
> >>>>>>> Plot(StochDSlow," Slow
> >>>>> %D",colorRed,styleThick|styleOwnScale,min?,max?);
> >>>>>>>
> >>>>>>> OffsetTradeArrow = -25;
> >>>>>>> PlotShapes(stoch_buy*shapeUpArrow, colorGreen, 0, StochDSlow,
> >>>>>>> OffsetTradeArrow);
> >>>>>>> PlotShapes(stoch_sell*shapeDownArrow, colorRed, 0, StochDSlow,
> >>>>>>> OffsetTradeArrow);
> >>>>>>>
> >>>>>>> Help appreciated. Examples too. Thanks.
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>>
> >>>
> >>>
> >>
>



__._,_.___


**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

TO GET TECHNICAL SUPPORT send an e-mail directly to
SUPPORT {at} amibroker.com

TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/





Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: Switch delivery to Daily Digest | Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | Unsubscribe

__,_._,___