Bruce, I responded to your private email. Check your spam folder if you haven't seen my note.
Mike --- In [email protected], "Bruce" <bru...@...> wrote: > > Mike - > > Thanks for stating it a little differently and probably more simply. Perhaps > this will resonate with him. > > P.S. I've sent you an e-mail about a different subject. > > > --- In [email protected], "Mike" <sfclimbers@> wrote: > > > > Ton, > > > > As pointed out by Bruce in an earlier reply; > > > > 1. It IS a scaler that you are getting. > > 2. Your test ( i.e. Ref(mySuperStr, -1) ) is a false test. > > > > The reason your test writes array elements is because Ref returns an array! > > Your test is writing out the result of the Ref function, which is > > completely independent of the arguments passed into that function. > > > > Run your test again using a hard coded scaler and you will see that it > > still prints out as if it were an array, when clearly it is not. > > > > mySuperStr = 5; //StrToNum(NumToStr(Close)); > > > > _TRACE("mySuperString1 "+mySuperStr); > > _TRACE("mySuperString2 "+Ref(mySuperStr,-1)); > > _TRACE("mySuperString3 "+Ref(mySuperStr,-2)); > > > > Presumably, Ref is converting the incoming scaler to an array for its own > > usage. > > > > Mike > > > > --- In [email protected], "Ton Sieverding" <ton.sieverding@> wrote: > > > > > > Hi Rick, > > > > > > As you can see, in the mean time I have got several answers. > > > Interesting enough we all have different opinions about this topic. But > > > frankly I do not agree with "It becomes just a number, not an array". Why > > > not ? Because that's not what I see. Did you ever try to access different > > > elements in a number ? Do the following ... > > > > > > // This is an array ... > > > myString = Close; > > > > > > _TRACE("myString1 "+myString); > > > > > > _TRACE("myString2 "+Ref(myString,-1)); > > > > > > _TRACE("myString3 "+Ref(myString,-2)); > > > > > > // This still is an array ... > > > > > > mySuperStr = StrToNum(NumToStr(Close)); > > > > > > _TRACE("mySuperString1 "+mySuperStr); > > > > > > _TRACE("mySuperString2 "+Ref(mySuperStr,-1)); > > > > > > _TRACE("mySuperString3 "+Ref(mySuperStr,-2)); > > > > > > Giving me : > > > > > > > > > > > > So for me it's still an array. And according to the AmiBroker Help you > > > cannot handle arrays with an simple IF. For that you need a complex IIF. > > > > > > Now it seems that if all elements in an array are equal, it's possible to > > > use the simple IF. Because the IF thinks you are working with a number or > > > string. ( Bruce ) If that's the case - and only Tomasz can tell me that - > > > than the above is a simple way to use the simple IF for situations where > > > you normally should use an complex IIF ... Therefore I find this code > > > very interesting ... > > > > > > Regards, Ton. > > > > > > > > > ----- Original Message ----- > > > From: Rick Osborn > > > To: [email protected] > > > Sent: Tuesday, June 15, 2010 2:50 AM > > > Subject: Re: [amibroker] impenetrable AFL > > > > > > > > > > > > > > > Ton > > > You may have this a little backward. > > > The first operation is NumToString - which changes the array value to a > > > string. > > > The next operation is StrToNum - which changes the string back to a > > > number. It becomes just a number, not an array > > > > > > > > > Best Regards > > > Rick Osborn > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------------ > > > From: Ton Sieverding <ton.sieverding@> > > > To: [email protected] > > > Sent: Mon, June 14, 2010 4:11:34 AM > > > Subject: Re: [amibroker] impenetrable AFL > > > > > > > > >  > > > > > > Rick changing a string to a number THAT'S COMING FROM AN ARRAY and > > > after that changing a number to a string again, should give me the same > > > array with the initial strings. But the fact that I can use IF after the > > > string manipulation shows me that I am no longer having an array ... I > > > still do not get this. Weird ... > > > > > > Tomasz ???? > > > > > > Regards, Ton. > > > > > > > > > ----- Original Message ----- > > > From: Rick Osborn > > > To: amibro...@yahoogrou ps.com > > > Sent: Sunday, June 13, 2010 5:33 PM > > > Subject: Re: [amibroker] impenetrable AFL > > > > > > > > > > > > > > > First off let me repeat - this is not my original code. > > > I found it in someone's code for TD Sequential (with apologies to the > > > original coder - didn't keep your name) > > > > > > The Buysignal is a Flip(Buy,Sell) type - or could be a true/false > > > item. > > > > > > Checking the help file the NunToStr says > > > FUNCTION It is used to convert numeric value of NUMBER or > > > ARRAY to string. > > > Next the StrToNum function > > > FUNCTION It is used to convert numeric value of NUMBER or > > > ARRAY to string. > > > So the combination of changing that value of the array from a number > > > to a string and then "that string" back to "a number" (not an array) > > > > > > LastValue works the same but I still don't understand that function > > > well enough. > > > From the help file > > > FUNCTION Returns last calculated value of the specified ARRAY. > > > The result of this function can be used in place of a constant (NUMBER) > > > in any function argument. > > > If ARRAY is undefined (e.g., only 100-days loaded and you > > > request the last value of a 200-day moving average) then the lastvalue > > > function returns zero. > > > Caveat: since this function fills an entire data array with the > > > last value of another array, it allows a formula to look into the future. > > > > > > so if there are repeated events (buy signals and sell signals), I'm > > > not sure if lastvalue sees any but the last one. Plus I worry about the > > > Caveat!! > > > > > > > > > Best Regards > > > Rick Osborn > > > > > > > > > > > > > > > > > > ---------------------------------------------------------------------------- > > > From: Ton Sieverding <ton.sieverding@ scarlet.be> > > > To: amibro...@yahoogrou ps.com > > > Sent: Sun, June 13, 2010 2:55:32 AM > > > Subject: Re: [amibroker] impenetrable AFL > > > > > > > > >  > > > > > > That's interesting code, Rick. Can you explain me why this works ? > > > > > > 1. First I assume BuySignal to be BUY. Therefore being an array. So > > > IF should not work. Should be IIF. But even when I put there BUY to be > > > sure it's an array, it does work. Why ? > > > > > > 2. What's the difference between StrToNum(NumtoStr( BUY)) and BUY ? > > > Should give me the same result. But is does not. Without this trick I > > > cannot use IF. What's going on here ???? > > > > > > Regards, Ton. > > > > > > > > > ----- Original Message ----- > > > From: Rick Osborn > > > To: amibro...@yahoogrou ps.com > > > Sent: Saturday, June 12, 2010 10:52 PM > > > Subject: Re: [amibroker] impenetrable AFL > > > > > > > > > > > > > > > Yuki > > > > > > I have the following code which changes the background gradient > > > color depending on whether a buy or sell signal is given. > > > > > > if(StrToNum(NumToStr(BuySignal)) ) > > > bgColor = ColorRGB(0,66, 2); > > > else > > > bgColor = ColorRGB(66,2, 0); > > > SetChartBkGradientF ill( colorBlack, bgColor); > > > > > > > > > Perhaps you can change this to meet your needs > > > > > > > > > Best Regards > > > Rick Osborn > > > > > > > > > > > > > > > > > > -------------------------------------------------------------------------- > > > From: Yuki Taga <yukit...@tkh. att.ne.jp> > > > To: amibro...@yahoogrou ps.com > > > Sent: Sat, June 12, 2010 1:24:58 AM > > > Subject: [amibroker] impenetrable AFL > > > > > > > > > Impenetrable! (At least to me.) > > > > > > xcolor = IIf(TSI >= SigLine, SetChartBkGradientF ill( ParamColor(" > > > BgTop", ColorRGB( 172,172,172 )), > > > ParamColor(" BgBottom" , ColorRGB( 172,172,172 ))), > > > SetChartBkGradientF ill( ParamColor(" BgTop", ColorRGB(140, 140,140)) , > > > ParamColor(" BgBottom" , ColorRGB(140, 140,140)) )); > > > > > > SetChartBkColor( SelectedValue( xcolor)); > > > > > > I tried that line above as > > > SetChartBkGradientF ill(SelectedValu e(xcolor) ); but that produced > > > a > > > syntax error. > > > > > > I think you can see what I'm trying to do here. The idea is simple: > > > change the background gradient depending on a true/false result. The > > > gradients in this example are not the gradients I would actually use > > > (in fact they are not gradients at all, as your intelligent eyes > > > will > > > quickly have seen). They are just test code to see if I can even > > > make it work. I cannot. > > > > > > For one thing, the gradient does not change no matter the selected > > > value. It's static. For another thing, the margin background goes > > > to black, a hideous (although somewhat foreseen) result. > > > > > > Okay, what am I doing wrong, and where did I miss this in the docs? > > > And what, if anything, can I do about this margin result? The only > > > way I can change the *entire* background color is by not using a > > > gradient??? (Using SetChartBkColor) How sad that would be! I can > > > make that work, at least. But not with a gradient. > > > > > > Anything is possible in Amibroker, right? > > > > > > Wrong? > > > > > > Thanks, > > > > > > Yuki > > > > > >
