| Coding Forum Collaborate, receive help, or discuss coding related issues. |
![]() | | Tweet | |
| | #1 | ||
![]() | Maximum Value in Array if Condition is True 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 | ||
| |
|
| | #2 | ||
![]() | Re: Maximum Value in Array if Condition is True Quote:
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. | ||
| |
|
| | #3 | ||
![]() | Re: Maximum Value in Array if Condition is True 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 | ||
| |
|
| | #4 | ||
![]() | Re: Maximum Value in Array if Condition is True 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"... | ||
| |
|
| | #5 | ||
![]() | Re: Maximum Value in Array if Condition is True
__________________ ..........This is a terribly difficult question to answer. The only satisfactory answer is: "It depends"... | ||
| |
|
| | #6 | ||
![]() | Re: Maximum Value in Array if Condition is True 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); 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. | ||
| |
|
| | #7 | ||
![]() | Re: Maximum Value in Array if Condition is True 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 | ||
| |
|
| | #8 | ||
![]() | Re: Maximum Value in Array if Condition is True Quote:
| ||
| |
|
![]() |
| Thread Tools | Search this Thread |
| Display Modes | |
| |