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


Reply via email to