MrLightKing
|
Дата: 30.10.2015
|
|
|
|
Вроде нашел )))
Я сделал так - я открыл пример по Sterling (там уже есть Log-manager) и запустил на премаркете, пока рынок не очень активный и наблюдал за логами и стаканом, вот небольшой кусочек:
2015/10/30 14:26:23.203|Debug |SterlingTrader|BP:Level1Change,T(L)=2015.10.30 14:26:23.223,T(S)=2015.10.30 08:11:25.000,Sec=S#:AAPL@*, Native:,Type:,Changes=[BestAskPrice, 120,99],[BestBidPrice, 120,99],[BestAskVolume, 1800],[BestBidVolume, 100] 2015/10/30 14:26:24.439|Debug |SterlingTrader|BP:Level1Change,T(L)=2015.10.30 14:26:24.441,T(S)=2015.10.30 08:11:26.000,Sec=S#:AAPL@*, Native:,Type:,Changes=[LastTradePrice, 120,97],[LastTradeVolume, 45],[Volume, 105922],[VWAP, 6,75800200902551] 2015/10/30 14:26:24.441|Debug |SterlingTrader|BP:Execution,T(L)=2015.10.30 14:26:24.441,T(S)=2015.10.30 08:11:26.000,(Tick),Sec=S#:AAPL@*, Native:,Type:,Ord=/0/0,Fail=,TId=,Pf=,TPrice=120,97,UId= 2015/10/30 14:26:24.626|Debug |SterlingTrader|BP:Level1Change,T(L)=2015.10.30 14:26:24.634,T(S)=2015.10.30 08:11:26.000,Sec=S#:AAPL@*, Native:,Type:,Changes=[BestAskPrice, 120,97],[BestBidPrice, 120,97],[BestAskVolume, 500],[BestBidVolume, 100] 2015/10/30 14:26:25.221|Debug |SterlingTrader|BP:Level1Change,T(L)=2015.10.30 14:26:25.238,T(S)=2015.10.30 08:11:27.000,Sec=S#:AAPL@*, Native:,Type:,Changes=[BestAskPrice, 120,99],[BestBidPrice, 120,99],[BestAskVolume, 1800],[BestBidVolume, 100] 2015/10/30 14:26:26.484|Debug |SterlingTrader|BP:Level1Change,T(L)=2015.10.30 14:26:26.504,T(S)=2015.10.30 08:11:28.000,Sec=S#:AAPL@*, Native:,Type:,Changes=[BestAskPrice, 120,99],[BestBidPrice, 120,99],[BestAskVolume, 1800],[BestBidVolume, 500] 2015/10/30 14:26:26.506|Debug |SterlingTrader|BP:Level1Change,T(L)=2015.10.30 14:26:26.514,T(S)=2015.10.30 08:11:28.000,Sec=S#:AAPL@*, Native:,Type:,Changes=[LastTradePrice, 120,95],[LastTradeVolume, 10],[Volume, 105932],[VWAP, 6,75736405241098] 2015/10/30 14:26:26.514|Debug |SterlingTrader|BP:Execution,T(L)=2015.10.30 14:26:26.514,T(S)=2015.10.30 08:11:28.000,(Tick),Sec=S#:AAPL@*, Native:,Type:,Ord=/0/0,Fail=,TId=,Pf=,TPrice=120,95,UId= 2015/10/30 14:26:27.990|Debug |SterlingTrader|BP:Level1Change,T(L)=2015.10.30 14:26:27.990,T(S)=2015.10.30 08:11:30.000,Sec=S#:AAPL@*, Native:,Type:,Changes=[BestAskPrice, 120,98],[BestBidPrice, 120,98],[BestAskVolume, 300],[BestBidVolume, 500] 2015/10/30 14:26:30.209|Debug |SterlingTrader|BP:Level1Change,T(L)=2015.10.30 14:26:30.228,T(S)=2015.10.30 08:11:32.000,Sec=S#:AAPL@*, Native:,Type:,Changes=[BestAskPrice, 120,97],[BestBidPrice, 120,97],[BestAskVolume, 100],[BestBidVolume, 500]
В чем суть: BestAskPrice, BestAskVolume, BestBidVolume выдает правильно, а вот BestBidPrice всегда неправильно и всегда равен BestAskPrice
Я залез на GitHub в исходники и нашел в StockSharp / Connectors / Sterling / SterlingMessageAdapter_MarketData.cs
message.TryAdd(Level1Fields.BestAskPrice, (decimal)structQuoteUpdate.fAskPrice); message.TryAdd(Level1Fields.BestBidPrice, (decimal)structQuoteUpdate.fAskPrice); //должен быть bid
l1CngMsg.TryAdd(Level1Fields.BestAskPrice, (decimal)structQuoteSnap.fAskPrice); l1CngMsg.TryAdd(Level1Fields.BestBidPrice, (decimal)structQuoteSnap.fAskPrice); // должен быть bid
Я так понимаю в этом ошибка?
|
MrLightKing
|
Дата: 30.10.2015
|
|
|
|
Перекомпилировал исходники, протестировал, BestBid и BestAsk выдает правильно:
2015/10/30 15:54:09.366|Debug |SterlingTrader|BP:Execution,T(L)=2015.10.30 15:54:09.366,T(S)=2015.10.30 09:39:09.000,(Tick),Sec=S#:AAPL@*, Native:,Type:,Ord=/0/0,Fail=,TId=,Pf=,TPrice=120,83,UId= 2015/10/30 15:54:09.542|Debug |SterlingTrader|BP:Level1Change,T(L)=2015.10.30 15:54:09.559,T(S)=2015.10.30 09:39:09.000,Sec=S#:AAPL@*, Native:,Type:,Changes=[BestAskPrice, 120,84],[BestBidPrice, 120,82],[BestAskVolume, 600],[BestBidVolume, 600] 2015/10/30 15:54:10.382|Debug |SterlingTrader|BP:Level1Change,T(L)=2015.10.30 15:54:10.388,T(S)=2015.10.30 09:39:10.000,Sec=S#:AAPL@*, Native:,Type:,Changes=[BestAskPrice, 120,84],[BestBidPrice, 120,83],[BestAskVolume, 500],[BestBidVolume, 100],[LastTradePrice, 120,835],[LastTradeVolume, 100],[Volume, 3488240],[VWAP, 120,9446] 2015/10/30 15:54:10.388|Debug |SterlingTrader|BP:Execution,T(L)=2015.10.30 15:54:10.388,T(S)=2015.10.30 09:39:10.000,(Tick),Sec=S#:AAPL@*, Native:,Type:,Ord=/0/0,Fail=,TId=,Pf=,TPrice=120,835,UId= 2015/10/30 15:54:10.580|Debug |SterlingTrader|BP:Level1Change,T(L)=2015.10.30 15:54:10.581,T(S)=2015.10.30 09:39:10.000,Sec=S#:AAPL@*, Native:,Type:,Changes=[BestAskPrice, 120,84],[BestBidPrice, 120,83],[BestAskVolume, 500],[BestBidVolume, 300] 2015/10/30 15:54:10.759|Debug |SterlingTrader|BP:Level1Change,T(L)=2015.10.30 15:54:10.776,T(S)=2015.10.30 09:39:10.000,Sec=S#:AAPL@*, Native:,Type:,Changes=[BestAskPrice, 120,84],[BestBidPrice, 120,83],[BestAskVolume, 400],[BestBidVolume, 300] 2015/10/30 15:54:10.969|Debug |SterlingTrader|BP:Level1Change,T(L)=2015.10.30 15:54:10.974,T(S)=2015.10.30 09:39:10.000,Sec=S#:AAPL@*, Native:,Type:,Changes=[BestAskPrice, 120,84],[BestBidPrice, 120,83],[BestAskVolume, 500],[BestBidVolume, 300]
Вопрос вот в чем? Как получить доступ к этим полям? ))
После подписки на RegisterTrades и RegisterSecurity var Stock1_Bid = Stock1.BestBid == null ? (decimal?)null : Stock1.BestBid.Price; и Trader.GetSecurityValue(Stock1, Level1Fields.BestAskPrice); ничего не выдают.
|