Jump to content

Welcome to the new Traders Laboratory! Please bear with us as we finish the migration over the next few days. If you find any issues, want to leave feedback, get in touch with us, or offer suggestions please post to the Support forum here.

  • Welcome Guests

    Welcome. You are currently viewing the forum as a guest which does not give you access to all the great features at Traders Laboratory such as interacting with members, access to all forums, downloading attachments, and eligibility to win free giveaways. Registration is fast, simple and absolutely free. Create a FREE Traders Laboratory account here.

andypap

Maximum Value in Array if Condition is True

Recommended Posts

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

please tag your code with the # key.

it is located at the top of the message window.

 

Tagged code looks like this:

 

//
// this is tagged code
//

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

Share this post


Link to post
Share on other sites

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?

 

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.

Edited by sneo

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
please tag your code with the # key.

it is located at the top of the message window.

 

Tagged code looks like this:

 

//
// 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.

Share this post


Link to post
Share on other sites

guys

 

this is a technical problem i am doing my best to describe...it is not an ethical problem...

if someone knows how it can be resolved and wants to do it can post a solution...

 

i think that this is only a matter of a certain structure of the array in a coupple of lines..

 

it can be viewed as a general routine (tutorial) in arrays because the conditions i am describing in the code can be replaced by any condition and the value assigned in the array by any value...

 

the benefit of this structure is isolating specific conditional instances within a more general condition without refering to bars back....

every time the counter = 1 the array slot will be filled with any desired value as long a the first general condition is true....

the counter doesnot have a fixed length so the array is filled in terms of length assymetrically...

thus you can get an assymetric n = (array size) moving average for example of highs

everytime rsi crosses over 70 ( this is not what i am after anyway) or anything else you can imagine of practical use...

 

so far everything works fine exept the fact that untill in the current run of the general condition , the occurances reach the size of the arrray, the array is bringing forward values from the previous run of the general condition...

 

regards

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Topics

  • Posts

    • If you decide to trade with IC Markets or Pepperstone or any other cTrader brokers, you can use Quantower platform for it.   
    • Date : 24th February 2020 Events to Look Out For Next Week 24th February 2020.The economic data has been and will continue to be overshadowed by the Covid-19 outbreak. The week ahead starts light, with the German Business Sentiment Index and Chinese Retail Sales on Monday. Leading indicators dominate the releases, but the event of the week is the US GDP and Consumer Confidence, which should shed light on whether the epidemic is visible in the data globally.Monday – 24 February 2020 Japan – Emperor’s Birthday Retail Sales (CNY, GMT N/A) – China’s retail trade growth stood at 8 percent year-on-year in December 2019. However a strong decline is expected for January, following the recent releases indicating that new car sales plunged 92% in China in February and airline traffic is expected to post the first drop since 2011 amid heavy virus containment measures in China. German IFO (EUR, GMT 09:00) – The German Business Sentiment Index released by the CESifo Group is closely watched as an early indicator of current conditions and business expectations in Germany. February’s numbers are expected to incline. Tuesday – 25 February 2020 Leading Economic Index (JPY, GMT 05:00) – The index is expected to show no change in the outlook of the Japanese economy and stand at 91.6. Gross Domestic Product (EUR, GMT 07:00) – German GDP is expected to have fallen by 0.3% on an annualized rate in the last quarter of the year, compared to 1.0% growth in Q3. Conference Board Consumer Confidence (USD, GMT 15:00) – Consumer Confidence is expected to have increased to 132.4 compared to 131.6 in the previous month. Wednesday – 26 February 2020 New Home Sales (USD, GMT 15:00) – The housing recovery should extend into 2020, assuming that mortgage rates remain low and Fed policy remains accommodative. The January new home sales should post a 2.3% climb to a 710k pace, after a dip to a 694k rate in December, versus a 12-year high of 730k in September. Trade Balance (NZD, GMT 21:45) – The Trade Balance measures the difference in value between imported and exported goods and services over the reported period. It will be interesting to see whether the New Zealand trade balance already posts an impact from the epidemic. Thursday – 27 February 2020 Gross Domestic Product (USD, GMT 13:30) – US preliminary GDP growth for Q4 is expected to trim to 2.0% from 2.1%. Durable Goods (USD, GMT 13:30) – Durable goods orders are expected to fall -1.5% in January with a -4.7% drop in transportation orders. Defense orders should fall by -29%, following the 101.4% December surge. Boeing orders declined to zero planes, following a dismal 3 planes in January. Tokyo Core CPI and Unemployment Rate (JPY, GMT 23:30) – Tokyo CPI is usually a good proxy for the Japanese economy’s overall inflation rate. In February, the CPI ex Food is expected to have stood at 0.9% y/y. The unemployment rate is expected to have climbed to 2.3% from 2.2% in December. Retail Sales (JPY, GMT 23:50) – Following a precipitous 3-month dive in October -December, due to a prolonged hit to exports from soft global demand and a slide in consumer spending following a nationwide tax hike, January’s Retail Sales are expected to drop to -1.1% on a y/y basis. Friday – 28 February 2020 Unemployment Rate (EUR, GMT 08:55) – The German unemployment rate is expected to have remained at 5% in February. Harmonized Index of Consumer Prices (EUR, GMT 13:00) – The German HICP inflation could rise to 0.3% m/m for February from the drop seen at -0.6% m/m last month. Gross Domestic Product (CAD, GMT 13:30) – A sharp slowing in Canada’s real GDP growth rate to 1.2% (q/q, saar) is expected in Q4 following the 1.3% Q3 growth. This should not add to the backing for a rate cut for the Bank of Canada. Personal Income (USD, GMT 13:30) – A 0.3% rise in personal income in January is anticipated after a 0.2% increase in December, alongside a 0.2% rise in consumption that follows a 0.3% December gain. Always trade with strict risk management. Your capital is the single most important aspect of your trading business.Please note that times displayed based on local time zone and are from time of writing this report.Click HERE to access the full HotForex Economic calendar.Want to learn to trade and analyse the markets? Join our webinars and get analysis and trading ideas combined with better understanding on how markets work. Click HERE to register for FREE!Click HERE to READ more Market news. Andria Pichidi Market Analyst HotForex Disclaimer: This material is provided as a general marketing communication for information purposes only and does not constitute an independent investment research. Nothing in this communication contains, or should be considered as containing, an investment advice or an investment recommendation or a solicitation for the purpose of buying or selling of any financial instrument. All information provided is gathered from reputable sources and any information containing an indication of past performance is not a guarantee or reliable indicator of future performance. Users acknowledge that any investment in FX and CFDs products is characterized by a certain degree of uncertainty and that any investment of this nature involves a high level of risk for which the users are solely responsible and liable. We assume no liability for any loss arising from any investment made based on the information provided in this communication. This communication must not be reproduced or further distributed without our prior written permission.
    • Can I use this EA on my Hotforex platform? How do I do that? 
    • Why are Market Wizard's insults and humiliations tolerated with impunity whereas our replies are sistematically banned? Just curious.
    • Bitcoin (BTC) Consolidates As Bears And Bulls Tussle Above $9,400 Support Key Resistance Zones: $10,000, $11,000, $12,000 Key Support Zones: $7, 000, $6, 000, $5,000 BTC/USD Long-term Trend: Ranging Bitcoin has failed to break above $10,400 overhead resistance. The bulls made two unsuccessful attempts at the resistance. In the recent one, the bears took the price to a low of $9,290 and then pulled back above $9,400. In the interim, the price is fluctuating above $9,400 and approaching the high of $9,800. As the bulls have failed to push above the overhead resistance, the pair may commence a range movement. Nonetheless, it is anticipated that if the bears break below the $9,400 support, selling pressure may resume. Meanwhile, BTC may continue the range-bound movement. BTC/USD – Daily Chart Daily Chart Indicators Reading: After the downward move of Bitcoin, the Relative Strength Index has also fallen to level 52. This simply means the coin is above the centerline 50. In other words, BTC is in an uptrend and it is likely to rise. Price broke the support line of the ascending channel. The uptrend will be in proper perspective only when the bulls break into the ascending channel. BTC/USD Medium-term Trend: Bearish On the 4- hour chart, Bitcoin now trades between $9,400 and $10,200 after the first breakdown at the $10,400 overhead resistance. The bulls tested the resistance at $10,200 twice , before the downward move. The large bearish candlesticks tested a low of $9,290. However, the small body candlesticks that follow are called indecisive candlesticks. BTC/USD – 4 Hour Chart 4-hour Chart Indicators Reading Presently, BTC is trading above a 25% range of the daily stochastic. That is the coin is in the bullish trend zone. The 21-day SMA and the 50-day SMA are sloping horizontally indicating a sideways trend. General Outlook for Bitcoin (BTC) From every indication, if the bulls fail to push above the overhead resistance, the price action in October and November will repeat itself. For the past three days, BTC is still fluctuating above $9,400. Instrument: BTC/USD Order: Sell Entry price: $9,700 Stop: $9,900 Target: $8,400 Note: Learn2Trade.com is not a financial advisor. Do your research before investing your funds in any financial asset or presented product or event. We are not responsible for your investing results Source: https://learn2.trade 
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.