I have a strategy where primary dataseries is 1 minute and I added secondary data series of 1 tick to improve granularity.
AddDataSeries(Data.BarsPeriodType.Tick, 1);
if(XYZ[0] < Entry) { EnterLongLimit(1,false,Convert.ToInt32(DefaultQuantity), GetCurrentBid(0), @"b1"); }
As you can see, I'm sending my limit order to GetCurrentBid. However, after reviewing many trades during my SA, and comparing those trades with bid/ask/last TICK data, it seems SA is actually giving me fills on "last tick" price rather than bid. Is this normal behaviour? Will I need to add additional data series for bid/ask?? And then submit my orders on those?
AddDataSeries("NZDUSD", Data.BarsPeriodType.Tick, 1, Data.MarketDataType.Ask); AddDataSeries("NZDUSD", Data.BarsPeriodType.Tick, 1, Data.MarketDataType.Bid);
However, when I run the strategy on playback, my orders indeed are being sent to bid/ask. Even though, I have COBC=true, my bid/ask limit orders are changing as each incoming tick data comes and the bid/ask changes respectively, which makes sense, since I am sending my order on the secondary data series of tick data. But please help me wrap my head on this:
If I submit my order at bid, say 100, and my bid limit price is changing with each incoming tick data, how can I ever possibly get a fill? The only scenario I can think of is that the bid/ask spread would have to converge in order for me to get a fill? Which is basically impossible, so how is NT actually giving me fills? In other words, since I submitted my original limit order at 100, the next tick, the bid changed to 99, hence my limit order also changed to 99, and so on, given that I am trying to BUY this security (forex), my broker will NEVER give me a fill to buy unless ask = limit order, and my limit order should theoretically never equal ask because my limit order (in the scenario described in this post) is derived from each incoming bid tick data! So again, how is NT actually giving me fills?
I originally had thought that when I submit a limit order at price X, it does not get changed as new data is comes in, but since I've added 1 tick data to reduce discrepancies between real time execution and back-test execution, now I'm left with this issue.
I've read all the guides, spent the entire day going through posts after posts and I'm basically not sure what is going on anymore. At each step of developing a strategy in NT results in some mysterious behaviour.
Sorry for always typing up long posts: in short:
if(XYZ[0] < Entry) { EnterLongLimit(1,false,Convert.ToInt32(DefaultQuantity), GetCurrentBid(0), @"b1"); }
2) and realistically speaking, I cannot imagine any scenario where i'd get a fill for the situation described above for the market replay.
Comment