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

[amibroker] Re: Stop Loss based on equity



PureBytes Links

Trading Reference Links

I have studied all the docs regarding custom backtester interface. I
wrote the code but it does not do what I want. Could anyone please
look at it what the problem is. Thank you, Zozu

///////Stop Loss based on portfolio equity/////////////
Buy=Cross(RSI(),30);
Sell=Cross(70,RSI());
StopLossEq=Optimize( "StopLossEq", 10, 1, 7, 0.5 );
SetCustomBacktestProc("");
if (Status("action") == actionPortfolio)
{
bo = GetBacktesterObject(); // Get backtester object
bo.PreProcess(); // Do pre-processing
MaxEq=bo.Equity;
for (i = 0; i < BarCount; i++) // Loop through all bars
{
if (i>0 && bo.Equity>MaxEq) MaxEq=bo.Equity;
for (sig = bo.GetFirstSignal(i); sig; sig = bo.GetNextSignal
(i))
{ // Loop through all signals at this bar
if (sig.IsEntry()) // Process entries
{
bo.EnterTrade(i, sig.Symbol, True,
sig.Price,sig.posSize); }
else
{
if (sig.IsExit()) bo.ExitTrade(i, sig.Symbol,
sig.Price); // Process exits

}
} // End of for loop over signals at this bar
bo.HandleStops(i);// Handle programmed stops at this bar
for (trade = bo.GetFirstOpenPos(); trade; trade =
bo.GetNextOpenPos())
{ // Loop through all open positions
if (bo.Equity<(1-StopLossEq/100)*MaxEq) bo.ExitTrade(i,
trade.Symbol, trade.GetPrice(i+1,"O"),5);//ExitType=ruin
} // End of for loop over trades at this bar
bo.UpdateStats(i, 1); // Update MAE/MFE stats for bar
bo.UpdateStats(i, 2); // Update stats at bar's end
} // End of for loop over bars
bo.PostProcess(); // Do post-processing
}

--- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@xxx> 
wrote:
>
> Hello,
> 
> No, it does not do that automatically,
> but it will exit automatically your position (liquidate) if it 
loses more
> than user-defined amount or more than 99.9% (automatic ruin stop).
> One can also program partial exit via sigScaleOut if position in 
more than
> one contract.
> 
> Best regards,
> Tomasz Janeczko
> amibroker.com
> ----- Original Message ----- 
> From: "loveyourenemynow" <loveyourenemynow@xxx>
> To: <amibroker@xxxxxxxxxxxxxxx>
> Sent: Wednesday, November 26, 2008 11:17 AM
> Subject: [amibroker] Re: Stop Loss based on equity
> 
> 
> Do you know if AB hadles automatically margin violations due to 
losses
> and rescale accordingly?
> 
> Gne
> --- In amibroker@xxxxxxxxxxxxxxx, "zozuzoza" <zozuka@> wrote:
> >
> > I have studied all the docs regarding custom backtester 
interface. I
> > wrote the code but it does not do what I want. Could anyone please
> > look at it what the problem is. Thank you, Zozu
> >
> > ///////Stop Loss based on portfolio equity/////////////
> > StopLossEq=Optimize( "StopLossEq",  10, 1, 7, 0.5 );
> > SetCustomBacktestProc("");
> > if (Status("action") == actionPortfolio)
> > {
> >     bo = GetBacktesterObject(); //  Get backtester object
> >     bo.PreProcess(); //  Do pre-processing
> > MaxEq=bo.Equity;
> > for (i = 0; i < BarCount; i++) //  Loop through all bars
> >     {
> > if (i>0 && bo.Equity>MaxEq) MaxEq=bo.Equity;
> >         for (sig = bo.GetFirstSignal(i); sig; sig = 
bo.GetNextSignal
> > (i))
> >         { //  Loop through all signals at this bar
> >             if (sig.IsEntry()) //  Process entries
> > {
> >                 bo.EnterTrade(i, sig.Symbol, True,
> > sig.Price,sig.posSize); }
> > else
> >             {
> >                 if (sig.IsExit()) bo.ExitTrade(i, sig.Symbol,
> > sig.Price); //  Process exits
> >
> >             }
> >         } //  End of for loop over signals at this bar
> >         bo.HandleStops(i);//  Handle programmed stops at this bar
> >         for (trade = bo.GetFirstOpenPos(); trade; trade =
> > bo.GetNextOpenPos())
> >         { //  Loop through all open positions
> >             if (bo.Equity<(1-StopLossEq/100)*MaxEq) bo.ExitTrade
(i,
> > trade.Symbol, trade.GetPrice(i+1,"O"),5);//ExitType=ruin
> >         } //  End of for loop over trades at this bar
> >         bo.UpdateStats(i, 1); //  Update MAE/MFE stats for bar
> >         bo.UpdateStats(i, 2); //  Update stats at bar's end
> >     } //  End of for loop over bars
> >     bo.PostProcess(); //  Do post-processing
> > }
> >
> >
> > --- In amibroker@xxxxxxxxxxxxxxx, "Mike" <sfclimbers@> wrote:
> > >
> > > Refer to "AmiBroker Custom Backtester Interface.pdf" in the 
Files
> > > section of this group, posted by gp_sydney:
> > >
> > > http://f1.grp.yahoofs.com/v1/4MUQScTOe79GNNV-
> > >
> > 
ZkLEVgZrQsvpi7UryW1IV34jAcr5MrdKVujCnYWixQTKH2jURoJKyDJobZlG0ZMwEvdBvx
> > > nggD5xMLok/AmiBroker%20Custom%20Backtester%20Interface.pdf
> > >
> > > You can monitor portfolio equity on a bar by bar basis in custom
> > > backtester code. If equity falls below your threshold, iterate
> > through
> > > the list of open positions and close them out using the low 
level
> > > custom backtester API:
> > >
> > > http://www.amibroker.com/guide/a_custombacktest.html
> > >
> > > Mike
> > >
> > > --- In amibroker@xxxxxxxxxxxxxxx, "zozuzoza" <zozuka@> wrote:
> > > >
> > > > Thanks, the example works on single stock equity. I am looking
> > for
> > > > portfolio equity.
> > > >
> > > > To correct my question
> > > > How could I code a stop loss based on portfolio equity? If the
> > > > portfolio equity drops 5%, close the positions.
> > > >
> > > > Has anybody come accross this problem?
> > > >
> > > > Thank you.
> > > >
> > > > Best regards,
> > > > zozu
> > > >
> > > > --- In amibroker@xxxxxxxxxxxxxxx, reinsley <reinsley@> wrote:
> > > > >
> > > > > Hi,
> > > > >
> > > > > Howard B gave an exemple in this topic :
> > > > >
> > > > > http://finance.groups.yahoo.com/group/amibroker/
message/130567
> > > > >
> > > > > Best regards
> > > > >
> > > > > zozuzoza a écrit :
> > > > > >
> > > > > > How could I code a stop loss based on equity? If the 
equity
> > > drops
> > > > 5%,
> > > > > > close the positions.
> > > > > >
> > > > > > Thanks a lot,
> > > > > > zozu
> > > > > >
> > > > >
> > > >
> > >
> >
> 
> 
> 
> ------------------------------------
> 
> **** IMPORTANT ****
> This group is for the discussion between users only.
> This is *NOT* technical support channel.
> 
> *********************
> TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail 
directly to
> SUPPORT {at} amibroker.com
> *********************
> 
> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> http://www.amibroker.com/devlog/
> 
> For other support material please check also:
> http://www.amibroker.com/support.html
> 
> *********************************
> Yahoo! Groups Links
>



------------------------------------

**** IMPORTANT ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

*********************
TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com
*********************

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

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/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx

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