PDA

View Full Version : MarketDataType.Ask and the message sent


tinkerz
02-23-2010, 10:23 AM
I am running the following IF statements, I have checked the via the print menu, they are both executing there commands.

when the bid or ask side is updated, is a string of all levels sent, this would account for why I get 2 firing, can i just include update or do i need another method to say only when changed do i want to execute the statement

if (e.MarketDataType == MarketDataType.Ask && e.Position == 0)
{

}
if (e.MarketDataType == MarketDataType.Bid && e.Position == 0)
{

}

tinkerz
02-23-2010, 11:43 AM
if (e.MarketDataType == MarketDataType.Ask && e.Position == 0 && e.Operation == Operation.Update);

This statement prints levels above 0, as I understand it && means
and also, so how can it be printing other levels in output menu?

NinjaTrader_Austin
02-23-2010, 01:38 PM
tinkerz, have you seen the reference sample titled Creating your own Level II data book (http://www.ninjatrader-support.com/vb/showthread.php?t=3478)? It goes over the details of creating/maintaining a LII book.

Now I'm not exactly what you're trying to accomplish, but maybe you could just the OnMarketData() method? That just returns the best bid, best ask, and the last price.

This code has much more "fluff" than necessary to display the basics, but it should help you out. Let us know if you have any other questions.

protected override void OnMarketData(MarketDataEventArgs e)
{
if (e.MarketDataType == MarketDataType.Last)
{
Print("last\t" + e.Price.ToString() + "\t" + e.Volume.ToString());
}
else if (e.MarketDataType == MarketDataType.Bid)
{
double bidprice = e.Price;
int bidvol = e.Volume;
string datastring = "bid\t" + bidprice + "\t" + bidvol;
Print(datastring);
}
else if (e.MarketDataType == MarketDataType.Ask)
{
double askprice = e.Price;
int askvol = e.Volume;
string datastring = "ask\t" + askprice + "\t" + askvol;
Print(datastring);
}
}