› Forums › Trading Systems Discussion › A Flexible And Compact Currency Strength Indicator
Tagged: CIX
- This topic has 270 replies, 23 voices, and was last updated 8 years, 10 months ago by
upliftingmania.
- AuthorPosts
- October 3, 2015 at 12:07 am #8179
1. …”we basically can generate identical profits from both moves”… : Not quite… 0.01%x1.2 (EURUSD) doesn’t equal 0.01%x0.70 (AUDUSD).
Trading with fixed lotsizes, you’re right. Sizing dynamically, 0.1 % equals 0.1 %, ignoring different SL levels that may be necessary because of different volatility of each pair, individual trading cost, and similar detail.
2. We currently accept the fact that the USD is generally stronger than the EUR. So why is 1EUR=1.2USD? If and how it’s reflected on the indie?
It’s not necessary to reflect that in the indicator, because the exchange rate between any two currencies is not a direct measure for their individual strengths. We accept 1.2 as the current state of EURUSD, and we currently accept 180 for GBPJPY, and we will seek for profits from this common ground. When Europe introduced EUR as a common currency, Italy abandoned their Lira. Rate was 1 : 2000 or something. Does that mean that the Italian economic and financial strength increased by a factor of 2000 over night? I don’t think so. And that current exchange rate of 180 GBPJPY surely does not mean that GBP is 180 times stronger than JPY. If yesterday’s rate was 179, and tomorrow’s would be 182, then this information would have an impact on trading.
The absolute exchange price says nothing about strenght, only the deltas over time do. But introducing economic strength to our formulas and connecting it to currency strength would be a considerable move towards fundamental analysis. This would be an interesting step, but it would require much more thought than just looking at current prices and their moves. That’s off topic for this thread!
Those different rates are reflected in my indicator by not doing simple pips counting (I never ever would!) but calculating percentage rate of change instead. This is universal, thus the moves of all pairs are comparable.
Just my two cents on this point!
And how is market share (that’s where our discussion started) relate to this? You seem to have a deeper understanding about how to introduce market share into your trading formula. At least that is what I interpreted when reading some of your previous posts. Wouldn’t you share some more detailed insight in your market share arithmetics? I would certainly like to code it and share the resulting indicator.
3. The purpose of the indicator is to show you the market as a whole. The more accurate it will be it will give you earlier signals – beeing a predictive indicator.
I fully agree. Who wouldn’t?
4. The reason you didn’t see discussions about it means nothing. People just copying basic ideas from one another without further major enhancement.
Surely true for most guys, but I’m happy that this forum seems to have a considerably higher share of members who usually have their brains powered on and know how to make good use of them.
The overall purpose is to create a better and more accurate indie – all means are “Kosher”…
If ‘Kosher’ means precise, I’m all in for ‘Kosher’!

A good trader is a realist who wants to grab a chunk from the body of a trend, leaving top- and bottom-fishing to people on an ego trip. (Dr. Alexander Elder)
October 3, 2015 at 3:08 am #8180I think that you are “scaling” the end result. You need to “factor” or “scale” individual moves. The USD exist in all major currency pairs – so your result shouldn’t look like this. G.
Thanks G, i will try to change my code.

2. We currently accept the fact that the USD is generally stronger than the EUR. So why is 1EUR=1.2USD? If and how it’s reflected on the indie?
It’s not necessary to reflect that in the indicator, because the exchange rate between any two currencies is not a direct measure for their individual strengths. We accept 1.2 as the current state of EURUSD, and we currently accept 180 for GBPJPY, and we will seek for profits from this common ground. When Europe introduced EUR as a common currency, Italy abandoned their Lira. Rate was 1 : 2000 or something. Does that mean that the Italian economic and financial strength increased by a factor of 2000 over night? I don’t think so. And that current exchange rate of 180 GBPJPY surely does not mean that GBP is 180 times stronger than JPY. If yesterday’s rate was 179, and tomorrow’s would be 182, then this information would have an impact on trading. The absolute exchange price says nothing about strenght, only the deltas over time do. But introducing economic strength to our formulas and connecting it to currency strength would be a considerable move towards fundamental analysis. This would be an interesting step, but it would require much more thought than just looking at current prices and their moves. That’s off topic for this thread! Those different rates are reflected in my indicator by not doing simple pips counting (I never ever would!) but calculating percentage rate of change instead. This is universal, thus the moves of all pairs are comparable. Just my two cents on this point! And how is market share (that’s where our discussion started) relate to this? You seem to have a deeper understanding about how to introduce market share into your trading formula. At least that is what I interpreted when reading some of your previous posts. Wouldn’t you share some more detailed insight in your market share arithmetics? I would certainly like to code it and share the resulting indicator.

Agree that exchange price says nothing about strength, but delta does. I think this Delta has relationship with the “anchor” ….

But if we just take a time as anchor (lets say open of Frankfurt session as anchor for beginning of calculation of each day), may be the code will be like this :
datetime begin = D’2015.10.02 11:00′; // broker server time is GMT+4
int limit = iBarshift(Symbol(),0,begin);
for (int i=limit; i>=0; i–) {
xxxxxxxx
} // forIf i do like that (anchor is at Frankfurt open of each day), the bars are not enough for calculation, and we can not the lines right.
So, the candle (time) must be taken some days before (lets say Frankfurt open 4 days ago) for “anchor” calculation.
Is there some thing wrong with my approach above ?Thanks
October 3, 2015 at 7:04 am #8181…”It’s not necessary to reflect that in the indicator”… : So identical 0.01% increase/decrease in EURUSD & AUDUSD, although producing different outcome (before MM), is treated the same by your indie? Hmmm….
Indie will show same “strong” move but one will actually be “weaker” than another. Yet another Hmmm…
What about GBPUSD & AUDUSD? the difference is ~double. Is it still same “strong” move?
…”considerable move towards fundamental analysis”… : I’m all in favor of it…
Already discussed and explained to SmallCat (on Skype) how I use the USDindex in my trading the majors.
It’s incorporated in my Spaghetti indie (an option), but you can use it as a separate indicator.
G.
October 5, 2015 at 11:58 am #8231But if we just take a time as anchor (lets say open of Frankfurt session as anchor for beginning of calculation of each day), may be the code will be like this :
Sure – I understand what you mean. This could be provided by very simple arithmetics, but it would just result in manually shifting all CS values to zero as an artificial starting point, connected to a certain point in time, Frankfurt Open. This will result in a different visualization. If this would support your trading style, go ahead. Interesting facts like weekend gaps would be lost, though.
If I think an anchor would support my CS trading, I would simply base the indi on all 28 pairs, then the zero line would be my ‘natural’ anchor, if the algorithm is correct. All 8 CS values should sum up to zero at any bar. Whether this kind of ‘anchoring’ would add any substantial precision to the indicator would have to be tested. As I stated before, I think the approximation provided by analyzing 7 major pairs for 8 currencies in FXCorrelator is pretty precise, and extending analysis to 28 pairs probably wouldn’t add that much additional precision.
Resetting every CS value to zero at a certain point in time is just a matter of visualization and personal taste.
A good trader is a realist who wants to grab a chunk from the body of a trend, leaving top- and bottom-fishing to people on an ego trip. (Dr. Alexander Elder)
October 5, 2015 at 12:13 pm #8233”It’s not necessary to reflect that in the indicator”… : So identical 0.01% increase/decrease in EURUSD & AUDUSD, although producing different outcome (before MM), is treated the same by your indie? Hmmm…. Indie will show same “strong” move but one will actually be “weaker” than another. Yet another Hmmm… What about GBPUSD & AUDUSD? the difference is ~double. Is it still same “strong” move?
Hi G.
Thank you for posting your doubt about my indicator math. As I stated before, I’m eager to discuss that in detail and learn.
I posted my current arithmetics (see my indi source code) to the public, so everybody can review it. I would consider my arithmetics pretty simple, and my coding pretty clean and straightforward.
If you think there’s something wrong or missing in my formulas, I would be happy if you could post your proposals in a more detailed, mathematical way. Could be formulas, scanned drawings, code snippets, whatever. Something like that would probably add substantial input to this discussion. Personally, I’m pretty sure that my code could be enhanced. We’re having a nice basis, so let’s just add some more salt and spices to our spaghetti soup!

Cheers, J.
A good trader is a realist who wants to grab a chunk from the body of a trend, leaving top- and bottom-fishing to people on an ego trip. (Dr. Alexander Elder)
October 5, 2015 at 3:04 pm #8237Hi All!
OK: a new Italian spaghetti meal – hope you’ll enjoy it and provide some feedback and maybe suggestions for further enhancements.
What’s new?
- @gg53 suggested to base it on an adaptive averager. I decided to implement my adaptive version of John Ehlers’ 2-pole Supersmoother.
- All other basic arithmetics like PFE were removed for the sake of simplicity.
- Every single line can now be switched on and off.
- You can now double the amount of spaghetti on your plate by switching signal lines on – use carefully, hehe!

- If you like to, you can enforce a zero balance on every bar.
- You can normalize the indicator readings now for convenient values in roughly a -10…+10 or -1…+1 range – depends on your settings. This is a simple linear transform, non-lagging and non-distorting.
Any ideas for Parmesan cheese, i.e. some arrows on our plate?
I called it ASS_Correlator now, ASS for Adaptive SuperSmoother.
It took me a while to finish this because initially I was not so happy with its adaptive responsiveness, tried to speed it up even more, but didn’t find a nice algo. Any suggestions welcome!
Feel free to test and provide feedback & further suggestions. And remember: default settings may not be best choice for all of your trading ideas – so play with those parameters.
Enjoy,
simplex
Attachments:
You must be logged in to view attached files.A good trader is a realist who wants to grab a chunk from the body of a trend, leaving top- and bottom-fishing to people on an ego trip. (Dr. Alexander Elder)
October 5, 2015 at 3:46 pm #8242Very nice.
A DIFF line (i.e. Curr1-Curr2) could be quite useful.Best regards…
Nothing has ever motivated me more than this...
October 5, 2015 at 6:23 pm #8243Will try for dinner tomorrow – yum yum
pip
skype : pipatronic
October 6, 2015 at 9:13 am #8245Very nice.
A DIFF line (i.e. Curr1-Curr2) could be quite useful.For the pair displayed on chart?
A good trader is a realist who wants to grab a chunk from the body of a trend, leaving top- and bottom-fishing to people on an ego trip. (Dr. Alexander Elder)
October 6, 2015 at 9:17 am #8246Will try for dinner tomorrow – yum yum pip
Enjoy your meal!

A good trader is a realist who wants to grab a chunk from the body of a trend, leaving top- and bottom-fishing to people on an ego trip. (Dr. Alexander Elder)
October 6, 2015 at 11:15 am #8247Very nice.
A DIFF line (i.e. Curr1-Curr2) could be quite useful.For the pair displayed on chart?
Yes, when the “display current pair only (override)” is set to true. This DIFF line is crucial in currency strength analysis.
Best regards and thanks for your efforts!

Nothing has ever motivated me more than this...
October 6, 2015 at 1:06 pm #8248I cant remember the colors a guide would be nice.
October 6, 2015 at 3:43 pm #8252I tested putting a vertical line where a currency crosses the top +1 or bottom -1 lines and switched to a lower time frame. When switching back to the same time frame again the crosses are not where the vertical line is. Is it recalculating different values?
Can you add an alert when a line crosses the top and bottom values (-1 and +1)? Can these numbers be user defined?
Thanks
October 6, 2015 at 3:57 pm #8253Been trying the spag though no fully due to shortage of time, just wanted to say thank you for your efforts and it is being “digested”

skype : pipatronic
October 6, 2015 at 11:23 pm #8255”It’s not necessary to reflect that in the indicator”… : So identical 0.01% increase/decrease in EURUSD & AUDUSD, although producing different outcome (before MM), is treated the same by your indie? Hmmm…. Indie will show same “strong” move but one will actually be “weaker” than another. Yet another Hmmm… What about GBPUSD & AUDUSD? the difference is ~double. Is it still same “strong” move?
Hi G. Thank you for posting your doubt about my indicator math. As I stated before, I’m eager to discuss that in detail and learn. I posted my current arithmetics (see my indi source code) to the public, so everybody can review it. I would consider my arithmetics pretty simple, and my coding pretty clean and straightforward. If you think there’s something wrong or missing in my formulas, I would be happy if you could post your proposals in a more detailed, mathematical way. Could be formulas, scanned drawings, code snippets, whatever. Something like that would probably add substantial input to this discussion. Personally, I’m pretty sure that my code could be enhanced. We’re having a nice basis, so let’s just add some more salt and spices to our spaghetti soup!
Cheers, J.The “Delta” of each individual currency-pair should be “net” (EURUSD[1]-EURUSD[2]), without any smoothing MA.
Smoothing should be done, if at all, only on the end result currency line indicator.
Market share (if used): should be on Volume factor and not on Price.
If we assume that the whole market is EURUSD, GBPUSD, AUDUSD, NZDUSD, USDJPY, USDCAD, USDCHF we can roughly say that ~50% is USD (actual is 47.xx%) and the rest is all the other currencies.
Can we aggregate the total market volume with plus(+) and minus(-) , according to volume direction in each pair, and get a rough estimate where the USD is going?
I think the rest is obvious…
G.
October 7, 2015 at 10:22 am #8257I cant remember the colors a guide would be nice.
Hmmm – ok. Please let me classify this as a B priority. I’m more focused on a signal system at the moment. Meanwhile just change the colours to your liking.
A good trader is a realist who wants to grab a chunk from the body of a trend, leaving top- and bottom-fishing to people on an ego trip. (Dr. Alexander Elder)
October 7, 2015 at 10:28 am #8258I tested putting a vertical line where a currency crosses the top +1 or bottom -1 lines and switched to a lower time frame. When switching back to the same time frame again the crosses are not where the vertical line is. Is it recalculating different values?
No, there’s no recalculation. What could be a ‘natural’ reason for this issue is loading of price history in the background. To run this indicator, you always need a proper history of all 7 USD pairs involved. Please make sure that this is the case. If the problem is persistent then, please come back with some more detail, including screenshots.
A good trader is a realist who wants to grab a chunk from the body of a trend, leaving top- and bottom-fishing to people on an ego trip. (Dr. Alexander Elder)
October 7, 2015 at 10:49 am #8259Can you add an alert when a line crosses the top and bottom values (-1 and +1)? Can these numbers be user defined?
Please let me consider audible alerts a B priority also – see post above!
The levels displayed are simple visual guidelines at the moment. As soon as somebody comes up with a strategy that makes reasonable use of flexible levels I will make them flexible. Let’s see this as a ‘give and take’: I provided a basic code for free to the community, now I hope ro receive some detailed proposals about how to make use of it and add more value.
Meanwhile I’m focusing my development on signal systems for this indicator.
Please don’t mind if I’m stating this openly: the decision whether to post further proceedings publicly, or in a closed group of active members, or not at all, will depend mainly on the feedback I receive. And first of all I’m NOT looking for ‘Wow – thank you!’ feedback, but for a detailed and in depth discussion of how to use this indicator and how to improve it (@BlackStack, this particular paragraph is intended for all members interested, not for you personally.
).Cheers, simplex

A good trader is a realist who wants to grab a chunk from the body of a trend, leaving top- and bottom-fishing to people on an ego trip. (Dr. Alexander Elder)
October 7, 2015 at 11:20 am #8260Hi G,
Thank you for your proposals!
The “Delta” of each individual currency-pair should be “net” (EURUSD[1]-EURUSD[2]), without any smoothing MA.
Ok, it’s easy to switch off the initial smoothing totally (next release!). Meanwhile just try setting indicator period = 0 and adaptive period = 0, this will nearly reduce the initial smoothing to none.
Smoothing should be done, if at all, only on the end result currency line indicator.
I’m a bit puzzled about your ‘if at all’ statement: I pretend to remember that in a recent post, maybe in another thread, you proposed an adaptive smoothing. At the moment, there is a final non-adaptive smoothing, which will be switched off by choosing final smoothing length = 0.
Market share (if used): should be on Volume factor and not on Price. If we assume that the whole market is EURUSD, GBPUSD, AUDUSD, NZDUSD, USDJPY, USDCAD, USDCHF we can roughly say that ~50% is USD (actual is 47.xx%) and the rest is all the other currencies. Can we aggregate the total market volume with plus(+) and minus(-) , according to volume direction in each pair, and get a rough estimate where the USD is going?
OK, at the moment there’s no volume involved. Sure, everything with a history can simply be aggregated. We can further simply assume that the total market of our artificial model (100 % volume) consists of those 7 USD pairs involved. So what would be the impact on CS values? I’m afraid I don’t see that yet.
I think the rest is obvious…
Are you really sure? At the moment I feel like being the guy who’se standing on the water hose while you’re trying to sprinkle the garden!
J.
A good trader is a realist who wants to grab a chunk from the body of a trend, leaving top- and bottom-fishing to people on an ego trip. (Dr. Alexander Elder)
October 7, 2015 at 11:50 am #8262Hi All!
Version 1.1 here.
Only one new feature this time:
- @gg53 suggested an option to switch off the initial smoothing completely. This can now be achieved by choosing indicator period = 0.
When combined with final smoothing off, this will result in a pretty nervous behaviour. Let’s see where this will lead us to – I’m really curious!
Any feedback & further suggestions welcome.
J.
Attachments:
You must be logged in to view attached files.A good trader is a realist who wants to grab a chunk from the body of a trend, leaving top- and bottom-fishing to people on an ego trip. (Dr. Alexander Elder)
October 7, 2015 at 12:16 pm #8265Hi G, Thank you for your proposals!
The “Delta” of each individual currency-pair should be “net” (EURUSD[1]-EURUSD[2]), without any smoothing MA.
Ok, it’s easy to switch off the initial smoothing totally (next release!). Meanwhile just try setting indicator period = 0 and adaptive period = 0, this will nearly reduce the initial smoothing to none.
Smoothing should be done, if at all, only on the end result currency line indicator.
I’m a bit puzzled about your ‘if at all’ statement: I pretend to remember that in a recent post, maybe in another thread, you proposed an adaptive smoothing. At the moment, there is a final non-adaptive smoothing, which will be switched off by choosing final smoothing length = 0.
Market share (if used): should be on Volume factor and not on Price. If we assume that the whole market is EURUSD, GBPUSD, AUDUSD, NZDUSD, USDJPY, USDCAD, USDCHF we can roughly say that ~50% is USD (actual is 47.xx%) and the rest is all the other currencies. Can we aggregate the total market volume with plus(+) and minus(-) , according to volume direction in each pair, and get a rough estimate where the USD is going?
OK, at the moment there’s no volume involved. Sure, everything with a history can simply be aggregated. We can further simply assume that the total market of our artificial model (100 % volume) consists of those 7 USD pairs involved. So what would be the impact on CS values? I’m afraid I don’t see that yet.
I think the rest is obvious…
Are you really sure? At the moment I feel like being the guy who’se standing on the water hose while you’re trying to sprinkle the garden! J.
“Smothing” : FXCorrelator is calculating the “Delta” as { iMA(pair,t-1) – iMA(pair,t) }. this introduce double lagging to the “Delta” due to the MA on both previous and current values.
I suggested (and use) to leave the actual “Delta” as is during further calculations, and in order to smooth the end result (the actual line indicator) to use an adaptive MA method, instead of the std. ones.
Strength & ROC: in actual trading Strength comes first, and the ROC preferably shown on the side as sorted second choice.
Market Share & Volume: leave it out for the time beeing. I’ll try explaining via Skype session.
G.
October 7, 2015 at 1:51 pm #8266I suggested (and use) to leave the actual “Delta” as is during further calculations, and in order to smooth the end result (the actual line indicator) to use an adaptive MA method, instead of the std. ones.
Ok, got that! Have you ever tried to use an adaptive averager on those CS lines?
Let’s look at a very simple case first, EURNZD (1st pic) starting a nice downtrend around 4:00 GMT last night (I switched to M30, so it should be easy to locate the events in your chart!). Looking at the unsmoothed values, they turn out to be very rugged as expected – this is the upper CS indicator. The lower indicator shows the same analysis, onlyfinally smoothened by a non-adaptive Ehlers Supersmoother of length = 4. The downtrend ending around 11:00 this morning can easily be detected by the two lines crossing, ignoring the ups and downs in between. This is a very simple case of STRENGTH identified by crossing lines.
The 2nd example is not so easy: GBPAUD in the very same time window. Taking the initial impulse at 4:00 a.m. as an entry signal, we’ll have a bearish move to our favour resulting in 20 pips profit within 2 bars. This initial signal is indicated in both versions, with and without final smoothing. The rest of our time window until 11 a.m. is a bit hard to interpret. Here a possible signal for a 2-bar trade is given by ROC.
Now my question re adaptive averaging would be: will it really make a difference? And if yes: what should be the criterion to calculate the variation of the averaging length? For smoothing prices we usually take a variation of price volatility.
So in our case maybe standard deviation of our CS lines could be an option that makes sense mathematically. But with those rugged lines, I doubt that this would lead us to something useful. What would be your choice?
Market Share & Volume: leave it out for the time beeing. I’ll try explaining via Skype session.
Great offer! So I’ll have to reactivate my Skype account …
J.
Attachments:
You must be logged in to view attached files.A good trader is a realist who wants to grab a chunk from the body of a trend, leaving top- and bottom-fishing to people on an ego trip. (Dr. Alexander Elder)
October 7, 2015 at 6:52 pm #8269I suggested (and use) to leave the actual “Delta” as is during further calculations, and in order to smooth the end result (the actual line indicator) to use an adaptive MA method, instead of the std. ones.
Ok, got that! Have you ever tried to use an adaptive averager on those CS lines? Let’s look at a very simple case first, EURNZD (1st pic) starting a nice downtrend around 4:00 GMT last night (I switched to M30, so it should be easy to locate the events in your chart!). Looking at the unsmoothed values, they turn out to be very rugged as expected – this is the upper CS indicator. The lower indicator shows the same analysis, onlyfinally smoothened by a non-adaptive Ehlers Supersmoother of length = 4. The downtrend ending around 11:00 this morning can easily be detected by the two lines crossing, ignoring the ups and downs in between. This is a very simple case of STRENGTH identified by crossing lines. The 2nd example is not so easy: GBPAUD in the very same time window. Taking the initial impulse at 4:00 a.m. as an entry signal, we’ll have a bearish move to our favour resulting in 20 pips profit within 2 bars. This initial signal is indicated in both versions, with and without final smoothing. The rest of our time window until 11 a.m. is a bit hard to interpret. Here a possible signal for a 2-bar trade is given by ROC. Now my question re adaptive averaging would be: will it really make a difference? And if yes: what should be the criterion to calculate the variation of the averaging length? For smoothing prices we usually take a variation of price volatility. So in our case maybe standard deviation of our CS lines could be an option that makes sense mathematically. But with those rugged lines, I doubt that this would lead us to something useful. What would be your choice?
Market Share & Volume: leave it out for the time beeing. I’ll try explaining via Skype session.
Great offer! So I’ll have to reactivate my Skype account … J.
One of the most important things in using the CS is the DIFF. Especially when one currency is above “0” and the other under it.
So I suggest using the Adaptive MA on the DIFF, which should be less “rugged”.
G.
October 8, 2015 at 7:56 am #8274So I suggest using the Adaptive MA on the DIFF, which should be less “rugged”.
DIFF is simple – see red dotted line in this pic. This one is smoothed with a non-adaptive Supersmoother of length 20.
When making this one adaptive, the basic question is which criterion to use in order to calculate the variable coefficients. I’ll try it with standard deviation at first, and maybe signal to noise ratio as an alternative.
J.
Attachments:
You must be logged in to view attached files.A good trader is a realist who wants to grab a chunk from the body of a trend, leaving top- and bottom-fishing to people on an ego trip. (Dr. Alexander Elder)
October 8, 2015 at 11:43 am #8278So I suggest using the Adaptive MA on the DIFF, which should be less “rugged”.
DIFF is simple – see red dotted line in this pic. This one is smoothed with a non-adaptive Supersmoother of length 20. When making this one adaptive, the basic question is which criterion to use in order to calculate the variable coefficients. I’ll try it with standard deviation at first, and maybe signal to noise ratio as an alternative. J.
Can you make a pic comparison between Gadi_Currencies_Diff against yours (preferably same colors for lines and DIFF)?
Thanks,
G.
- AuthorPosts
- You must be logged in to reply to this topic.