Dictionary – Another Cool Collection Object
The dictionary object in EasyLanguage works just like a real dictionary. It stores values that referenced by a key. In a real-life dictionary, the keys would be words and the values would be the definitions of those words.
This little bit of code just barely skims the surface of the dictionary object, but it gives enough to get a nice introduction to such a powerful tool. I am piggybacking off of my Pattern Smasher code here, so you might recognize some of it.
Like any of the objects in EasyLanguage a dictionary must be declared initially.
Here I tell the editor that I am going to be using the elsystem.collections and then a declare/define a dictionary named patterDict and two vectors: index and values. In the Once block, I create instances of the three objects. This is boilerplate stuff for object instantiation.
The keys that index into the dictionary are strings. In this very simple example, I want to examine all of the different combinations of the last four-bar closing prices. Once the pattern hits up I want to accumulate the percentage change over the past three days and store that value in the location pointed to by the patternString key.
Notice how I displace the loop by three days (5-2 insteat of 3-0)? I do this so I can compare the close at the end of the pattern with today’s close, hence gathering the percentage change. Also, notice that I test to make sure there is an entry in the dictionary with the specific key string. If there wasn’t already an entry with the key and I tried to reference the value I would get an error message – “unable to cast null object.”
Once I store the keys and values I can regurgitate the entire dictionary very simply. The keys and values are stored as vectors. I can simply assign these components of the dictionary to the two vectors I instantiated earlier.
And then I can simply index into the vectors to print out their contents. I will add some more commentary on this post a little later this week. I hope you find this useful. And remember this will not work with MultiCharts.