Tutorial 111 | Trendline volume for drawing tool drawn trendlines

Tutorial111 @es 30min

Calculate the associated trendline volume for manually drawn trend lines

Tutorial 111 demonstrates how to create a TradeStation EasyLanguage showme study designed to calculate the cumulative volume for the bars encompassed by the trend lines (trendline volume) for trend lines drawn using the TradeStation drawing tool.

Please note that the TradeStation EasyLanguage volume related keywords:

  • Volume
  • Ticks
  • UpTicks
  • DownTicks
  • OpenInt

have different meanings depending on the symbol, the bar length of a chart and the “for volume use trade volume or tick count” settings. For more information see the TradeStation wiki (you will need to log in to TradeStation) TradeStation Wiki

EasyLanguage Tutorial 111 applied to 30 minute e-mini chart

EasyLanguage Tutorial 111 applied to 30 minute e-mini chart

The idea for the tutorial came from a Gold Pass member. It includes a demonstration of how to analyze trend lines that have been manually applied to a TradeStation chart by the chart drawing tool.  It also shows how to create a Textlabel that is associated with and is updated and moves with the Trendline, when the trendline is relocated and/or resized.

There are several challenges in creating such a program including issues relating to event methods associated with trend line objects and charting host objects. If you are unfamiliar with these terms, I explain more in the video below.

EasyLanguage technical lessons

Tutorial 111, program 2 example

Tutorial 111, program 2 example

In the tutorial video and the program comments you will learn:

  • Using the TradeStation drawing tools to draw a Trendline
  • Using the TradeStation drawing tools to format a Trendline
  • The use of a vector to store Trendline objects
  • Drawing, moving and formatting Textlabel objects
  • Trendline click events
  • Chartinghost click events
  • The use of the Trendline tag to store a Textlabel object

There are actually two different approaches demonstrated in this tutorial. I have named them program 1 and program 2.

Both programs, essentially, do the same thing. They look for manually drawn trendlines, calculate the volume of the bars encompassed by the trendline and display this value as a text label. If the trendline is moved or resized the text information is updated and the label moved.

All the lines that are on the chart when the program is first applied (or when refreshed) are analysed.

The keyword for volume: V is used in the program. If you wished to use a different volume related keyword (for example: Upticks) it would be straightforward to change the program, replacing “V” with “UpTicks.”

Trendline volume program 1

The first tutorial 111 program

The first tutorial 111 program

In program 1 the program uses the charting host to indicate when a chart element has been clicked. When a click is detected, ALL the trendlines are recalculated and the information is updated. This means that when a specific trendline is clicked, ALL the trendlines are updated. The trendlines are updated even when the element clicked was not changed or the element clicked was not even a trendline.

This methodology works, but is potentially wasteful of resources, especially if you had a large number of trendlines drawn on the chart.

Trendline volume program 2

In program 2 I use a slightly more sophisticated approach. When a trendline is clicked (mouse down), that specific trendline is updated. When the chartinghost event indicates a mouse up event has occurred the most recently clicked trendline is updated.

While this approach is not perfect. It does reduces the amount of processing that needs to be done.

Both programs demonstrate some useful techniques and programming concepts.

Program downloadable for free by Gold Pass members

This content is for Gold Pass members only.

Inputs

Neither of the programs created in this tutorial have inputs although you may like to convert some of the things that have been hard coded in the program to inputs, for example the color of the lines and text, or the horizontal position of the text.

Tutorial 111 download

Tutorial 111 (two UNPROTECTED show me studies) is available for IMMEDIATE download for $19.95 by clicking the ‘add to cart’ button.

After download the programs can be opened, you will be able to see the program code and modify it if you wish.

After purchase you will be redirected to a download page, so don’t close the browser.

The download ELD includes two programs:

  • _Tutorial111-program1
  • _Tutorial111-program2

Note that both program names begin with an underscore, so they should be towards the start of the list if you sort alphabetically.

Tutorial 111 was developed for TradeStation 9.5 and will not work with MultiCharts.

Video demonstration of tutorial 111 (part 1)

Video demonstration of tutorial 111 (part 2)

Corrections

If you notice any errors or have other comments about the programs, please email.

1. In the video for part two I described lines 108–112:

list = drawingobjects.Items[ objectcategory.trendlinecreatedbydrawingobject ]; // Updates the vector of trendlines
For Ctr = 0 to list.Count – 1
begin
If ( list[ Ctr ] astype TrendLine ) = TLClicked then CalcVol( ( list[ Ctr ] astype TrendLine ) );
End;

This is unnecessary and can be replaced by:

CalcVol( TLClicked );

2. The programs demonstrated in the videos leave a ‘stray’ text label on the chart, if the associated trendline is deleted. The following is some code to resolve this issue. This is not guaranteed to work in all situations (for example if you have a mixture of hand drawn and program created trendlines or other drawing objects.)

First, add ChartingHost1.predeleteelement += ChartingHost1_PreDeleteElement; to the InitializeComponent( ) method:

method override void InitializeComponent( )
begin
ChartingHost1 = new ChartingHost; // Instantiate occurence of charting host
ChartingHost1.chartelementclick += ChartingHost1_ChartElementClick; // Create event for when mouse button released after clicking a chart element
ChartingHost1.predeleteelement += ChartingHost1_PreDeleteElement;
end;

and create a ChartingHost1_PreDeleteElement method:

method void ChartingHost1_PreDeleteElement( Object sender, PreDeleteElementEventArgs args )
begin
//Print(” Something deleted ” );
If args.Type = ChartVisualElementType.drawingobject then
If TLClicked <> NULL and ( args.Element astype DrawingObjectVisualElement ).name = “Trendline”
then DrawingObjects.Delete( TLClicked.Tag astype TextLabel );
end;

The download programs have been updated with these changes.

Please note that any screen shots on this site are examples and are not meant to imply that any of these programs will generate profitable trades.

THESE INDICATORS, SHOW ME STUDIES, STRATEGIES AND OTHER PROGRAMS HAVE BEEN INCLUDED SOLELY FOR EDUCATIONAL PURPOSES.

TO THE BEST OF MARKPLEX CORPORATION’S KNOWLEDGE, ALL OF THE INFORMATION ON THIS PAGE IS CORRECT, AND IT IS PROVIDED IN THE HOPE THAT IT WILL BE USEFUL. HOWEVER, MARKPLEX CORPORATION ASSUMES NO LIABILITY FOR ANY DAMAGES, DIRECT OR OTHERWISE, RESULTING FROM THE USE OF THIS INFORMATION AND/OR PROGRAM(S) DESCRIBED, AND NO WARRANTY IS MADE REGARDING ITS ACCURACY OR COMPLETENESS. USE OF THIS INFORMATION AND/OR PROGRAMS DESCRIBED IS AT YOUR OWN RISK.

ANY EASYLANGUAGE OR POWERLANGUAGE TRADING STRATEGIES, SIGNALS, STUDIES, INDICATORS, SHOWME STUDIES, PAINTBAR STUDIES, PROBABILITYMAP STUDIES, ACTIVITYBAR STUDIES, FUNCTIONS (AND PARTS THEREOF) AND ASSOCIATED TECHNIQUES REFERRED TO, INCLUDED IN OR ATTACHED TO THIS TUTORIAL OR PROGRAM DESCRIPTION ARE EXAMPLES ONLY, AND HAVE BEEN INCLUDED SOLELY FOR EDUCATIONAL PURPOSES. MARKPLEX CORPORATION. DOES NOT RECOMMEND THAT YOU USE ANY SUCH TRADING STRATEGIES, SIGNALS, STUDIES, INDICATORS, SHOWME STUDIES, PAINTBAR STUDIES, PROBABILITYMAP STUDIES, ACTIVITYBAR STUDIES, FUNCTIONS (OR ANY PARTS THEREOF) OR TECHNIQUES. THE USE OF ANY SUCH TRADING STRATEGIES, SIGNALS, STUDIES, INDICATORS, SHOWME STUDIES, PAINTBAR STUDIES, PROBABILITYMAP STUDIES, ACTIVITYBAR STUDIES, FUNCTIONS AND TECHNIQUES DOES NOT GUARANTEE THAT YOU WILL MAKE PROFITS, INCREASE PROFITS, OR MINIMIZE LOSSES.

Disclaimer The information, materials, products and services on this Web site are made available subject to the following terms and conditions. Markplex Corporation reserves the right to change these terms and conditions at its sole discretion. This Web site and any downloads, videos, tutorials, programs and information contained herein is presented solely for educational, informational, and/or entertainment use and under no circumstances should be used for actual trading. We at Markplex Corporation are not Broker/Dealers, Financial Advisers or Registered Analysts. No offer or solicitation to buy or sell securities, securities derivatives, futures products or off-exchange foreign currency (forex) transactions of any kind, or any type of trading or investment advice, recommendation or strategy, is made, given or in any manner endorsed by Markplex Corporation. You are fully responsible for any investment or trading decisions you make. Futures and options trading has a large potential risk. You must be aware of the risks and be willing to accept them in order to invest in the futures and options markets. This Web site is neither a solicitation nor an offer to buy and/or sell futures or options. No representation is being made that any account will or is likely to achieve profits or losses similar to those discussed on this Web site. Past performance, whether actual or indicated by historical tests of strategies, is no guarantee of future performance or success. No warranties of profitability are being made or given. There is a possibility that you may sustain a loss equal to or greater than your entire investment regardless of which asset class you trade (equities, options futures or forex); therefore, you should not invest or risk money that you cannot afford to lose. CFTC RULE 4.41 - Hypothetical or simulated performance results have certain inherent limitations. Unlike an actual performance record, simulated results do not represent actual trading. Also, since the trades have not actually been executed, the results may have under- or over-compensated for the impact, if any, of certain market factors, such as lack of liquidity. Simulated trading programs in general are also subject to the fact that they are designed with the benefit of hindsight. No representation is being made that any account will or is likely to achieve profits or losses similar to those shown. Screen shots on this site are examples and are not meant to imply that any of the programs or tutorials available on this Web site will generate profitable trades. EasyLanguage or PowerLanguage trading strategies, signals, studies, indicators, showme studies, paintbar studies, probabilitymap studies, activitybar studies, functions (and parts thereof) and associated techniques referred to, included in or attached to this tutorial or program description are examples only, and have been included solely for educational, informational, and entertainment use. Markplex Corporation does not recommend that you use any such trading strategies, signals, studies, indicators, showme studies, paintbar studies, probabilitymap studies, activitybar studies, functions (or any parts thereof) or techniques. The use of any such trading strategies, signals, studies, indicators, showme studies, paintbar studies, probabilitymap studies, activitybar studies, functions and techniques does not guarantee that you will make profits, increase profits, or minimize losses. Markplex Corporation assumes no liability for any damages, direct or otherwise, resulting from the use of this information and/or program(s) described, and no warranty is made regarding its accuracy or completeness. Use of this Web site including the information, tutorials and/or programs included on it is at your own risk. You shall indemnify and hold Markplex Corporation harmless from any and all liability, loss, trading losses, costs, damage, or expense, including attorneys' fees you or third party may suffer (other than damage to your tangible property or injuries to employees occurring during the course of work) as a result of claims, demands, costs, or judgments arising out of third party and any other claims based on Markplex Corporation's performance, including, but not limited to losses resulting from the use of Markplex Corporation developed software, programs, web sites, tutorials, or the TradeStation charting and/or trading platform. Any testimonials on this Web site may not be representative of the experience of other clients and are not indicative of future results or success.
This Web site contains or may contain references and links to other companies and/or their Web sites, none of which is under the control of Markplex Corporation. Markplex Corporation makes no representations, warranties or endorsements whatsoever about any other Web sites to which you may have access through the Markplex Corporation Web site, or any products or services of those other companies, even if the products or services of those other companies or their Web sites are described or offered on the Markplex Corporation Web site or integrated with Markplex Corporation's products or services. TradeStation®, EasyLanguage® and PowerEditor® are registered trademarks of TradeStation Technologies, Inc. Other brand and product names which appear on this site are the trademarks or service marks of their respective owners, including: Microsoft® is a registered trademark in the United States Microsoft®Excel® is a registered trademark of Microsoft® Neither TradeStation Technologies nor any of its affiliates has reviewed, certified, endorsed, approved, disapproved or recommended, and neither does or will review, certify, endorse, approve, disapprove or recommend, any product or service that offers training, education or consulting regarding the use of EasyLanguage.

By continuing to use and navigate our sites, services, applications, tools or messaging, you are agreeing to our Terms and Conditions and the use of cookies, web beacons and similar technologies as described in our Privacy Policy and Privacy Policy on the use of cookies.