[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Re: Problem with for,if, else statement



PureBytes Links

Trading Reference Links

Terry,

You are right!! I'm sorry. I should have paid more attention. It does make it easier to read the code this way. I put the code as stated and got  syntax error, so I put 2 brackets and it works.

for( i = 0; i < BarCount; i++ ) >>

{>>

    if (SBAvg[i]>FBavg[i] AND (CalcO[i]>= -0.11 AND CalcO[i]<= 0.11))  >>

   {>>

      wi = "    DiffO:    " + WriteVal(O[i] - FBAvg[i],1.2);>>

   }>>

   else if(SBAvg[i]>FBAvg[i] AND (CalcC[i]>= -0.11 AND CalcC[i]<= 0.11))>>

   {>>

      wi = "    DiffC:   " + WriteVal(CalcC[i],1.2);>>

   }>>

   else>>

  {>>

      wi = "   stay  ";

>> 

>_N(Title = Name() + " (" + StrLeft(FullName(), 10) + ") -- " + Date() +" O: "+ WriteVal(O,1.2 )+ " H: " + WriteVal(H,1.2) + " L: " + WriteVal(L,1.2) + " C: " + C + " Fast = " + WriteVal(FBAvg,1.2)+ EncodeColor( colorPaleTurquoise )+ wi);

>

Yes, I would like and appreciate it if you could help me  see the values on the chart area for a given bar. I have clicked on the bars but the title will not show value of the day I clicked. ie:

WMT --August 24,2005  Open: 46.35 ,   FBAvg: 46.38 gives value DiffO:  +.07

instead the value in the title says stay.

Thank you.

Sincerely,

Donna


--- In amibroker@xxxxxxxxxxxxxxx, "Terry" <MagicTH@xxxx> wrote:

Donna,

You said: "I only want to search within these ranges. I don't want to find values that are over 0.11 cents or under the -0.11. Just either or condition within the +0.11 and -0.11 range."

I gave you the answer already. I also said try this first and I'd help more, but if you aren't going to listen then I'm not going to help. I make mistakes too so my answers are not always perfect, but in this case I double checked after Bob's comment and re-explained. This answer is in this email below and re-copied here:

 

( CalcO[i] <= 0.11 AND CalcO[i] >= -0.11 ) //Number is BETWEEN -0.11 and +0.11

 

It makes more sense for reading code to reverse the terms (the plus and minus values and < > ) like this:

 

( CalcO[i] >= -0.11 AND CalcO[i] <= 0.11 ) //Number is BETWEEN -0.11 and +0.11

 

 

Simply scrolling through a window changes nothing except the values reported in the Y axis on the right side of the graph. If you want to see values (on the chart or in the Interpretation window) for a given bar, you must click on the bar.

 

 

As to Diff not changing, I see you have the same logic error inside the loop as shown above. Apply the same fix that as above to stop getting the same answers regardless of the data values.

 

 

There is more code I have not evaluated yet. If the above is changed and still does not solve your problem, write back.

--

Terry

-----Original Message-----
From:
amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf Of dmarval
Sent: Thursday, Novem
ber 17, 2005 19:48
To:
amibroker@xxxxxxxxxxxxxxx
Su
bject: [amibroker] Re: Problem with for,if, else statement

 

Bob

If you mean that the FBAvg is acting as my zero line, then you are correct.

You wrote:

     "( CalcO[i]<= 0.11 OR CalcO[i]>= -0.11 ) restrains CalcO[i] to the band centered on zero.">>

if (SBAvg[i]>FBavg[i] AND CalcO[i]<= 0.11 OR CalcO[i]>= -0.11)// The price of 0.11 is the cap above the FBAvg OR -0.11 is the cap below the FBAvg.

I only want to search within these ranges. I don't want to find values that are over 0.11 cents or under the -0.11. Just either or condition within the +0.11 and -0.11 range.

In my earlier post  I said that if I scroll through the window, different values will appear in the title (but only showing value of the last trading day shown in the window) . But that is incorrect. Eventhough the values in the title are displaying different amounts when you scroll through the window, it does not match the last trading day within the display window.

The only value that shows correct in the title is the current end of the trading day. All other date periods in the title show false results when scrolling through window. And if clicked in various areas of the window ( your window display must be showing last trading period --today), the amount in the "Diff" title will not change. I am so stumped!

Sincerely,

Donna

 

If I click in the middle of the window --the value of that day will not show. I am at a loss


--- In amibroker@xxxxxxxxxxxxxxx, "Bob Jagow" <bjagow@xxxx> wrote:

I failed to read beyond the 1st line, Steve.

You're right, of course!!!

And it may well be that Donna wants to exclude [as per your 2nd choice] the band centered on zero

Bob

-----Original Message-----
From: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx]On Behalf Of Terry
Sent: Thursday, November 17, 2005 4:08 PM
To: amibroker@xxxxxxxxxxxxxxx
Subject: RE: [amibroker] Problem with for,if, else statement

The problem is with this part:


( CalcO[i]<= 0.11 OR CalcO[i]>= -0.11 )

ANY number is ALWAYS less than +.11 OR greater than -.11, right?

1,000,000 is > -0.11

-1,000,000 is < +0.11

Pick a number, always TRUE.

This is why I suggested changing this part. In fact, I don't know what is wanted except I'm pretty sure ALWAYS TRUE is NOT the desired result.

I see the choices as:

( CalcO[i] <= 0.11 AND CalcO[i] >= -0.11 ) //Number is BETWEEN -0.11 and +0.11

or

( CalcO[i] >= 0.11 OR  CalcO[i] <= -0.11 ) //Number is either below -0.11 OR above +0.11

--

Terry

-----Original Message-----
From: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf Of Bob Jagow
Sent: Thursday, November 17, 2005 16:23
To: amibroker@xxxxxxxxxxxxxxx
Subject: RE: [amibroker] Problem with for,if, else statement

Terry.,

Re the logic, he clearly wants

if (SBAvg[i]>FBavg[i] AND ( CalcO[i]<= 0.11 OR CalcO[i]>= -0.11 ) ).

[The added parens are needed because AND has a higher precedence than OR].

if (SBAvg[i]>FBavg[i] AND (CalcO[i]<= 0.11 OR CalcO[i]>= -0.11)         == true,

but if (SBAvg[i]>FBavg[i] AND CalcO[i]<= 0.11 AND CalcO[i]>= -0.11)     == false

Didn't check the looping logic because it should be doable with the original arrays IMO.

Regards,

Bob

-----Original Message-----
From: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx]On Behalf Of Terry
Sent: Thursday, November 17, 2005 12:44 PM
To: amibroker@xxxxxxxxxxxxxxx
Subject: RE: [amibroker] Problem with for,if, else statement

One step at a time (saves me time!)

Please first fix this statement as ANY values always give TRUE the way it is. Note red text.

Change this:

if (SBAvg[i]>FBavg[i] AND CalcO[i]<= 0.11 OR CalcO[i]>= -0.11)

To this:

if (SBAvg[i]>FBavg[i] AND CalcO[i]<= 0.11 AND CalcO[i]>= -0.11)

With or without that fix, I get different answers for each day I click on.

If that doesn't fix it, write back

Also, please "wrap" your Title statement in _N(Title = …); to keep the garbage out of the Interpretation window.

_N(Title = Name() + " (" + StrLeft(FullName(), 10) + ") --  " + Date() +"   O: "+ WriteVal(O,1.2 )+ "   H: " + WriteVal(H,1.2) + "   L: " + WriteVal(L,1.2) + "     C: " + C + "         Fast = " + WriteVal(FBAvg,1.2)+ EncodeColor( colorPaleTurquoise )+ wi);

PS: It's okay, IMHO, to write. I do this frequently as required.

If (cond1) {do stuff}

Else if (cond2) {do other stuff}

Else {do third stuff}

--

Terry

-----Original Message-----
From: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf Of dmarval
Sent: Thursday, November 17, 2005 13:26
To: amibroker@xxxxxxxxxxxxxxx
Subject: [amibroker] Problem with for,if, else statement

Can someone please help me figure out what's wrong with

my "for,if,else...." code. I am new at attempting to code. My

problem is that my formula only calculates the value difference for

the last trading day, and if I click on any other previous trading

days, my title value still states value of the last trading day.

What I would like this code to do, is calculate the different values

for each individual current and previous trading days and to have

the values reflected in my title.

FastPeriods =5;

SlowPeriods = 20;

FBAvg = Sum( Volume * Close, FastPeriods ) / Sum( Volume,

FastPeriods);

SBAvg = Sum( Volume * Close,  SlowPeriods ) / Sum( Volume,

SlowPeriods);

Plot(FBAvg,"Fast ",colorAqua,styleLine);

Plot(SBAvg,"Slow ",colorDarkBlue,styleLine+styleThick);

//Calculations//

CalcO = O - FBAvg;

CalcC = C - FBAvg;

for( i = 0; i < BarCount; i++ )

{

   if (SBAvg[i]>FBavg[i] AND CalcO[i]<= 0.11 OR CalcO[i]>= -0.11)

   {

      wi = "    DiffO:    " + WriteVal(O[i] - FBAvg[i],1.2);

   }

   else if(SBAvg[i]>FBAvg[i] AND CalcC[i]<= 0.11 OR CalcC[i]>= -0.11)

   {

      wi = "    DiffC:   " + WriteVal(CalcC[i],1.2);

   }

   else

  {

      wi = "------";

  }

}

Title = Name() + " (" + StrLeft(FullName(), 10) +

      ") --  " + Date() +"   O: "+  WriteVal(O,1.2 )+ "   H: " +

WriteVal(H,1.2) + "   L: " + WriteVal(L,1.2) + "     C: " + C

+ "         Fast = " + WriteVal(FBAvg,1.2)+ EncodeColor(

colorPaleTurquoise )+

  wi;

------------------------ Yahoo! Groups Sponsor --------------------~-->

Try Online Currency Trading with GFT. Free 50K Demo. Trade

24 Hours. Commission-Free.

http://us.click.yahoo.com/RvFikB/9M2KAA/U1CZAA/GHeqlB/TM

--------------------------------------------------------------------~->

Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to

SUPPORT {at} amibroker.com

For other support material please check also:

http://www.amibroker.com/support.html

Yahoo! Groups Links

<*> To visit your group on the web, go to:

    http://groups.yahoo.com/group/amibroker/

<*> To unsubscribe from this group, send an email to:

    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:

    http://docs.yahoo.com/info/terms/



Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to
SUPPORT {at} amibroker.com

For other support material please check also:
http://www.amibroker.com/support.html





YAHOO! GROUPS LINKS