PureBytes Links
Trading Reference Links
|
Hi Ed,
Here is an example of the double initialization I
think Gary refers to:
BuyAdjusted = <FONT
color=#000000>Buy; BuyAdjusted = <FONT
color=#ff00ff>0<FONT color=#000000
size=2>;
<FONT color=#000000
size=2>
<FONT
face=Arial>-john
<BLOCKQUOTE dir=ltr
>
----- Original Message -----
<DIV
>From:
ed nl
To: <A title=amibroker@xxxxxxxxxxxxxxx
href="">amibroker@xxxxxxxxxxxxxxx
Sent: Sunday, August 08, 2004 9:42
AM
Subject: Re: [amibroker] while/for loop
compiler error 3 question
hi
Gary,
I'm not sure what you mean that I
initialize these arrays twice. Please show me where. The reason I initialize
the arrays is to make sure the arrays exist and have the same length as the
Buy array and are filled with only zeros.
I add the rest of the program which is a
LONG only test program for a N-Bar stop procedure included in a system
(instead of the Applystop).
Could be I initialised them twice so I
like to see how to avoid that, but this way I know for sure the arrays exist
and that they are empty.
regards, Ed
<FONT
color=#800000>
<FONT
color=#800000>
<FONT
color=#800000>
<FONT
color=#800000>procedure ttt(<FONT
color=#000000>Buy,<FONT
color=#000000>BuyPrice,<FONT
color=#000000>Open,<FONT
color=#000000>High,<FONT
color=#000000>Low,<FONT
color=#000000>Close<FONT face="Courier New"
color=#000000 size=2>,nbar) { <FONT face="Courier New"
color=#008000 size=2>/* Jul 2004 */<FONT
face="Courier New"> <FONT
color=#800000>global <FONT
color=#000000>Sell<FONT
size=2>; <FONT
color=#800000>global <FONT
color=#000000>SellPrice<FONT
face="Courier New">; <FONT
color=#800000>global<FONT
size=2> BuyAdjusted; <FONT
color=#800000>global<FONT
size=2> BuyPriceAdjusted; <FONT
color=#008000>// initialise arrays <FONT
color=#000000><FONT
color=#000000>SellPrice = <FONT
color=#000000>BuyPrice; <FONT
color=#000000>SellPrice = <FONT
color=#ff00ff>0<FONT
size=2>; <FONT
color=#000000>Sell = <FONT
color=#000000>Buy; <FONT
color=#000000>Sell = <FONT
color=#ff00ff>0<FONT
size=2>; BuyAdjusted = <FONT
color=#000000>Buy; BuyAdjusted =
0<FONT
face="Courier New">; BuyPriceAdjusted =
BuyPrice;
BuyPriceAdjusted = 0<FONT
face="Courier New">; <FONT
color=#800000>for (i = <FONT
color=#ff00ff>0; i < <FONT
color=#000000>BarCount<FONT
face="Courier New">; i++) {
// <FONT
color=#000000>
<FONT
color=#800000>if (<FONT
color=#000000>Buy[ i ] == <FONT
color=#ff00ff>1<FONT
size=2>) {
// buy at
open <FONT face="Courier New"
size=2> BuyAdjusted[ i ] =
1<FONT
face="Courier New">;
BuyPriceAdjusted[ i ] = <FONT
color=#000000>Open<FONT
size=2>[ i ];
// find a
sell position + sellprice <FONT
face="Courier New"
size=2> <FONT
face="Courier New">for<FONT
color=#000000> (j = i; j < <FONT
color=#000000>BarCount<FONT
face="Courier New">; j++) {
<FONT
color=#008000>// nbar stop exit at the open <FONT
color=#000000><FONT face="Courier New"
size=2> <FONT
face="Courier New" color=#800000 size=2>if<FONT
face="Courier New"> ((j - i) == nbar) {
<FONT
color=#000000>Sell[ j ] = <FONT
color=#ff00ff>5<FONT
size=2>;
<FONT
color=#000000>SellPrice[ j ] = <FONT
color=#000000>Close<FONT
size=2>[ j ];
<FONT
color=#008000>// enter i-loop starting from the last sell
<FONT face="Courier New"
size=2> i
= j;
<FONT
face="Courier New" color=#008000 size=2>// escape from loop <FONT
color=#000000><FONT face="Courier New"
size=2> j
= <FONT face="Courier New" color=#000000
size=2>BarCount<FONT
color=#000000>;
}
}
}
} } // end procedure
<FONT
face="Courier New" color=#008000 size=2>// initial settings for portfolio
trading (also see Settings window) <FONT
face="Courier New"><FONT
color=#0000ff>SetBarsRequired(<FONT
color=#ff00ff>10000,<FONT
color=#ff00ff>10000<FONT
size=2>); <FONT
color=#0000ff>SetOption(<FONT
color=#ff00ff>"MaxOpenPositions", <FONT
color=#ff00ff>250<FONT
size=2> ); <FONT
color=#000000>PositionSize = -<FONT
color=#ff00ff>15<FONT
size=2>; <FONT
color=#0000ff>SetTradeDelays(<FONT
color=#ff00ff>1,<FONT
color=#ff00ff>1,<FONT
color=#ff00ff>1,<FONT
color=#ff00ff>1<FONT
size=2>); <FONT
color=#0000ff>SetOption(<FONT
color=#ff00ff>"AllowSameBarExit",<FONT
color=#000000>True<FONT
size=2>); <FONT
color=#0000ff>SetOption(<FONT
color=#ff00ff>"AllowPositionShrinking",<FONT
color=#000000>True<FONT
size=2> ); <FONT
color=#0000ff>SetOption(<FONT
color=#ff00ff>"ActivateStopsImmediately"<FONT
color=#000000>,<FONT
color=#000000>True<FONT
size=2> ); //
initial settings of the variables <FONT
color=#000000>nb = <FONT
face="Courier New" color=#ff00ff size=2>1<FONT
size=2>; tt = NumDownBars = <FONT
color=#0000ff>BarsSince( <FONT
color=#000000>C >= <FONT
color=#0000ff>Ref(<FONT
color=#000000>C,-<FONT
color=#ff00ff>1<FONT
size=2>) ); <FONT
color=#000000>Buy = tt >= <FONT
color=#ff00ff>3<FONT
size=2>; // build in
the trade delay <FONT
face="Courier New">Buy<FONT
color=#000000> = Ref<FONT
color=#000000>(Buy<FONT
color=#000000>,-1<FONT
face="Courier New">); <FONT
color=#000000>BuyPrice = <FONT
color=#000000>Open<FONT
size=2>; // calculate
sell positions <FONT
face="Courier New" size=2>ttt(<FONT
size=2>Buy,<FONT
color=#000000>BuyPrice,<FONT
color=#000000>Open,<FONT
color=#000000>High,<FONT
color=#000000>Low,<FONT
color=#000000>Close<FONT
size=2>,nb); <FONT
color=#000000>Buy<FONT
size=2> = BuyAdjusted; <FONT
color=#000000>BuyPrice<FONT
face="Courier New"> = BuyPriceAdjusted;
// move back the
arrays<FONT
color=#000000> Buy<FONT
color=#000000> = Ref<FONT
color=#000000>(Buy<FONT
color=#000000>,1<FONT
face="Courier New">); <FONT
color=#000000>Sell = <FONT
color=#0000ff>Ref(<FONT
color=#000000>Sell,<FONT
color=#ff00ff>1<FONT
size=2>); <FONT
color=#0000ff>Plot(<FONT
color=#000000>C,<FONT
color=#ff00ff>"C",<FONT
color=#ff00ff>1,<FONT
color=#ff00ff>64<FONT
size=2>); <FONT
color=#0000ff>PlotShapes(<FONT
color=#000000>shapeUpArrow*<FONT
color=#000000>Buy,<FONT
color=#000000>colorWhite, layer =
0, yposition =
BuyPrice, offset
= 0<FONT
face="Courier New"> ); <FONT
color=#0000ff>PlotShapes(<FONT
color=#000000>shapeDownArrow*<FONT
color=#000000>Sell,<FONT
color=#000000>colorYellow, layer =
0, yposition =
SellPrice, offset
= 0<FONT
face="Courier New"> ); <FONT
color=#000000>Title=<FONT
color=#0000ff>Name()+ ",
O: "+<FONT
color=#0000ff>WriteVal(<FONT
color=#000000>O)+ <FONT
color=#ff00ff>", H: "+<FONT
color=#0000ff>WriteVal(<FONT
color=#000000>H)+ <FONT
color=#ff00ff>", L: "+<FONT
color=#0000ff>WriteVal(<FONT
color=#000000>L)+ <FONT
color=#ff00ff>", C: "+<FONT
color=#0000ff>WriteVal(<FONT
color=#000000>C<FONT
size=2>); <FONT
color=#000000>PositionScore = tt *
(50-<FONT
color=#0000ff>StochK(<FONT
color=#ff00ff>8<FONT
size=2>)); <FONT
color=#000000>Filter = <FONT
color=#ff00ff>1<FONT
size=2>; <FONT
color=#0000ff>AddColumn(<FONT
color=#000000>Buy,<FONT
color=#ff00ff>"Buy"<FONT
size=2>); <FONT
color=#0000ff>AddColumn(<FONT
color=#000000>Sell,<FONT
color=#ff00ff>"Sell"<FONT
size=2>); <FONT
color=#0000ff>AddColumn(<FONT
color=#000000>PositionScore,<FONT
color=#ff00ff>"PositionScore"<FONT
size=2>);
<BLOCKQUOTE
>
----- Original Message -----
<DIV
>From:
<A title=serkhoshian777@xxxxxxxxx
href="">Gary A. Serkhoshian
To: <A title=amibroker@xxxxxxxxxxxxxxx
href="">amibroker@xxxxxxxxxxxxxxx
Sent: Sunday, August 08, 2004 4:31
PM
Subject: Re: [amibroker] while/for loop
compiler error 3 question
Ed,
I enjoyed reading through your code, but was confused as to why you
initialized the following arrays twice. Can't they all be set to zero
from the start?
Thanks,
Gary
// initialise arrays
SellPrice<FONT
color=#000000> = BuyPrice<FONT
color=#000000>; SellPrice<FONT
color=#000000> = 0<FONT
size=2>; <FONT
color=#000000>Sell = <FONT
color=#000000>Buy; <FONT
color=#000000>Sell = <FONT
color=#ff00ff>0<FONT
face="Courier New">; BuyAdjusted = <FONT
color=#000000>Buy; BuyAdjusted =
0<FONT
face="Courier New">; BuyPriceAdjusted =
BuyPrice;
BuyPriceAdjusted = 0<FONT
size=2>; ed nl
<ed2000nl@xxxxxxx> wrote:
<BLOCKQUOTE class=replbq
>
hi,
the error you get is because you use whole
arrays in the loop. So your exitcondition is probably defined as an array.
For instance if you define:
exitCondition = StochK(8) > 90;
then exitCondition is an array and in the
loop you have to specify the element using exitCondition[ i ]
For your second question I add an example.
You see that I have a j-loop within the
i-loop. To exit the j-loop is put j = BarCount. Before I
do that I change i to the value I want it to be. So the answer is
yes one can change i within the loop.
rgds, Ed
<FONT
color=#800000>procedure ttt(<FONT
color=#000000>Buy,<FONT
color=#000000>BuyPrice,<FONT
color=#000000>Open,<FONT
color=#000000>High,<FONT
color=#000000>Low,<FONT
color=#000000>Close<FONT face="Courier New"
color=#000000 size=2>,nbar) { <FONT face="Courier New"
color=#008000 size=2>/* Jul 2004 */<FONT
face="Courier New"> <FONT
color=#800000>global <FONT
color=#000000>Sell<FONT
face="Courier New">; <FONT
color=#800000>global <FONT
color=#000000>SellPrice<FONT
face="Courier New">; <FONT
color=#800000>global<FONT
face="Courier New"> BuyAdjusted;
global<FONT
face="Courier New"> BuyPriceAdjusted;
// initialise arrays
<FONT
face="Courier New"><FONT
color=#000000>SellPrice = <FONT
color=#000000>BuyPrice; <FONT
color=#000000>SellPrice = <FONT
color=#ff00ff>0<FONT
size=2>; <FONT
color=#000000>Sell = <FONT
color=#000000>Buy; <FONT
color=#000000>Sell = <FONT
color=#ff00ff>0<FONT
size=2>; BuyAdjusted = <FONT
color=#000000>Buy; BuyAdjusted =
0<FONT
face="Courier New">; BuyPriceAdjusted
= BuyPrice;
BuyPriceAdjusted = 0<FONT
face="Courier New">; <FONT
color=#800000>for (i = <FONT
color=#ff00ff>0; i < <FONT
color=#000000>BarCount<FONT
face="Courier New">; i++) {
//
<FONT
face="Courier
New" size=2> <FONT
face="Courier New">if<FONT
color=#000000> (Buy<FONT
color=#000000>[ i ] == <FONT
color=#ff00ff>1<FONT
size=2>) {
// buy
at open <FONT
face="Courier New" size=2> BuyAdjusted[
i ] = <FONT face="Courier New" color=#ff00ff
size=2>1;
BuyPriceAdjusted[ i ] =
Open<FONT
face="Courier New">[ i ];
// find
a sell position + sellprice <FONT
color=#000000><FONT face="Courier New"
size=2> <FONT
face="Courier New">for<FONT
color=#000000> (j = i; j < <FONT
color=#000000>BarCount<FONT
face="Courier New">; j++) {
<FONT
color=#008000>// nbar stop exit at the open <FONT
color=#000000><FONT face="Courier New"
size=2>
<FONT face="Courier New" color=#800000
size=2>if<FONT
color=#000000> ((j - i) == nbar) {
<FONT
color=#000000>Sell[ j ] = <FONT
color=#ff00ff>5<FONT
size=2>;
<FONT
color=#000000>SellPrice[ j ] =
Close<FONT
face="Courier New">[ j ];
<FONT
color=#008000>// enter i-loop starting from the last sell
<FONT face="Courier New"
size=2> i
= j;
<FONT
face="Courier New" color=#008000 size=2>// escape from loop <FONT
color=#000000><FONT face="Courier New"
size=2> j
= <FONT face="Courier New" color=#000000
size=2>BarCount<FONT
color=#000000>;
}
}
}
} } // end procedure
<BLOCKQUOTE
>
OK, this compiler/interpreter
behaviour is confusing me:here is a part of my code that is
generating compile Error 3, "for, while, if statement can only use
boolean or numeric variables" etc.
The strange part is that the for loop is ok but the while
generates this error as shown AND also if I comment the (exitCond ==
False) part and uncomment the (n < BarCount) part. (error goes
away if I change BarCount to 10, e.g., with (exitCond == False)
commented out).2nd Question has to do with being able to change
i in the middle of the for loop, as I do in the last statement. Is
this possible or will i continue from where it left
off????for (i = Length+1; i < BarCount;
i++){
exitCond =
False;
n =
i;
inTrade = False;
while ((exitCond == False))// AND (n <
BarCount))
{
n = n +
1;
}//while
i = n;}// forCheck
AmiBroker web page at:<A
href="">http://www.amibroker.com/Check
group FAQ at: <A
href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Do you Yahoo!?Express yourself with Y! Messenger! Free. <A
href="">Download
now. Check AmiBroker web page at:<A
href="">http://www.amibroker.com/Check
group FAQ at: <A
href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Check AmiBroker web page at:<A
href="">http://www.amibroker.com/Check
group FAQ at: <A
href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Check AmiBroker web page at:
http://www.amibroker.com/
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Yahoo! Groups Sponsor
ADVERTISEMENT
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 the Yahoo! Terms of Service.
|