AB had some significant improvements and leaps recently in its plotting capabilities. I would separate plot layer from plot order. Each of them has a different purpose and use. By plot order I mean which plotted entity covers the ones underneath, currently set by location of the command in the afl code. I would prefer a "hierarchy" number assigned to each instead. I would like to see full control of plot order for EACH plot command including Gfx low level plots (I believe that currently you can have ALL Gfx plot either on top or below other graphics but not individually controlled). This would enable keeping the location of plot command in a logical order where they belong and not force moving all plot commands out of their individual sections to the bottom of the code, and sorting them based on the desired visual plot effects. It would also allow optimizing for execution speed by separating fixed labels from continuously changing values, or values that change only at new bars. Full control of plot layer for each plot command is also desired. Joseph Biran ____________________________________________ -----Original Message----- From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Dennis Brown Sent: Thursday, March 20, 2008 6:01 PM To: [email protected] Subject: [amibroker] GFX and Plotting in Layers in AB
Hello, Herman is doing us all a great service with his UKB posts about overlay plotting using GFX functions, creating button like functions, and chart trading. Thank you Herman! I have given a lot of thought about the plotting features of AB and how to best use those capabilities in my charts. I have also run into a number of situations that I could not figure out how to do it. Looking over the AB suggestions list, many are related to increasing the capabilities of plotting functions. When Tomasz released the GFX low level plotting functions and recently (beta) some additional mouse functions, many more possibilities opened up. Thank you Tomasz! Now, I am trying to take stock of where I am at relative to things I have wanted to do for a long time. Perhaps a few more functions are needed to realize these, or perhaps there is already a way to do what I want. Here are some of the things I would like to do. Please comment on any of them --especially if you know a way to do them now or can think of a better approach as a suggestion. I am also sounding out my understanding of this area, so please correct me where I have a misconception. Plotting from AFL on GFX layers: So far, the only way I know of to plot on layers from AFL, other than the default chart layer is using the PlotShapes() function. The layers seem to be only used for manual study plots. Layers are locked in step with the time scale of the chart, so they align and scroll with the chart. Layers do not erase their plots except by manual command. I suppose that the ability for PlotShapes() to plot on layers, is so that AFL can interact with manual cursor selections to mark certain events on the chart permanently. One suggestion I saw was for a drag and drop symbol pallet to manually place these. The GFX functions plot to special GFX only layers --Currently we have one layer above the chart plots and one layer below the chart plots. These GFX layers are pixel oriented, and are not aligned to the chart time scale. What I would like to be able to do is: 1. Plot with GFX functions to a layer above all other layers (Foreground) and a layer below all other layers and the chart layer (Background). 2. GFX plots to each layer should remember their plots between AFL passes and only clear a layer when plotting first time again in a new AFL pass. 3. GFX plots should not cause the chart plots to clear. Why would I like these? First, I currently generate some informational cell and button plots with GFX functions. I can plot them above the chart, but not above the other layers that have my tend lines, etc. This creates problems reading the text in the cell or button, and potential problems selecting line elements running over the buttons. Even if future versions of AB allow more control over the chart area so there is more room for these informational displays, the regular layers still currently cover more than the chart plot area. Herman has shown us how to create essentially pull down buttons running along the top of the chart. These buttons need to be plotted above everything else for a clean interface. Second, I can speed up my AFL processing (and I do a lot of processing), if I am able to only recalculate (and re-plot) on a new bar (re-plotting the last bar only in a GFX layer). However, I still want to plot and interact with the GFX layer buttons in the mean time. Plotting order for normal chart plots: Something that is on the AB to do list is having more direct control over the plot order in charts. The difficulties of this have been discussed before on this list. One possible strategy is to extend this idea of the GFX plot layers to a more general case. For instance if there were 8 or 16 layers that could be specified for the target of a plot. Within a layer, the plots would operate the same as currently is the case. However, selecting a different layer would result in the ability to plot above or below a previous plot command without regard to its placement in the AFL formula. One AFL command could serve for selecting the plot layer for subsequent plot or GFX commands (internally they do not have to be the same layer). For example: PlotLayer(5); Plot(...); The nice thing about this approach is that it would be completely backwards compatible with the default layer. Please offer your insights. Can you think of other uses for this approach? Do you have a different approach that would work? Best regards, Dennis
