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

Re: [amibroker] Re: ApplyStop Question



PureBytes Links

Trading Reference Links

ami_trader,
 
not sure what the problem is you have.   I do not have futures data so I can not check your problem exactly but this code exits at the levels you give it. But you could also use Applystop for this to keep your program more simple. I gave this code to illustrate how you can write your own stop procedure,
 
good luck,
 
Ed
 
----- Original Message -----
From: ami_trader
Sent: Saturday, April 09, 2005 8:35 PM
Subject: [amibroker] Re: ApplyStop Question


Thank you so much Ed.
I'll look at your script.

There is errors for my tick/dollars count.

It is very complicated in AB a simply strategy that buy and sell at
specific price instead O H L C.

Thank you.

---
Giuseppe




--- In amibroker@xxxxxxxxxxxxxxx, "ed nl" <ed2000nl@x...> wrote:
> ami_trader,
>
> this is an example of how I use loopings instead of Applystop
(example is for long trades only). This is for your specific
problem.  Note you have to change the  stopProfitLevel and
stopLossLevel.
>
> Change:
>
> // set profit level at 2%
> stopProfitLevel = BuyPrice + BuyPrice * (2 / 100);
>
> // set stop level at 5%
> stopLossLevel = BuyPrice - BuyPrice * (5 / 100);
>
> to
>
> // profit at 6 points
> stopProfitLevel = BuyPrice + 6;
>
> // stop loss 10 points
> stopLossLevel = BuyPrice - 10;
>
> also adjust:

> BuyPrice = Ref(H,-1) - 0.001;
>
> to
>
> BuyPrice = Ref(H,-1) - 10;
>
>
> rgds, Ed
>
>
>
>
> procedure sell_proc
(Buy,BuyPrice,Open,High,Low,Close,stopProfitLevel,stopLossLevel) {
>
> global Sell;
> global SellPrice;
> global BuyAdjusted;
> global stopProfitLevelAdjusted;
> global stopLossLevelAdjusted;
>
> // initialise arrays
> SellPrice = 0;
> Sell = 0;
> stopProfitLevelAdjusted = 0;
> stopLossLevelAdjusted = 0;
> BuyAdjusted = 0;
>
>
> for (i = 1; i < BarCount; i++) {
>
>    if (Buy[ i ] == 1) {   
>    
>       BuyAdjusted[ i ] = 1;
>       stopProfitLevelAdjusted[ i ] = stopProfitLevel[ i ];
>       stopLossLevelAdjusted[ i ] = stopLossLevel[ i ];
>       
>       // find a sell position + sellprice
>       for (j = i; j < BarCount; j++) {
>          
>          stopProfitLevelAdjusted[ j ] = stopProfitLevel[ i ];
>          stopLossLevelAdjusted[ j ] = stopLossLevel[ i ];
>          
>          // test if stop loss is hit
>          if((Low[ j ] <= stopLossLevelAdjusted[ j ]) AND (Open[
j ] >= stopLossLevelAdjusted[ j ])) {
>             
>             Sell[ j ] = 1;
>             SellPrice[ j ] = stopLossLevelAdjusted[ j ];
>                
>             i = j;
>                
>             j = BarCount;
>                
>          // stop loss exceeded at the open
>          } else if (Open[ j ] < stopLossLevelAdjusted[ j ]) {
>             
>             Sell[ j ] = 1;
>             SellPrice[ j ] = Open[ j ];
>                
>             i = j;
>                
>             j = BarCount;                              
>             
>          // test if profit stop is hit
>          } else if (High[ j ] >= stopProfitLevelAdjusted[ j ] AND
Open[ j ] <= stopProfitLevelAdjusted[ j ]) {
>             
>             Sell[ j ] = 1;
>             SellPrice[ j ] = stopProfitLevelAdjusted[ j ];
>                
>             i = j;
>                
>             j = BarCount;
>                
>          // stop profit exceeded at open
>          } else if (Open[ j ] > stopProfitLevelAdjusted[ j ]) {
>             
>             Sell[ j ] = 1;
>             SellPrice[ j ] = Open[ j ];
>             
>             i = j;
>                
>             j = BarCount;             
>                                     
>                
>          } else if (j == BarCount - 1) {
>          
>             i = BarCount;
>          
>          }               
>             
>       }
>       
>    }
>                
> }
>
>
> } // end procedure
>
>
>
>
> SetChartOptions(0, chartShowDates);
> SetBarsRequired(10000,10000);
>
> Cond1 = Ref(H,-1) > Ref(H,-2) && Ref(H,-2) > Ref(H,-3);
> Cond2 = O < Ref(H,-1);
>
> BuyPrice = Ref(H,-1) - 0.001;
> Buy=Cond1 && Cond2 && L <= BuyPrice && H >= BuyPrice;
>
> // set profit level at 2%
> stopProfitLevel = BuyPrice + BuyPrice * (2 / 100);
>
> // set stop level at 5%
> stopLossLevel = BuyPrice - BuyPrice * (5 / 100);
>
> sell_proc
(Buy,BuyPrice,Open,High,Low,Close,stopProfitLevel,stopLossLevel);
> Buy = BuyAdjusted;
>
> // remove zeros
> stopProfitLevelAdjusted = IIf(stopProfitLevelAdjusted == 0, Null,
stopProfitLevelAdjusted);
> stopLossLevelAdjusted = IIf(stopLossLevelAdjusted == 0, Null,
stopLossLevelAdjusted);
>
> Plot(C,"C",1,64);
> Plot(stopProfitLevelAdjusted,"",colorBrightGreen,1);
> Plot(stopLossLevelAdjusted,"",colorRed,1);
> PlotShapes(IIf(Buy,shapeUpArrow,0),colorWhite, layer = 0,
yposition = BuyPrice, offset = 0 );
> PlotShapes(IIf(Sell,shapeDownArrow,0),colorYellow, layer = 0,
yposition = SellPrice, offset = 0 );
>
> Title=Name()+ ", O: "+WriteVal(O)+ ", H: "+WriteVal(H)+ ",
L: "+WriteVal(L)+ ", C: "+WriteVal(C);
>
> Filter = 1;
> AddColumn(Buy,"Buy");
> AddColumn(Sell,"Sell");





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





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