Welcome to the Traders Laboratory.

TradeStation Custom Programming Discuss projects, ideas, obstacles in programming with TradeStation.

Reply
Old 04-09-2012, 06:09 PM   #1

BlueHorseshoe's Avatar

Join Date: Jan 2012
Location: UK
Posts: 1,394
Ignore this user

Thanks: 235
Thanked 285 Times in 221 Posts

EL - Can It Return All Permutations for a Set of Values?

Hi folks,

Wondering if anyone can help me . . . I'm playing around with a genetic optimisation concept, and I'm wondering what would be the best way to get EL to return each individual permutation for a set of values. Obviously I can easily calculate the n! factorial, but my requirement is for the code to return (and then process) each individual possible permutation as a string (I use that last word loosely!). Oh, and just to make it a bit more complicated, I want to include repetitions of values, up to and including strings composed entirely of a single value.

Hopefully I can make this clearer with an example. Considering the last three periods, and whether they were 'up closes' ('U') or 'down closes' ('D'), the following permutations would be possible:

UUU
UUD
UDU
UDD
DUU
DUD
DDU
DDD

So, having defined the values 'U' and 'D', how could I instruct EL to return each of these 3-value strings sequentially?

Thanks

Bluehorseshoe
BlueHorseshoe is offline  
Reply With Quote
Old 04-10-2012, 05:08 AM   #2

Join Date: May 2010
Posts: 304
Ignore this user

Thanks: 10
Thanked 71 Times in 57 Posts

Re: EL - Can It Return All Permutations for a Set of Values?

If you need uuu to be a string instead of boolean you could try something like this instead of the boxed code.

var: uuu(" ");

if up and up[1] and up[2] then uuu="uuu" else uuu=" ";


Code:
var: up(false), dn(false), uuu(false), uud(false), str(" ");

up=c>c[1];
dn=c<c[1];

uuu=up and up[1] and up[2];
uud=up and up[1] and dn[2];

if uuu then str="uuu" else if uud then str="uud" else str="   ";
onesmith is offline  
Reply With Quote
The Following User Says Thank You to onesmith For This Useful Post:
BlueHorseshoe (04-10-2012)
Old 04-10-2012, 07:46 AM   #3

BlueHorseshoe's Avatar

Join Date: Jan 2012
Location: UK
Posts: 1,394
Ignore this user

Thanks: 235
Thanked 285 Times in 221 Posts

Re: EL - Can It Return All Permutations for a Set of Values?

Hi Onesmith,

Thanks for your reply.

Unless I'm missing something, then with either approach I would still need to manually set up each possible permutation. This is easy enough in the example I gave where there are only eight permutations, but supposing that I had five possible values ('upstrong','upweak','fla t','downstrong','downweak ') and considered strings of up to ten values (ie periods) in length, then the number of permutations would be far too large to type.

This would pressumably be possible by using the optimisation feature with a strategy report, in which every possible permutation of inputs would be tested. Is there a way to do this on an ongoing basis internally to the code?

Cheers,

Bluehorseshoe
BlueHorseshoe is offline  
Reply With Quote
Old 04-10-2012, 09:53 AM   #4
zdo

Join Date: Nov 2007
Location: boonies
Posts: 2,086
Ignore this user

Thanks: 406
Thanked 517 Times in 381 Posts

Re: EL - Can It Return All Permutations for a Set of Values?

BluHorShu

Not sure I understand what you’re asking but if you are trying to list all the combo’s look at the essence of something like
Visual Basic Code - List Lotto Combinations with the Lotto CLass

or

Permutations/Combinations Problem in VBA - CodeGuru Forums
to get you going.

Why do you need to process it as strings? Wouldn’t it be better to leave all the permutations in binary data type, process them, and maybe only convert the final outputs to string data type ?

btw. Ultimately you will need to put routines like this to a dll and also restrict when it is run (ie definitely not on every tick )

hth
zdo is offline  
Reply With Quote
Old 04-10-2012, 02:12 PM   #5

Join Date: May 2010
Posts: 304
Ignore this user

Thanks: 10
Thanked 71 Times in 57 Posts

Re: EL - Can It Return All Permutations for a Set of Values?

As zdo suggests ...binary numbers can be represented as integers

and looped from zero to infinity_minus_one
while simultaneously flipping a bit in it's corresponding binary format.
onesmith is offline  
Reply With Quote
Old 04-10-2012, 02:26 PM   #6

Join Date: May 2008
Location: London
Posts: 43
Ignore this user

Thanks: 26
Thanked 21 Times in 15 Posts

Re: EL - Can It Return All Permutations for a Set of Values?

Quote:
Originally Posted by BlueHorseshoe »
Hi folks,

Wondering if anyone can help me . . . I'm playing around with a genetic optimisation concept, and I'm wondering what would be the best way to get EL to return each individual permutation for a set of values. Obviously I can easily calculate the n! factorial, but my requirement is for the code to return (and then process) each individual possible permutation as a string (I use that last word loosely!). Oh, and just to make it a bit more complicated, I want to include repetitions of values, up to and including strings composed entirely of a single value.

Hopefully I can make this clearer with an example. Considering the last three periods, and whether they were 'up closes' ('U') or 'down closes' ('D'), the following permutations would be possible:

UUU
UUD
UDU
UDD
DUU
DUD
DDU
DDD

So, having defined the values 'U' and 'D', how could I instruct EL to return each of these 3-value strings sequentially?

Thanks

Bluehorseshoe
Code:
Variables:  First(0), Second(0), Third(0), mystring(""); 
Variables: First_text(""), Second_text(""), third_text("");

For First = 0 To 1 
Begin
If First = 0 then first_text = "U";
If First = 1 then first_text = "D";
For Second = 0 to 1
Begin
If Second = 0 then second_text = "U";
If Second = 1 then second_text = "D";
For Third = 0 to 1
Begin
If Third = 0 then third_text = "U";
If Third = 1 then third_text = "D";
 Mystring = First_text + second_text + third_text;
 print(Mystring);
 End;
End;
End;
If you stick this in an indicator and insert the indicator into some chart it will continually send the 3 letter combinations to the print log. It's not elegant but it is simple

Charlton
Charlton is offline  
Reply With Quote
Old 04-10-2012, 06:28 PM   #7

BlueHorseshoe's Avatar

Join Date: Jan 2012
Location: UK
Posts: 1,394
Ignore this user

Thanks: 235
Thanked 285 Times in 221 Posts

Re: EL - Can It Return All Permutations for a Set of Values?

Quote:
Originally Posted by zdo »
BluHorShu

Not sure I understand what you’re asking but if you are trying to list all the combo’s look at the essence of something like
Visual Basic Code - List Lotto Combinations with the Lotto CLass

or

Permutations/Combinations Problem in VBA - CodeGuru Forums
to get you going.

Why do you need to process it as strings? Wouldn’t it be better to leave all the permutations in binary data type, process them, and maybe only convert the final outputs to string data type ?

btw. Ultimately you will need to put routines like this to a dll and also restrict when it is run (ie definitely not on every tick )

hth
Hi ZDO,

Thanks for your reply. Sorry my question isn't as clear as it might be - I think to convey exactly what I mean would require an explanation of the full context, which could take pages. But I'll have another go:

Suppose that I wanted to know whether, following three down closes, an up close or a down close was the more prominent within a historical data set. I could define the series/string/sequence(whatever it should be called) 'DDD' and also create two variables 'DDDD(0)' and 'DDDU(0)' each of which has a "predictive" value for the fourth day.

For each instance within the historical data where the sequence 'DDD' occurs, the variable 'DDDD' would predict a fourth down day, and 'DDDU' would predict a fourth up day. By examining the actual outcome on the fourth day, I could then "reward" whichever of the two variables correctly predicted the actual outcome by increasing its value, and "punish" whichever of the variables predicted it incorrectly by decreasing its value. So, in the case of a sequence of closes DDD then the following would happen:

Code:
If c<c[1] and c[1]<c[2] and c[2]<c[3] then begin
If DDDU>DDDD then
P=DDDU
Else
P=DDDD;
End;
End;

If P[1]=DDDD and c<c[1] then begin
DDDD=DDDD[1]+1;
DDDU=DDDU[1]-1;
End;

If P[1]=DDDU and c>c[1] then begin
DDDU=DDDU[1]+1;
DDDD=DDDD[1]-1;
End;
Over time, if three down closes were suceeded by an up close more often than not, then the variable 'DDDU' would grow while the variable 'DDDD' would diminish. The variable 'P', by the way, is part of a slightly different concept of giving precedence to the sequence which has shown the greatest historical predictive capability.

In the example above, I have chosen to examine historical probabilities surrounding a particular sequence (three down closes) which I have manually specified. What I am looking for is a mechanical way of processing all possible sequences of a given length in the same fashion.

Hopefully my aim is now a little clearer.

Thanks.

Bluehorseshoe
BlueHorseshoe is offline  
Reply With Quote
Old 04-10-2012, 06:40 PM   #8

BlueHorseshoe's Avatar

Join Date: Jan 2012
Location: UK
Posts: 1,394
Ignore this user

Thanks: 235
Thanked 285 Times in 221 Posts

Re: EL - Can It Return All Permutations for a Set of Values?

Quote:
Originally Posted by zdo »
BluHorShu

Not sure I understand what you’re asking but if you are trying to list all the combo’s look at the essence of something like
Visual Basic Code - List Lotto Combinations with the Lotto CLass

or

Permutations/Combinations Problem in VBA - CodeGuru Forums
to get you going.

Why do you need to process it as strings? Wouldn’t it be better to leave all the permutations in binary data type, process them, and maybe only convert the final outputs to string data type ?

btw. Ultimately you will need to put routines like this to a dll and also restrict when it is run (ie definitely not on every tick )

hth
I learnt to program in BASIC many, many years ago, when I was about eleven! I was wondering whether clubbing together a series of 'FOR N=A TO B . . . NEXT' type statements would work? If so, could anyone provide a bit example code to illustrate how this would work in EL?

Also, I have clearly confused matters by my use of the word 'String'. I am just using the term as a synonym of 'Sequence', and not in whatever special sense the term functions within EL.

Although I am only just begining to explore this whole concept, I doubt that I will want to follow the market on anything like a tick-by-tick basis. The purpose of the code would be to draw out sequences that have demonstrated high predictive properties within a historical data set.

Thanks,

Bluehorseshoe
BlueHorseshoe is offline  
Reply With Quote

Reply

Thread Tools
Display Modes Help Others By Rating This Thread
Help Others By Rating This Thread:

Similar Threads
Thread Thread Starter Forum Replies Last Post
Printing Indicator Values to File RambleDog TradeStation Custom Programming 2 04-04-2011 08:21 AM
Same Strategy Indicator Different Values andypap Coding Forum 5 01-04-2010 01:38 PM
Breakeven Problems (no Run-up or DD Values) Firefly Automated Trading 14 05-01-2009 05:04 PM
Assigning Values of Specific Times of Day in EasyLanguage? Tams Coding Forum 3 04-12-2009 11:15 AM
Finding Hex Color Values for TS? daedalus Coding Forum 4 04-01-2009 02:29 PM

All times are GMT -4. The time now is 05:14 PM.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
CS to VB integration by DeskLancer
©2006-2011 Traders Laboratory, All Rights Reserved.