PureBytes Links
Trading Reference Links
|
Thanks Keith. I did not know about that other forum!
--- In amibroker@xxxxxxxxxxxxxxx, Keith McCombs <kmccombs@xxx> wrote:
>
> eToke and shakerlr --
> Two very good posts.
> I notice that both of you are relatively new to this forum. You might
> not know that their is another yahoogroups forum, amibroker-at, that
> deals specifically with autotrading. Your posts may get a lot more
> attention there. In fact, I would suggest that you repost them there.
> -- Keith
>
> etoketrader wrote:
> >
> >
> > Hi,
> >
> > With realtime trading you need to think a little differently then if
> > you were backtesting: It is quite likely that your AFL code will be
> > run multiple times during the same bar. If you are running it from a
> > chart, then the code will be run every time this is refreshed - this
> > could be many times per second. Check your intraday settings in
> > preferences for this. I myself run my systems from the Analysis
> > window: The frequency is much less, but it may run several times for
> > the same bar nonetheless.
> >
> > It is important to understand that if a signal is true on the bar,
> > then it is true every time the AFL is run, so multiple signals are
> > only natural and need to be taken into consideration.
> >
> > Also you must be prepared for inaccuracies as you will never be able
> > to exactly match an event such as the open of a new bar in your real
> > time trading. The more liquid the instrument, the better it will be.
> >
> > A) You must address multiple buy/sell signals by checking whether you
> > already have an open position. Alternatively, use static variables so
> > that you do not repeat an order while on the same bar. You can then
> > reset the variable by detecting a change of bar.
> >
> > B) If you want to attempt to get as close as possible to the open of
> > the next bar, then what I suggest you do is to store your order
> > signals into static variables when they occur (anytime in the current
> > bar). Then, in your IB order logic, detect the change of bar to fire
> > the orders and reset these order static variables. I find this to be
> > virtually impossible to acheive using AA window for autotrading. I
> > personally resolve this problem by using the smallest timeframe
> > possible on the AA Window and let the trade happen at any point during
> > the bar where the signal occurs. For backtesting I take an average of
> > the bar as my price. I find this inaccuracy to be almost irrelevant
> > when compared to other forms of slippage.
> >
> > I suggest you refer to the Amibroker User Knowledge Base:
> > http://www.amibroker.org/userkb/ <http://www.amibroker.org/userkb/>
> > which has a lot of valuable information on the subject.
> >
> > As regards to detecting the change of bar, I did not have the time to
> > find this code for you but I have several instances of it on this
> > knowledgebase and/or in other posts.
> >
> > eToke
> >
> >
> > --- In amibroker@xxxxxxxxxxxxxxx <mailto:amibroker%40yahoogroups.com>,
> > "shakerlr" <ljr500@> wrote:
> > >
> > > After posting this message:
> > > http://finance.groups.yahoo.com/group/amibroker/message/137490
> > <http://finance.groups.yahoo.com/group/amibroker/message/137490>
> > >
> > > Which brings up a point on signals on the current bar in real time.
> > Namely, they may occur many times until that bar is finally
> > written/printed. I tried my strategy with the bar replay tool and
> > found that I indeed was generating multiple signals to the (IB)
> > auto-trader.
> > >
> > > I tried users/Thomas' suggestion of using
> > > buy=ref(buy, -1), but I still get multiple signals.
> > >
> > > http://finance.groups.yahoo.com/group/amibroker/message/132762
> > <http://finance.groups.yahoo.com/group/amibroker/message/132762>
> > > http://finance.groups.yahoo.com/group/amibroker/message/132761
> > <http://finance.groups.yahoo.com/group/amibroker/message/132761>
> > >
> > > Is there something else that I am missing to make the buy on prev
> > bar work. All I REALLY want to do is have a signal generated on the
> > current bar, and then act (open a trade) on that signal on the NEXT
> > bar open. Basically simulating the settradedelay(1,1,1,1) function,
> > but with real trading.
> > >
> > > here is my code below...you will see multiple traces showing
> > multiple buy signals. Note that useIB is false so AT is turned off.
> > >
> > > useIB=0;
> > >
> > > starttime=TimeNum() >= 094500 AND TimeNum() <=154500;
> > > test=0;
> > > Minprice=5;
> > > PositionSize = -20; // use minuse for -xx% of equity
> > >
> > > if (useIB)
> > > {
> > > ibc = GetTradingInterface("IB");
> > > }
> > >
> > > //delay=Optimize("tradeDelay", 1, 1, 1, 1);
> > > //SetTradeDelays(delay, delay, delay, delay);
> > >
> > > Buy = Cross((Close),(EMA(Close,9)));
> > >
> > > // this should delay the signal for the next bar - right?
> > > Buy=Ref(Buy, -1);
> > >
> > > Buystop = Ref(EMA(Close,9),-1);
> > > BuyPrice = Max(Buystop,Low);
> > >
> > > // not worried about delaying the sell signal until I get the buy
> > signal working
> > > Sell = Cross(EMA(Close,9),(Close));
> > > Sellstop = Ref(EMA(Close,9),-1);
> > > SellPrice = Min(sellstop,High);
> > >
> > > Buy = ExRem(Buy,Sell);
> > > Sell = ExRem(Sell,Buy);
> > >
> > > if (LastValue(Buy))
> > > {
> > > _TRACE("BUYprice: " + BuyPrice + ", time=" + TimeNum());
> > >
> > > if (useIB)
> > > {
> > > ibc = GetTradingInterface("IB");
> > >
> > > // check if we are connected OK
> > > if( ibc.IsConnected() )
> > > {
> > > // check if we do not have already open position on this stock
> > > if( ibc.GetPositionSize( Name() ) == 0 )
> > > {
> > > // transmit order
> > > ibc.PlaceOrder( Name(), "Buy", 10, "MKT", 0, 0, "Day", True );
> > > }
> > > }
> > > }
> > > }
> > >
> > > if (LastValue(Sell))
> > > {
> > > _TRACE("Sellprice: " + SellPrice + ", time=" + TimeNum());
> > >
> > > if (useIB)
> > > {
> > > ibc = GetTradingInterface("IB");
> > >
> > > // check if we are connected OK
> > > if( ibc.IsConnected() )
> > > {
> > > // need to have open position
> > > if( ibc.GetPositionSize( Name() ) > 0 )
> > > {
> > > // transmit order
> > > ibc.PlaceOrder( Name(), "Sell", 10, "MKT", 0, 0, "Day", True );
> > >
> > > StaticVarSet(Name(), 0);
> > > }
> > > }
> > > }
> > > }
> > >
> > > shape = Buy * shapeUpArrow + Sell * shapeDownArrow;
> > > PlotShapes( shape, IIf( Buy, colorBlue, colorRed ), 0, IIf( Buy,
> > Low, High ) );
> > > PlotShapes(IIf(Buy ==1, shapeUpArrow,shapeNone),colorBlue,0,0,10);
> > > PlotShapes(IIf(Sell ==1, shapeHollowUpArrow,shapeNone),colorRed,0,0,10);
> > >
> >
> >
>
------------------------------------
**** 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/
|