Skip to main content

Fibonacci Retracement + Donchian Channel Combo Indicator for QuantConnect

DCFRChartExample
So, I have been playing around with QuantConnect, which provides a convenient framework to automate trading strategies using C#.  It has a lot of useful indicators out of the box.  However, one indicator that’s missing is Fibonacci Retracement.  That is understandable since it is generally used as a static manually drawn charting feature.  But I wanted some way to utilize it as an automatic indicator.  That is where Donchian Channels come in. Fibonacci Retracement is a range of values drawn between a high and low.  Donchian Channels provide continuously updating high and low values.  Combining the two concepts yield an automatically updating Fibonacci Retracement.

Let’s dig into Fibonacci Retracements a little deeper.  They are a range of values between a high and low at 61.8%, 50%, 38.2%, and 23.6%.  These values are based on the famous Fibonacci Sequence, where each value is the sum of the two prior values (0, 1, 1, 2, 3, 5, 8, 13, 21, etc.).  Starting at 2, a value divided by the next value begins to approximate 0.6180.  As the values increase the closer the approximation.  This is where the 61.8% retracement comes from.  A value divided by two places higher approximates 0.382.  The 50% mark technically is not related to Fibonacci, but it is often thrown in to indicate a halfway point.  The basic idea is that these retracement values indicate possible support or resistance levels.

A Donchian Channel indicator is already built into QuantConnect.  It is simply the highest high and the lowest low within a rolling determined period of time.  This forms a top and bottom channel.  When there is a new lowest low the bottom channel resets to that value.  The value is held until the rolling period no longer includes that low or there is a new lowest low.  The top channel works in the opposite way.

This all sounds more complicated than it really is.  It's simple math that is easy to code.  The following code represents the indicator.
DCFRIndicator

The following extension methods register the indicator.
DCFRExtensionMethods

Next there is a trading algorithm that really just plots the indicator.
DCFRPlottingExample

Here is a sample plot.
DCFRChartExample

The following Gist has all the classes combined into one file, so it can be copied straight into a new trading algorithm on QuantConnect.

Comments

Popular posts from this blog

Using Paint.NET to Blend Images

Note: this is a repost from my original blog back in 2009. 
Sometimes I need to do a little graphics work, but I do not have Photoshop.  Instead I use a great free tool called Paint.NET.  It is an open source image editing project built with C#.  It has a very rich feature set in many ways similar to Photoshop.  Community plugins are also available.Like other graphics tools, sometimes you have to figure out the tricks to get things done.  In this case I will be showing one way to seamlessly blend the edges of two photos.  I needed to do this for some scrolling banner images, but there are many other uses for this technique.First you want to open both images.  Then expand the canvas on the first image in order to fit the second image.  This is done by selecting the “Image” menu item, and then the “Canvas Size” sub item.Now copy the second image and paste it onto the second image into a new layer.  You can use the “Paste in to New Layer” option under the “Edit” menu.  Move the edge of …

Using C# to Automate Linear Regression in Excel

Excel has a nice linear regression tool as part of the included Analysis ToolPak add-in.  It is quick and easy to use even for the layperson.
To make sure you have this add-in enabled:
Go to File > Options > Add-insSelect Manage “Excel Add-ins”Click on “Go”Make sure “Analysis ToolPak” is checked
Let’s say we have the following sample data of gas and crude oil prices.

And we want to analyze the relationship crude oil pricing has to gas pricing.  To manually run the regression tool:
Open the “Data” ribbon menuCick “Data Analysis”Select “Regression” in the listClick “Ok” Here are some sample settings for the tool:

This would be the output:


There are many articles out there on how to interpret and use the results of linear regression analysis.  You may want to take note of the R Square value, which indicates how closely your values relate.

Now let’s say you wanted to run a lot of linear regressions or wanted to re-run them every time there is a new data point.  And you are lazy and d…