Klinger Oscillator: Test and Performance

This indicator gave me a nice surprise, I got a stunning result on Bitcoin, read carefully and try to replicate it too!

Today we’re going to try an indicator that is completely new to me that uses volumes in a way I’ve never seen before. It is a fairly sophisticated and complex indicator and we will apply it directly to some underlyings.
I’ll show you the code, the performances and I’ll show you the differences between one optimization and another!


As you have read from the title we will discuss the Klinger Oscillator, the oscillator was developed to pursue two objectives:
1. Be sensitive to the signals dictated by the highs and lows of the short
2. Be accurate enough to reflect the long-term flow of money

The Klinger is based on two principles
1. The price range (high-low of the day) is a measure of movement and the volume is the force behind this movement. The sum of high, low and close defines the trend. Accumulation occurs when the sum of the day is greater than the sum of the previous day; distribution in the opposite case.
2. The volume produces continuous changes in intra-day prices, thus signaling buying or selling pressures. The KO quantifies the difference between the number of stocks that have been accumulated or distributed each day as a volume strength.


The most reliable signals occur in the direction of the trend, the good signals occur when the Klinger diverges with the price so if the price of a trend is ascending you have to buy when the Klinger falls towards unusual levels below zero and vice versa. when you are short.


Since we are interested in the Trend for this indicator and we are interested in volumes, I have chosen 3 financial instruments on which to apply it: Bitcoin, S&P 500 and Crude Oil;
I chose these 3 tools because each of them has very distinct characteristics

1) Bitcoin has extreme monetary volatility that leads it to move many dollars every day

2) S&P 500 by its nature has many volumes but has a completely different nature from Bitcoin

3) Crude Oil is similar in nature to Bitcoin but much less volatile


To do all this we first need to build our indicator, to do this we first need two functions:
The first call VForce has the function of identifying the Trends with the analysis of the Volumes

The second KVO gives us the finished indicator, having in input two lengths, one slow and one fast, then we could go to optimize them

Now that we have our two functions we can build our indicator:

And here it is applied to our chart


Now that we have our functions and our indicator we can build our strategy!
First we establish an operating window in which the strategy can work, we do this because not all times are good to open positions as there are no tradable contracts on the market, this would make our strategy not very robust if we should use it for real as it would incur enormous slippage costs. For this I establish a priori a window in which the Volumes are high and therefore I will have the certainty of being executed without problems

Of course this operating window can be enlarged or decreased, just give a different value to the LengthOperatingWindow input.

Then I bring the indicator into a variable called Indicator and the entry Trigger into the Trigger variable, once this is done I declare my 2 entry conditions Short and Long

The long entry when our KVO will be greater than the Trigger, on the contrary for the Short entry

Finally I put another condition, that is, they are safety conditions that verify that I am not already in position and that the operations carried out today are less than 1, as I only want to do one operation per day

Now let’s move on to the entries, so once the condition1 is true and the Operating Window is true, I will have 2 stop entries, the Long one on the high of the previous bar and the Short one on the low of the previous bar as long as in both the entry condition long or short is verified. Here is the code:

(I remind you that you can download the complete code entirely on my Telegram channel)

We have come to the conclusion of the strategy, last we just have to set the outputs, for this indicator I decided to set the outputs after a number of bars and a monetary stoploss, this is because it allows me to better feel the effectiveness of indicators and strategies new. Here is the code:


So as input we will have to optimize the fast moving average, the slow moving average and the trigger. The fast and slow moving average make up the Klinger volume Oscillator while the trigger makes up the average of the Klinger volume Oscillator, then we should optimize the bar outputs and the monetary Stoploss.

As I said above I applied this indicator on 3 different underlyings: Bitcoin, S&P 500 and Crude Oil, I used a Timeframe for all three to 30 minutes

Here’s how I optimized the parameters:

Of course the results I propose are still immature and unstable, they do not give us a finite system but they give us a good indication of the effectiveness of an indicator on a given market. 

Now let’s look at the results!

Crude Oil

S&P 500



The results for Crude Oil are encouraging despite the many trades there is a profit on both short and long positions but at the expense of a low Average Trade, on the S&P 500 the Short side has not had much effect due to the nature of the indices, leaving only the long side you can have much higher performance in my opinion, finally the Bitcoin really surprised me, its very volatile nature and it is perfect for this indicator, it produced a net profit of $ 663,000 and both the short and long sides performed likewise, this is a symptom of system robustness.

So the result is certainly a useful but very complex indicator and it also gives us another information: yes the volumes are actually a great way to create indicators and take advantage of the indicators as we only have two pieces of information on a chart: the price and the volume! So all indicators are derivatives of price and volume so why not use volume as well?

I remind you that you can find all the codes on my Telegram channel.

See you in the next article! 🤟

Buy my 👉 Trading Systems

Take a look at my 👉 Blog

Join the 👉 Telegram group

Follow me on 👉 LinkedIn

Financial advice and ideas? Look here 👉Medium Armando Lo Conte

If you want discounts for the platform I use contact me privately or buy via this 👉 MultiCharts