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

[amibroker] Re: Intrabar entries



PureBytes Links

Trading Reference Links

Brian.

This is what Barry over at the AT board said in response to a similar request, I think it may be helpful in my case here.

One thing you need to realize is that using intraday data as it comes
in reduces the need to use the formula as you have it designed or
even the necessity to use smaller time frames. When data comes in
Close is the last tick value. We usually think of close as the price
at the end of the bar. But when intraday data is building a bar the
last tick is the close and when the next one comes in that is the
close, etc., until the end of the bar. Then it is set in concrete.
The fist tick to come in is the open. The highest and lowest are the
high and low tick so far. The next tick may be higher or lower. Just
stop and think about that for a minute. It tool a while before it got
past all my white hair.

I am assuming again but I think you intend to use this in auto
trading mode. If so you are looking for the first tick that meets or
exceeds your entry price. Then you need to change the formula to:

LastC = LastValue(c);
// when your set up is reached set BuySetup True
BuySetup = Ref(Open,0) < EntryPrice AND LastC > EntryPrice;
// if buySetup is true save your target price
if(LastValue(BuySetup))
StaticVarSet("BuyTarget", LastC + yourStopDelta);
// when C >= to your target price you send a buy order
Buy = LastC >= StaticVarGet("BuyTarget");
// set the buy value when you sent the order
BuyPrice = iif(buy, LastC, 0);

Using a static var will save the setup condition because the next
tick may make the condition false and you could miss the trade or set
the trade at a later time. Setting it in a static will eliminate the
need to use shorter time frames to see the condition. High might work
here but I think AFL will wait until the end of the bar to act on > H
logic. Using static vars will allow you to send the order mid bar,
which is what I think you want to do.

Set BuyPrice to the last C because you want to catch the actual value
where the trade was triggered and transmitted to TWS.

The rub to what I just wrote is that it will not back test. But in my
opinion back testing is a waste of time once you have your design
completed, optimized and back tested on static out of sample blocks
of data. If you want to back test this and get really close to actual
trade value create a new database for tick data. You can run two
instances of AB, one for tick data and another instance for minute
data. I do this often to capture data to use in BarReplay, which is
an awesome place to do debugging. I use 5 second data rather than
tick data. I think IB only sends tick data three times a second so 5
second data may be more accurate.




--- In amibroker@xxxxxxxxxxxxxxx, "nizar.mahri@xxx" <nizar.mahri@xxx> wrote:
>
> Hi Brian,
> 
> Let me explain further.
> 
> What Im looking to do is trade high volume breakouts.
> So the entry is just a mix of HHV, %increase, UpBar, Increase in volume, and sufficient liquidity.
> So if previous bar criteria meets the above, i buy on the next bar open. I have backtested this using Daily bars.
> 
> Though the strategy is profitable, on the majority of occassions, a considerable chunk of the move happens in that first bar (between the initial breakout maybe and the close ie. in the first few hours)
> 
> So what Im trying to do here is, instead of waiting for the close, and entering tomorrow, I want to buy AS SOON AS the current bar (daily) meets the requirements for %change, liquidity, volume, HHV, etc. ie. Mid-bar.
> 
> So ideally I would want to auto-run an exploration every 30-60seconds, for example, and each time the scan catches a stock in which todays bar, treating the LAST price as the close, meets my criteria, then I enter right then and there, or as soon as practicable.
> 
> Hope that makes it clearer.
> 
> Thanks.
> 
> Nizar.
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "brian_z111" <brian_z111@> wrote:
> >
> > >snip< you can only access H and L bars dailybars from intraday. You cannot access any of the daily indicators intraday in your backtesting.>snip< 
> > 
> > I think it can be done (subject to the actual problem because some case studies might exceed my capabilities).
> > I didn't post any example code because I am in the middle of some theoretical work on PowerFactor (will post to the Zboard if it works out) and also because, in your prev posts you didn't stipulate which indicator you wanted to use to get in and out using RT bars (possibly you can't say because it will reveal too much about your system ... which is understandable).
> > 
> > Example:
> > 
> > EOD strategy = Buy on Close and Sell on Close the next day (1 bar);
> > 
> > In RT the same strategy can be applied by:
> > 
> > RT EOD trade equivalent = Buy on Close (last intraday bar) and Sell on Close (entry bar + 78 bars);
> > 
> > Isn't it the same thing, expressed in different timeframes (without tricky timeframe compression ... well tricky for me anyway).
> > 
> > I always consider that macrobars e.g. weekly, are an approximation of the corresponding microbars e.g. daily.
> > 
> > 
> > 
> > 
> > --- In amibroker@xxxxxxxxxxxxxxx, "murthysuresh" <money@> wrote:
> > >
> > > let me know when you find a way to do it. check my earlier posts on the same issue. 
> > > you can only access H and L bars dailybars from intraday. You cannot access any of the daily indicators intraday in your backtesting.
> > > 
> > > 
> > > --- In amibroker@xxxxxxxxxxxxxxx, "nizar.mahri@" <nizar.mahri@> wrote:
> > > >
> > > > Hi,
> > > > 
> > > > I currently have my system set up as below.
> > > > The way its set up is as an EOD system.
> > > > 
> > > > Now I want to modify it to have intraday entries.
> > > > So as soon as todays bar meets the system entry criteria (in terms of price% change, volume, and liquidity) then enter immediately (ie. don't wait for the close).
> > > > 
> > > > How would i do that?
> > > > 
> > > > Thanks.
> > > > 
> > > > Nizar.
> > > > 
> > > > settradedelays( 1, 1, 1, 1 );
> > > > 
> > > > LBP = Param("ATR Look Back", 10, 5, 50, 1);;
> > > > Multi = Param("ATR Multiple", 2, 1, 5, 0.1);;
> > > > Pr = Close;
> > > > AT = ATR(LBP);
> > > > 
> > > > Entry1 = Indicator1;
> > > > Entry2 = Indicator2;
> > > > Entry3 = Indicator3;
> > > > Entry4 = Indicator4;
> > > > Entry5 = Indicator5;
> > > > 
> > > > Buy = Entry1 && Entry2 && Entry3 && Entry4 && Entry5;
> > > > BuyPrice = Open;
> > > > trailARRAY = Null;
> > > > trailstop = 0;
> > > > Longtriggerbar = 0;
> > > > 
> > > > for( i = 1; i < BarCount; i++ )
> > > > {
> > > > 
> > > > if( trailstop == 0 AND Buy[ i ] ) 
> > > > { 
> > > > trailstop = Pr[ i ] - Multi * AT[i];
> > > > Longtriggerbar = i;
> > > > }
> > > > else Buy[ i ] = 0; // remove excess buy signals
> > > > 
> > > > if( trailstop > 0 AND Low[ i ] < trailstop  and i != Longtriggerbar)
> > > > {
> > > > Sell[ i ] = 1;
> > > > SellPrice[ i ] = trailstop;
> > > > trailstop = 0;
> > > > }
> > > > 
> > > > if( trailstop > 0 )
> > > > { 
> > > > trailstop = Max( Pr[ i ] - Multi * AT [i], trailstop );
> > > > trailARRAY[ i ] = trailstop;
> > > > }
> > > > 
> > > > }
> > > > 
> > > > 
> > > > Plot( Close,"Price",colorBlack,styleBar);
> > > > Plot( trailARRAY,"trailing stop level", colorRed );
> > > > 
> > > > // Rank trades according to ATR if insufficient capital
> > > > 
> > > > PositionScore = 100-ATR(10);
> > > > 
> > > > // Divide capital into 4 positions
> > > > // Plot equity chart
> > > > 
> > > > NumPos = 4;
> > > > SetOption("MaxOpenPositions",NumPos);
> > > > PositionSize = -100/NumPos;
> > > > 
> > > > Plot(C,"C",colorBlack,styleCandle);
> > > > e = Equity();
> > > > Plot(e,"Equity",colorGreen,styleLine | styleOwnScale);
> > > >
> > >
> >
>




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

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

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

TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)

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

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/