Welcome to the Traders Laboratory Forums.
Coding Forum Collaborate, receive help, or discuss coding related issues.

Reply
Old 05-08-2010, 06:46 AM   #1

Join Date: Dec 2008
Location: athens
Posts: 54
Ignore this user

Thanks: 0
Thanked 4 Times in 3 Posts



Maximum Value in Array if Condition is True

hi

i am dealing with a coding problem i dont know how to resolve efficiently

what i want to do is

first: to reset all the values of the array before last time a condition was true to the minimum value.

then : to get the maximum value of the array.

i am using a for down to loop to fill the array whitch has a fixed length
and two conditions.

counter = counter + 1 ;
if rsi(c,14) crosses over 50 then
counter = 0 ;

if c > average(c,1000) then
if counter = 1 then begin
for nn = 20 down to 1 begin
array[nn] = array[nn-1] ;
end;
array[nn] = c ;
end;

now the array has twenty elements some of whitch
are stored from the previous time that
the c was greater than the average when the counter equals 1 .

what i mean by that is the if the array evey time the condition (c> average) will start
it will carry over values from the previous time that the condition was true.

how can i sort this mess out ?

regards
andypap is offline  
Reply With Quote
Old 05-08-2010, 10:09 AM   #2

Tams's Avatar

Join Date: Sep 2008
Location: Geelong
Posts: 3,590
Ignore this user

Thanks: 2,027
Thanked 1,402 Times in 862 Posts



Re: Maximum Value in Array if Condition is True

Quote:
Originally Posted by andypap »
....
how can i sort this mess out ?

regards

step one:

draw out the array as in posts #34 ~ #36
http://www.traderslaboratory.com/for...uage-5785.html


step two:

draw a flow chart to illustrate HOW the variables get assigned to which array cell,
and how the re-assignments change the array.

.
__________________


..........This is a terribly difficult question to answer. The only satisfactory answer is: "It depends"...

Last edited by Tams; 05-08-2010 at 10:16 AM.
Tams is offline  
Reply With Quote
Old 05-16-2010, 06:33 AM   #3

Join Date: Dec 2008
Location: athens
Posts: 54
Ignore this user

Thanks: 0
Thanked 4 Times in 3 Posts



Re: Maximum Value in Array if Condition is True

well i dont exactly understand what you mean but thatks for the reply anyway


i will try to explain further what is the problem i am dealing with.

when the close just became greater than the average and this represents the basic condition
every time rsi crosses over 50 (second condition)the counter reset to 1 and the value of the close is stored in array[0]...

the array has 20 elements...

in the following senario

the first time rsi crosses over 50 after c > average
array slot[0] stores the close of that bar and the rest of the 19 slots
are carying over the closing value of the bars where counter = 1 from the
previous time that the close > average.

what i want to do is
every time the first condition becomes true to reset all the array values to
a dummy value (-1) and then every time counter = 1 start filling the array
with the close...

note i dont want to resize the array(dynamic array).

then i want to get the max value of the array slots.

note that in case of the scenario aformentioned
the array will be
array[0] = c;
array[1] to array[19] = -1
max value of array = array[0]

when the second ocurrance that counter = 1 will happen while c > average
then the array will be
array[0] = c of first ocuurance
array[1] = c of second occurance
array[2] to array[19] = - 1
if array[0] > array[1] then
max value of array = array[0] else array[1]

my problem is coding the above efficiently the way a pro would have done it so the code will be precize and 100% accurate

my efforts so far require a lot of lines and i am 80% accurate..

for example i am using the maxlist to get tha max value by naming all the array slots one by one

value1 = maxlist(array[0],array[1] ......array[19]) ;

regards
andypap is offline  
Reply With Quote
Old 05-16-2010, 10:45 AM   #4

Tams's Avatar

Join Date: Sep 2008
Location: Geelong
Posts: 3,590
Ignore this user

Thanks: 2,027
Thanked 1,402 Times in 862 Posts



Re: Maximum Value in Array if Condition is True

please tag your code with the # key.
it is located at the top of the message window.

Tagged code looks like this:

Code:
//
// this is tagged code
//

array[0] = c; 
array[1] to array[19] = -1 
max value of array = array[0]
__________________


..........This is a terribly difficult question to answer. The only satisfactory answer is: "It depends"...
Tams is offline  
Reply With Quote
Old 05-16-2010, 10:46 AM   #5

Tams's Avatar

Join Date: Sep 2008
Location: Geelong
Posts: 3,590
Ignore this user

Thanks: 2,027
Thanked 1,402 Times in 862 Posts



Re: Maximum Value in Array if Condition is True

flow chart
Flowchart - Wikipedia, the free encyclopedia

__________________


..........This is a terribly difficult question to answer. The only satisfactory answer is: "It depends"...
Tams is offline  
Reply With Quote
Old 05-16-2010, 09:59 PM   #6

Join Date: May 2008
Location: Singapore
Posts: 59
Ignore this user

Thanks: 22
Thanked 32 Times in 16 Posts



Re: Maximum Value in Array if Condition is True

let me rephrase to check your requirements:
1. you want to obtain value of close for period where the condition Close > Average is met.
2. reset function occurs where condition RSI > 50

would the following solution suffice?

Code:
inputs:
PeriodReq(20),
PeriodRSI(14);

variables:
RSI50C(0),
MyVar(0);

if Close > Average(C,1000)
then begin
RSI50C = IFF(RSI(C,PeriodRSI) > 50, Close, 0);
end
else
RSI50C = 0;
end;

MyVar = Highest(RSI50C,PeriodReq);
This will create a rolling fixed array that will:
1. return Close if conditions (a) C > Avg and (b) RSI > 50 are met
2. return highest Close over the past 20 periods

ps: i did not test the code out on TradeStation. probably may have some syntax error. but probably you need just the basic structure.

Last edited by sneo; 05-16-2010 at 10:25 PM.
sneo is offline  
Reply With Quote
Old 05-17-2010, 03:12 PM   #7

Join Date: Dec 2008
Location: athens
Posts: 54
Ignore this user

Thanks: 0
Thanked 4 Times in 3 Posts



Re: Maximum Value in Array if Condition is True

this is the code that i am using



vars : cnt(0),avg(0),maxval(0), ii(0) ;

arrays ; carr[10](0) ;

avg = average(c,1000) ;


cnt + cnt + 1 ;
if rsi(c,14) crosses over 50 then
cnt = 1 ;


if c > avg then begin
if cnt = 1 then begin
for ii = 10 downto 1 begin
carr[ii] = carr[ii-1];
end;
carr[0] = c ;
end ;
end ;

if c < avg then
for ii = 10 downto 1 begin
carr[ii] = -1 ;
end;

maxval = maxlist(carr[0],carr[1],carr[2],carr[3],carr[4],
carr[5],carr[6],carr[7],carr[8],carr[9]);



here is a scenario of how the code should opperate

suppose that
while the condition c > average is true there are only 5 instances where cnt = 1


the 5 first slots of the array should hold the closing price of those instances and the remaining slot( array[5] to array[9] the dummy value..

then when c < average the array should reset all its slots to the dummy value

then when c > average again the array should start populating again every time cnt = 1

note that
the array will populate all the slots with a closing price only if the
ocurrances of cnt = 1 are greater than 9 in the current run of the close been greater than the average...



sneo (thanks for the input)
this is not about periods back...
it is an array of 10 insctances of a condition(cnt = 1) within a broader condition(c>avg) that might ocurr or not if the broader condition will switch(c<avg) before the sum of instances of the instance condition(cnt=1) will reach 10 ...

i hope this will clarifie everything

regards
andypap is offline  
Reply With Quote
Old 05-18-2010, 11:34 AM   #8

BlowFish's Avatar

Join Date: Mar 2007
Location: In Da House
Posts: 3,272
Ignore this user

Thanks: 129
Thanked 1,038 Times in 694 Posts



Re: Maximum Value in Array if Condition is True

Quote:
Originally Posted by Tams »
please tag your code with the # key.
it is located at the top of the message window.

Tagged code looks like this:

Code:
//
// this is tagged code
//

array[0] = c; 
array[1] to array[19] = -1 
max value of array = array[0]
This will preserve your indents and make things easier for people to read.
BlowFish is offline  
Reply With Quote

Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes


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