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

[amibroker] Re: Same Bar Buy & Sell



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/