PureBytes Links
Trading Reference Links
|
if (OpenPos.GetPercentProfit()>15)
--- In amibroker@xxxxxxxxxxxxxxx, "gp_sydney" <gp.investment@xxx>
wrote:
>
> On which line? And what is the error message?
>
> Regards,
> GP
>
>
> --- In amibroker@xxxxxxxxxxxxxxx, "tipequity" <l3456@> wrote:
> >
> > Thanks GP for pointing that out. I been fooling around with the
code
> > all weekend long and inadvertantly posted the wrong one. The
problem
> > is that it produces error on that line.
> >
> >
> > --- In amibroker@xxxxxxxxxxxxxxx, "gp_sydney" <gp.investment@>
> > wrote:
> > >
> > > I've only had a quick glance through your code, but it looks
like
> > > you're testing for the profit being greater than 15%, not the
loss.
> > >
> > > I think the sell signal generated by ApplyStop should include
reason
> > > code 1 for maximum loss. Try checking that.
> > >
> > > Regards,
> > > GP
> > >
> > >
> > > --- In amibroker@xxxxxxxxxxxxxxx, "tipequity" <l3456@> wrote:
> > > >
> > > > How can test to see of max loss percent has been met (using
CBI)?
> > > > Below is my feeble attempt.
> > > > Thanks in advance
> > > >
> > >
> >
> /*==================================================================
> > ==
> > > > ==========
> > > > Global Settings
> > > >
> >
======================================================================
> > > > ========*/
> > > > SetBarsRequired(1000000,0); /* this ensures that the charts
> > include
> > > > all bars AND NOT just those on screen */
> > > > SetFormulaName("System Four with Stochastics-6"); /* name it
for
> > > > backtest report identification */
> > > > SetOption("InitialEquity", 100000); /* starting capital */
> > > > SetOption("CommissionAmount",8); /* commissions AND cost */
> > > > SetOption("CommissionMode", 2); /* set commissions AND costs
as $
> > per
> > > > trade */
> > > > SetTradeDelays( 1, 1, 1, 1);
> > > > SetOption("PriceBoundChecking", 1); /* trade only within the
> > chart
> > > > bar's price range */
> > > > SetOption("UsePrevBarEquityForPosSizing", 1); /* set the use
of
> > last
> > > > bars equity for trade size */
> > > > /* SetOption("MinPosValue", ); */
> > > > SetOption("AllowPositionShrinking", True);
> > > > SetOption("MinShares", 100);
> > > > SetOption("AccountMargin", 100);
> > > > SetOption("HoldMinBars",2 ); /* Set Minimun Holding Days to 2
> > Days*/
> > > > RoundLotSize = 1 ;
> > > > PositionSize = - 10; /* trade size will be 10% of available
> > equity */
> > > > MaxLossPercentStop = 15 ;
> > > > ApplyStop(0, 1, MaxLossPercentStop, 0, False, 0);
> > > >
> > > > SetBacktestMode( backtestRegularRaw );
> > > >
> > >
> >
> /*==================================================================
> > ==
> > > > ==========
> > > >
> > > >
> >
======================================================================
> > > > ========*/
> > > >
> > > > TradeDate = DateTime();
> > > >
> > > > SetCustomBacktestProc("");
> > > >
> > > > MaxBuys = 3; // Set no more than 4 buys per day
> > > >
> > > > if( Status("action") == actionPortfolio )
> > > > {
> > > > bo = GetBacktesterObject();
> > > > bo.PreProcess();
> > > >
> > > > Symbol = " ";
> > > > TransType = "";
> > > > CommissionAmount = 8;
> > > > SEC_Fee = 0;
> > > > Rank = 0;
> > > > TradeSize = 0;
> > > > Shares = 0;
> > > > TransAmount = 0;
> > > > Reason = 0;
> > > > Price = 0;
> > > > CashBal = bo.InitialEquity;
> > > > EquityBal = bo.Equity;
> > > > ProfitPercent = 0;
> > > >
> > > > for( i = 0; i < BarCount; i++ )
> > > > {
> > > > cntBuys = 0;
> > > > // look at new signals and exclude signals if they exceed
> > maxBuys
> > > > for( sig = bo.GetFirstSignal(i); sig; sig =
> > > > bo.GetNextSignal(i) )
> > > > {
> > > > EquityBal = bo.Equity;
> > > > // check for Sell signal
> > > > if (sig.IsExit() AND sig.Type == 2 )
> > > > {
> > > > // scan through open positions
> > > > OpenPos = bo.FindOpenPos(
> > > > sig.Symbol );
> > > > // check for entry signal and
long
> > > > signal
> > > >
> > > > if (OpenPos.GetPercentProfit()
>15)
> > > > {
> > > > Symbol = sig.Symbol;
> > > > TransType = "Sold";
> > > > Shares = OpenPos.Shares;
> > > > Price = sig.Price;
> > > > SEC_Fee = round
((OpenPos.Shares *
> > > > Price)*(1530/1000000))/100;
> > > > CommissionAmount = 8 +
SEC_Fee;
> > > > TransAmount = (OpenPos.Shares
*
> > > > Price)- CommissionAmount;
> > > > CashBal = CashBal +
TransAmount;
> > > >
> > > > ProfitPercent =
> > > > OpenPos.GetPercentProfit();
> > > > Reason = "MaxLossPercentStop";
> > > > Rank = "";
> > > >
> > > > bo.RawTextOutput(
> > > >
> > > > Symbol +
> > > >
> > > > "\t" + cntBuys +
> > > >
> > > > "\t" + TransType +
> > > >
> > > > "\t" + DateTimeToStr(TradeDate[ i ]) +
> > > >
> > > > "\t" + Price +
> > > >
> > > > "\t" + "Shares " + Shares +
> > > >
> > > > "\t" + "Commission " + CommissionAmount +
> > > >
> > > > "\t" + "Amount " + TransAmount +
> > > >
> > > > "\t" + "PosSize " + TradeSize +
> > > >
> > > > "\t" + "CashBal " + CashBal +
> > > >
> > > > "\t" + "Cash " + bo.Cash +
> > > >
> > > > "\t" + "EquityBal " + EquityBal +
> > > >
> > > > "\t" + "Reason " + Reason +
> > > >
> > > > "\t" + "Profit% " + ProfitPercent +
> > > >
> > > > "\t" + Rank
> > > >
> > > > );
> > > > }
> > > > else if( openpos AND
openpos.IsLong )
> > > > {
> > > > Symbol = sig.Symbol;
> > > > TransType = "Sold";
> > > > Shares = OpenPos.Shares;
> > > > Price = sig.Price;
> > > > SEC_Fee = round
((OpenPos.Shares *
> > > > Price)*(1530/1000000))/100;
> > > > CommissionAmount = 8 +
SEC_Fee;
> > > > TransAmount = (OpenPos.Shares
*
> > > > Price)- CommissionAmount;
> > > > CashBal = CashBal +
TransAmount;
> > > >
> > > > Reason = sig.Reason;
> > > > Rank = "";
> > > >
> > > > bo.RawTextOutput(
> > > >
> > > > Symbol +
> > > >
> > > > "\t" + cntBuys +
> > > >
> > > > "\t" + TransType +
> > > >
> > > > "\t" + DateTimeToStr(TradeDate[ i ]) +
> > > >
> > > > "\t" + Price +
> > > >
> > > > "\t" + "Shares " + Shares +
> > > >
> > > > "\t" + "Commission " + CommissionAmount +
> > > >
> > > > "\t" + "Amount " + TransAmount +
> > > >
> > > > "\t" + "PosSize " + TradeSize +
> > > >
> > > > "\t" + "CashBal " + CashBal +
> > > >
> > > > "\t" + "Cash " + bo.Cash +
> > > >
> > > > "\t" + "EquityBal " + EquityBal +
> > > >
> > > > "\t" + "Reason " + Reason +
> > > >
> > > > "\t" + "Profit% " + ProfitPercent +
> > > >
> > > > "\t" + Rank
> > > >
> > > > );
> > > > }
> > > > }
> > > > // check for entry signal
> > > > }
> > > > bContinue = True;
> > > > for( sig = bo.GetFirstSignal(i); sig; sig =
> > > > bo.GetNextSignal(i) )
> > > > {
> > > > if( sig.IsEntry() )
> > > > {
> > > > Symbol = sig.Symbol;
> > > > TradeSize = (bo.Equity / -
> > > > sig.PosSize);
> > > > Shares = round
(TradeSize/sig.Price);
> > > > Price = sig.Price;
> > > > if( cntBuys > MaxBuys )
> > > > {
> > > > sig.PosSize = 0;
> > > > TransType
= "Rejected";
> > > > Reason = "Exceed Max
No.
> > > > Trades per Day";
> > > > bo.RawTextOutput(
> > > >
> > > > Symbol +
> > > >
> > > > "\t" + cntBuys +
> > > >
> > > > "\t" + TransType +
> > > >
> > > > "\t" + DateTimeToStr(TradeDate[ i ]) +
> > > >
> > > > "\t" + Price +
> > > >
> > > > "\t" + "Shares " + Shares +
> > > >
> > > > "\t" + "Commission " + CommissionAmount +
> > > >
> > > > "\t" + "Amount " + TransAmount +
> > > >
> > > > "\t" + "PosSize " + TradeSize +
> > > >
> > > > "\t" + "CashBal " + CashBal +
> > > >
> > > > "\t" + "Cash " + bo.Cash +
> > > >
> > > > "\t" + "EquityBal " + EquityBal +
> > > >
> > > > "\t" + "Reason " + Reason +
> > > >
> > > > "\t" + "Profit% " +
> > > >
> > > > "\t" + Rank
> > > >
> > > > );
> > > > }
> > > > else
> > > > {
> > > > TransType = "Bought";
> > > > cntBuys = cntBuys + 1;
> > > > TransAmount = -
(Shares *
> > > > Price)-CommissionAmount;
> > > > CashBal = CashBal +
> > > > TransAmount;
> > > > Reason = sig.Reason;
> > > > Rank = sig.PosScore;
> > > >
> > > > bo.RawTextOutput(
> > > >
> > > > Symbol +
> > > >
> > > > "\t" + cntBuys +
> > > >
> > > > "\t" + TransType +
> > > >
> > > > "\t" + DateTimeToStr(TradeDate[ i ]) +
> > > >
> > > > "\t" + Price +
> > > >
> > > > "\t" + "Shares " + Shares +
> > > >
> > > > "\t" + "Commission " + CommissionAmount +
> > > >
> > > > "\t" + "Amount " + TransAmount +
> > > >
> > > > "\t" + "PosSize " + TradeSize +
> > > >
> > > > "\t" + "CashBal " + CashBal +
> > > >
> > > > "\t" + "Cash " + bo.Cash +
> > > >
> > > > "\t" + "EquityBal " + EquityBal +
> > > >
> > > > "\t" + "Reason " + Reason +
> > > >
> > > > "\t" + "Profit% " +
> > > >
> > > > "\t" + Rank
> > > >
> > > > );
> > > > }
> > > > }
> > > > }
> > > > bo.ProcessTradeSignals( i );
> > > > }
> > > > bo.PostProcess();
> > > > }
> > > >
> > > >
> > > > //fast = Optimize("fast", 12, 5, 20, 1 );
> > > > //slow = Optimize("slow", 26, 10, 25, 1 );
> > > > Buy=Cross(MACD(12,26),Signal(12,26));
> > > > Sell=Cross(Signal(12,26),MACD(12,26));
> > > >
> > >
> >
>
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 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/
|