I'm trying to build a system which runs a batch, runs a scan, adds the results to a watchlist, then fires a market order at the broker.
I have tried using various functions and I am unsure how to iterate through the watchlist (or even if I should be doing that.
I know I should trype some code here to display what I have done, but I'm embarrassed that I am just running orund in a vortex and have no idea how to achieve what I am trying to do.
Here's one of my many attempts.
tickers = Foreign("TestBuy", Name());
for (i = 0; i < BarCount; i++)
ticker = StrExtract(tickers, i);
printf("Ticker: %s", ticker);
ibc.PlaceOrder(ticker + "-LSE-STK-GBP", "BUY", 1, "MKT", 0, 0, "DAY", False);
Igf anytone can point me in the right direction, or advise me something obvious I am missing, I'd be hugely grateful.
Your loop is running through the bars but you want it to run through the symbols. See the code on: AFL Function Reference - CATEGORYGETSYMBOLS
Also for auto trading, look for the articles posted on the old KB: AmiBroker Users' Knowledge Base
Thanks so much, Peter, that was helpful.
ibc = GetTradingInterface("IB");
if( ibc.IsConnected() )
list = CategoryGetSymbols(categoryWatchlist,0,0);
for( i = 0; ( symbol = StrExtract( list, i ) ) != ""; i++ )
ibc.PlaceOrder(symbol+"-LSE-STK-GBP", "BUY", 1, "MKT", 0, 0, "GTC", True );
I note that the CategoryGetSymbols function takes a number for the watchlist. I tend to rename my watchlists to keep track of pending orders, open positions and which position is open in which position etc. I'm guessing I simply need to keep track of where that watchlist is in the order of watchlists. That's easy enough though. I'm happy with this solution, thanks.