comm_idxThis script displays information about the components of the Goldman Sachs Commodity Index. The index is based on futures contracts in the categories of agricultural products, softs commodities, livestock, energies, industrial metals, and precious metals. The statistics displayed in the table are:
change: 1-day % change
from ma: the % change from a moving average
corr idx: correlation of the contract to the GSCI
The lengths for the moving average and correlation statistic can be set using the inputs.
See the script source for the symbols used for each commodity. Although most of the symbols correspond to the actual futures contract used to compute the index, LME contracts are not available on tradingview. Hence, corresponding HKEX contracts are used for the industrial metals.
Components
Decomposed Average True RangeThis simple script decomposes the value of the Average True Range into a bullish component and a bearish component .
The script supports two plotting methods; Mirrored and Two Lines . If Mirrored is chosen, the indicator plots the bullish component as a positive number, and the bearish component as a negative number. If Two Lines is chosen, the indicator plots two lines, both of positive values. It is the same data, just visualized differently.
Side note: This is very similar to how the strength (average gain) part in the Relative Strength Index calculation works. However, the RSI uses the realized range (close - previous close) rather than true range. If we were to use the bullish component of the ATR as the average bullish gain part in the RSI calculation, and the bearish component of the ATR as the average bearish gain part in the RSI calculation, we would get very similar (but not equal) results to the standard RSI. This shows how the ATR and the RSI are related to each other.
Backtest History Setup 1.0Script of strategy component to setup the backtext lookback. You setup the maximum days back in the history, which will be used for backtest.
Backtesting Period Selector | ComponentDescription
It's nice to quickly be able to set the backtesting period when writing strategies.
To make this process faster I wrote a simple 'component'.
So this is not a strategy but rather code you can plug-into your strategy and use
if you need that specific functionality.
Then it's just a matter of selecting which dates you want to backtest.
You can also chose to color the background to visually show the testing period.
Unfortunately, the background color is fixed at 'blue' for now.
Ps. I like the idea of writing small components to be pluged into other strategies
I'll try to develop this idea a bit further and see how small pieces of code can
easily provide specific functionality to assist and make deving strategies a bit less 'Pineful'.
Usage
First copy the instructed part of the component code over to your strategy.
Next, use the testPeriod() function to limit strategies to the specified backtesting period.
Example usage:
if testPeriod()
strategy.entry("LE", strategy.long)
Todo / Improvements
There are many ways to improve this component and I'm not a very good coder so this is a very crude solutions.
Anyway, here are some things which would be nice to improve:
1. Enable color selection so that the user can choose the background color of his own liking.
2. Improve naming of variables.
3. Test for ilogical choices, such as test period start being at a later date, than test period stop.
4. Account for time zones.
As always, any feedback, corrections or thoughts are very much welcome!
/pbergden