Skip to content

Tutorial 95 | Sorting a vector using a recursive method

Fast sort function for vectors

Welcome to Markplex tutorial 95 in this collection of tutorials designed to help you learn TradeStation EasyLanguage programming skills. Please join our email list if you have not already done so and we will let you know when we release new tutorials or programs.

Tutorial 95 demonstrates how to create a function that sorts a vector. It applies a fast sort methodology that uses recursive calls to a method. This makes the program relatively simple, although conceptually a little difficult to understand.

If you want to save yourself some typing, an unprotected version of the tutorial 95 function is available immediate download for $19.95.

With the download I have included:

  • the sort function (_VectorQuickSort)
  • two show-me studies that I demonstrate in the video below that show how to call the function (_VectorQuickSortTest and _VectorQuickSortTest2)
  • an annotated print out from the function (as explained in the video) ( tutorial 95 processing.pdf) and
  • the schematic in PDF format (tutorial 95 schematic.pdf)
A schematic to explain the functioning of the recursive method.
A schematic to explain the functioning of the recursive method. I explain this is the video below.

 _VectorQuickSort function

The function contains a sort method which picks a position in the array at random and then compares the value stored at that index with those in the rest of the vector. The random value (in the initial iteration, 76 – see the above schematic) is added to a ‘middle’ vector. Values higher than this value are stored in a higher vector and values lower in a lower vector. These new higher and lower vectors are then fed back into the method to go through the same process recursively. The recursion continues until the size of the vector being processed is equal to 1.

This function also includes a concatenate method that concatenates the 3 vectors. This simple method uses For Begin…End loops to add values from two input vectors to the back of another one.

The program also contains some commented out print statements that can be uncommented and placed at line 33 in order to see the ‘inner workings’ of the program. tutorial 95 processing.pdf is an annotated example print out using these statements.

The print statements are as follows:

// Print statements used in debugging

// Place starting at line 33
Print( File("c:\quicksort.txt"),"Iteration ",iteration," ", D, T, " wholevector.count ", wholevector.count, " lowerEnd.count ", lowerEnd.count, " higherEnd.count ", higherEnd.count," select ", select, " selectval ", selectval );

For Value1 = 0 to wholevector.count - 1
Begin
Print( File("c:\quicksort.txt"), " Wholevector Iteration ",iteration," ", Value1," ", wholevector[Value1] astype double );
End;

For Value1 = 0 to higherend.count - 1
Begin
Print( File("c:\quicksort.txt"), " Higherend Iteration ",iteration," ", Value1," ", higherend[Value1] astype double );
End;

For Value1 = 0 to middle.count - 1
Begin
Print( File("c:\quicksort.txt"), " Middle Iteration ",iteration," ", Value1," ", middle[Value1] astype double );
End;

For Value1 = 0 to lowerend.count - 1
Begin
Print( File("c:\quicksort.txt"), " Lowerend Iteration ",iteration," ", Value1," ", lowerend[Value1] astype double );
End;

In this case the print statement created a text file at: c:\quicksort.txt on my hard drive. Adding these lines of code will reduce the speed of the function significantly and should only be used when sorting small arrays.

_VectorQuickSortTest show-me study

The show me study: _VectorQuickSortTest creates a vector containing an arbitrary, unsorted list of numbers: 76, 20, 0, 100, 87, 1, 1, 876. This show me study calls the _VectorQuickSort function.  It also prints the contents of the vector before and after the sort.

 _VectorQuickSortTest2 show-me study

The show me study: _VectorQuickSortTest2 creates a vector containing randomly generated numbers. It sorts this vector and times how long the sort takes. Finally it prints the sorted vector.

The number of elements in the vector to be sorted is determined by the following statement:

// Store random values in array testvect
For Value1 = 1 to 1000000
Begin
testvect.push_back( Random( 100000 ) );
End;

In this case 1,000,000 values are stored in the vector.

An unprotected version of the tutorial 95 function together with the PDFs and test programs are available for download for $19.95.

Gold Pass members get an additional 20% discount off all program and tutorial prices. If you are a Gold Pass member make sure you enter the special coupon code to get 20% discount off these prices. You can find the coupon code on the Gold Pass page.

TO THE BEST OF MARKPLEX CORPORATION’S KNOWLEDGE, ALL OF THE INFORMATION ON THIS PAGE IS CORRECT, AND IT IS PROVIDED IN THE HOPE THAT IT WILL BE USEFUL. HOWEVER, MARKPLEX CORPORATION ASSUMES NO LIABILITY FOR ANY DAMAGES, DIRECT OR OTHERWISE, RESULTING FROM THE USE OF THIS INFORMATION AND/OR PROGRAM(S) DESCRIBED, AND NO WARRANTY IS MADE REGARDING ITS ACCURACY OR COMPLETENESS. USE OF THIS INFORMATION AND/OR PROGRAMS DESCRIBED IS AT YOUR OWN RISK.

ANY EASYLANGUAGE OR POWERLANGUAGE TRADING STRATEGIES, SIGNALS, STUDIES, INDICATORS, SHOWME STUDIES, PAINTBAR STUDIES, PROBABILITYMAP STUDIES, ACTIVITYBAR STUDIES, FUNCTIONS (AND PARTS THEREOF) AND ASSOCIATED TECHNIQUES REFERRED TO, INCLUDED IN OR ATTACHED TO THIS TUTORIAL OR PROGRAM DESCRIPTION ARE EXAMPLES ONLY, AND HAVE BEEN INCLUDED SOLELY FOR EDUCATIONAL PURPOSES. MARKPLEX CORPORATION. DOES NOT RECOMMEND THAT YOU USE ANY SUCH TRADING STRATEGIES, SIGNALS, STUDIES, INDICATORS, SHOWME STUDIES, PAINTBAR STUDIES, PROBABILITYMAP STUDIES, ACTIVITYBAR STUDIES, FUNCTIONS (OR ANY PARTS THEREOF) OR TECHNIQUES. THE USE OF ANY SUCH TRADING STRATEGIES, SIGNALS, STUDIES, INDICATORS, SHOWME STUDIES, PAINTBAR STUDIES, PROBABILITYMAP STUDIES, ACTIVITYBAR STUDIES, FUNCTIONS AND TECHNIQUES DOES NOT GUARANTEE THAT YOU WILL MAKE PROFITS, INCREASE PROFITS, OR MINIMIZE LOSSES.

Tutorial 95 Video

An unprotected version of the tutorial 95 function is available for download for $19.95.

With the download I have included:

  • the sort function (_VectorQuickSort)
  • two show-me studies that demonstrate how to call the function (_VectorQuickSortTest and _VectorQuickSortTest2)
  • an annotated print out from the function (as explained in the video) ( tutorial 95 processing.pdf) and
  • the infographic in PDF format (tutorial 95 schematic.pdf)

Gold Pass members get an additional 20% discount off all program and tutorial prices. If you are a Gold Pass member make sure you enter the special coupon code to get 20% discount off these prices. You can find the coupon code on the Gold Pass page.

If you see any errors in this tutorial – or we have not made something clear, we would be most grateful if you could please let us know. E-mail us at: tutorials@markplex.com. Also, let us know if you have any ideas for new tutorials.