Вообщем за основу брал индикатор Eds, для поиска максимального объёма в баре. Вот как раз мне необходимо избавиться от OnMarketData() и прибегнуть чисто к средствам OnBarUpdate(). Не подскажете как переделать вышеупомянутые конструкции?
Код:
if (e.MarketDataType == MarketDataType.Last)
if (e.MarketDataType == MarketDataType.Ask)
if (e.MarketDataType == MarketDataType.Bid)
e.Volume
Код:
protected override void OnMarketData(MarketDataEventArgs e)
{
// Print some data to the Output window
if (e.MarketDataType == MarketDataType.Last)
{
lastPrice = e.Price;
if ((lastPrice >= askPrice) && (lastPrice > bidPrice))
{
if (volumeRows.ContainsKey(e.Price) == false)
volumeRows.Add(e.Price, new VolumeTradedRow(0, (int) e.Volume));
else
volumeRows[e.Price].Bull += (int) e.Volume;
mostRecentBullPrice = e.Price;
mostRecentBullVolume = volumeRows[e.Price].Bull;
}
else if ((lastPrice <= bidPrice) && (lastPrice < askPrice))
{
if (volumeRows.ContainsKey(e.Price) == false)
volumeRows.Add(e.Price, new VolumeTradedRow((int) e.Volume, 0));
else
volumeRows[e.Price].Bear += (int) e.Volume;
mostRecentBearPrice = e.Price;
mostRecentBearVolume = volumeRows[e.Price].Bear;
}
else // neutrals are too insignificant to waste ram space and processing power, just return
return;
// объем текущей цены
volumeS = volumeRows[e.Price].Bear + volumeRows[e.Price].Bull;
BEAR = volumeRows[e.Price].Bear;
BULLL = volumeRows[e.Price].Bull;
if (volumeRows[e.Price].Bear + volumeRows[e.Price].Bull > largestVolume)
{
largestVolume = volumeRows[e.Price].Bear + volumeRows[e.Price].Bull;
PRICE_VALUE = e.Price;
}
tempMAX_VOL = largestVolume;
DrawTextFixed("MAX_VOLUME_DRAW", "Максимальный объём: " + tempMAX_VOL.ToString() + "\nТекущий бар = " + CurrentBar.ToString() + "\n\n\n\n", TextPosition.BottomLeft);
ChartControl.Refresh();
if (DateTime.Now > lastRefresh.AddMilliseconds(refreshDelay))
{
ChartControl.Refresh();
lastRefresh = DateTime.Now;
}
}
else if (e.MarketDataType == MarketDataType.Ask)
askPrice = e.Price;
else if (e.MarketDataType == MarketDataType.Bid)
bidPrice = e.Price;
HIGH_PRICE = Bars.GetHigh(CurrentBar);
LOW_PRICE = Bars.GetLow(CurrentBar);
}