PureBytes Links
Trading Reference Links
|
Thanks Tomasz
That fixed it. Another tip to store away.
Regards
Graham
>
> Hello,
>
> It is because you are using ExRem to filter out signals.
>
> ExRem() funciton must NOT be used together with "AllowSameBarExit".
> Remove it.
>
> Generally speaking you don't need to use ExRem at all, because
> the backtester handles signals even if there are redundant ones.
>
> Best regards,
> Tomasz Janeczko
> amibroker.com
> ----- Original Message -----
> From: "Graham Johnson" <grahamj@xxx>
> To: <amibroker@xxxxxxxxxxxxxxx>
> Sent: Sunday, February 10, 2008 5:15 AM
> Subject: [amibroker] Same Bar Buy & Sell
>
>
> > Hi
> >
> > All seemed to be going Ok with the code below until I found that
a
> > Sell on the same bar as the Buy is not being actioned and
therefore
> > the position remains open for ever. In the cases of same bar
extry &
> > exit Sell is assigned the value of 1, but it doesn't get
actioned..
> >
> > Other exits seem to be fine.
> >
> > Obviously, I have not got it right. Any suggestions, please.
> >
> > The following code has been simplified a little to remove clutter.
> >
> > Thanks
> >
> > Graham
> >
> >
> > //================== Inital Equity & Margin ==================
> > vCapital = 30000;
> >
> >
> > //================== Initial Trade Parameters ==================
> > SetOption("AccountMargin", 10);
> > // Margin%
> > SetOption("ActivateStopsImmediately", True); //
> > IntraDay Stops
> > SetOption("AllowPositionShrinking", False); //
> > Take partial trades if equity available
> > SetOption("AllowSameBarExit",True);
> > // Permit same bar exit for profit stops
> >
> > SetOption("CommissionMode", 0);
> > // 1=Percent trade size commission, 2= $ per trade
> > SetOption("FuturesMode",False);
> >
> > SetOption("InitialEquity", vCapital );
> >
> > SetOption("InterestRate",0);
> > // Set interest rate earned for free cash, zero to
> > evaluate system
> > SetOption("MaxOpenPositions", 6);
> > // Max no positions
> >
> > SetOption("MinPosValue",1);
> > // Min position value to make trade worthwhile
> > SetOption("MinShares", 1);
> > // Min No shares zero
> > SetOption("PriceBoundChecking", True );
> > // Price to stay in bar range
> > SetOption("UseCustomBacktestProc", True);
> > // Use Custom backtest for reporting
> > SetOption("UsePrevBarEquityForPosSizing", True ); // Use last
> > known bar of position sizing
> >
> >
> > SetTradeDelays(0,0,0,0);
> > // Intraday Entry & Exit signals, no forward
> > references
> >
> > vaValidEntry = Cross( Close, EMA( Close, 45 ) );
> >
> > //================== Limit Entry ==================
> > vaLimitEntry = Close + (0.8 * (High - Low));
> >
> > //================== Stop Exit ==================
> > vISATRPer = 30; //15;
> > vISMult = 6;
> > vaIStopVal = ATR(vISATRPer) * vISMult;
> >
> > //================== Target Exit ==================
> > vaTargetVal = Ref(H, -3);
> >
> > //================== Position Size ==================
> > vMaxPosn = 10000;
> > vMaxRisk = 2000;
> > vMaxTOPc = 3;
> > vaPosnSize = vMaxRisk / Ref(vaIStopVal, -1) * Ref(vaLimitEntry, -
1);
> > vaPosnSize = Min(vaPosnSize, vMaxPosn);
> > SetPositionSize(vaPosnSize, spsValue);
> >
> > //================== Trade ==================
> > Sell = 0;
> > Buy = Ref(vaValidEntry,-1) AND Low <= Ref(vaLimitEntry, -1);
> > BuyPrice = Min(Open, Ref(vaLimitEntry, -1));
> > Sell = 0;
> >
> > vaGapDown = GapDown();
> > vaGapUp = GapUp();
> > vaInitStop = Null;
> > vaSellStop = 0;
> > vaSellTarget = 0;
> > VEntryBar = 0;
> > vTempStop = 0;
> > vTempTarget = 0;
> > vTradeLength = 8;
> > vTrigger = 0;
> >
> > for(vCnt = 1; vCnt < BarCount; vCnt++)
> > {
> > if(vTempStop == 0
> > AND Buy[vCnt] == 1) // Entry Bar & 0 positions
> > open
> > {
> > // Position Opened
> > vTempStop = BuyPrice[vCnt] - vaIStopVal[vCnt - 1];
> > vTempTarget = High[vCnt - 3];
> > vEntryBar = vCnt;
> > }
> > else
> > {
> > Buy[vCnt] = 0; // Remove excess Buy signals
> > } // Not Entry Bar
> >
> > if(vTempStop == 0)
> > {
> > vaTargetVal[vCnt - 1] = Null;
> > }
> > else
> > {
> > if (vCnt - vEntryBar == vTradeLength + 1)
> > {
> > vTempStop = Max(vTempStop, BuyPrice
> > [vEntryBar]);
> > } // test # Bars Open
> >
> > if (vCnt > vEntryBar + 1) // eliminate Entry Bar
> > {
> > if (vaGapDown[vCnt - 1] == 1)
> > {
> > vTempStop = Max(vTempStop, Low[vCnt -
> > 1]);
> > } // GapDown
> >
> > if (vaGapUp[vCnt - 1] == 1)
> > {
> > vTempStop = Max(vTempStop, High[vCnt -
> > 1]);
> > } // GapUp
> > } // Position Open & not Entry Bar
> >
> > vaInitStop[vCnt - 1] = vTempStop;
> > if(Low[vCnt] <= vaInitStop[vCnt - 1])
> > {
> > Sell[vCnt] = 1;
> > SellPrice[vCnt] = Min(Open[vCnt], vaInitStop
> > [vCnt - 1]);
> > vTempStop = 0;
> > }
> > else
> > {
> > if(High[vCnt] >= vaTargetVal[vCnt - 1])
> > {
> > Sell[vCnt] = 1;
> > SellPrice[vCnt] = Max(Open[vCnt],
> > vaTargetVal[vCnt - 1]);
> > vTempStop = 0;
> > _TRACE("Bar " + BarIndex() + " Buy " + Buy + " Sell " + Sell + "
> > Target " + vaTargetVal + " Stop " + vTempStop);
> > }
> > } // exits
> > } // Position Open
> > } // for
> >
> > // Remove excess signals
> >
> > Buy = ExRem(Buy, Sell);
> > // Remove additional signals,
> > Sell = ExRem(Sell, Buy);
> >
> >
> >
> > 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
> >
> >
> >
>
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/
|