class SingleOptionQuotingStrategy : TheorPriceQuotingStrategy
{
public SingleOptionQuotingStrategy(Order order, Unit betsPriceOffset, Unit theorpriceOffset)
: base(order, betsPriceOffset, theorpriceOffset) { }
public SingleOptionQuotingStrategy(OrderDirections dir, decimal vol, Unit theorpriceOffset)
: base(dir, vol, theorpriceOffset) { }
public Security UnderlyingSecurity { get; private set; }
protected override decimal GetNewPrice()
{
var r = base.GetNewPrice();
Debug.WriteLine("Время: {0}; Вызван GetNewPrice; Цена БА: {1}; Теор цена из таб: {3}; Результат: {2}.".Put(DateTime.Now.ToString("HH:mm:ss.fff"),
UnderlyingSecurity.LastTrade.Price.ToString("0.0"), r.ToString("0.0"), Security.TheorPrice.ToString("0.0")));
return r;
}
protected override decimal GetNewVolume()
{
var r = base.GetNewVolume();
Debug.WriteLine("Время: {0}; Вызван GetNewVolume; Цена БА: {1}; Результат: {2}.".Put(DateTime.Now.ToString("HH:mm:ss.fff"),
UnderlyingSecurity.LastTrade.Price.ToString("0.0"), r.ToString("0.0")));
return r;
}
protected override bool NeedFinish()
{
var r = base.NeedFinish();
Debug.WriteLine("Время: {0}; Вызван NeedFinish; Цена БА: {1}; Результат: {2}.".Put(DateTime.Now.ToString("HH:mm:ss.fff"),
UnderlyingSecurity.LastTrade.Price.ToString("0.0"), r.ToString()));
return r;
}
protected override bool NeedRegister()
{
var r = base.NeedRegister();
Debug.WriteLine("Время: {0}; Вызван NeedRegister; Цена БА: {1}; Результат: {2}.".Put(DateTime.Now.ToString("HH:mm:ss.fff"),
UnderlyingSecurity.LastTrade.Price.ToString("0.0"), r.ToString()));
return r;
}
protected override bool NeedReRegister(decimal newBestPrice, decimal newVolume)
{
var r = base.NeedReRegister(newBestPrice, newVolume);
Debug.WriteLine("Время: {0}; Вызван NeedReRegister с параметрами newBestPrice={3} и newVolume={4}; Цена БА: {1}; Результат: {2}.".Put(DateTime.Now.ToString("HH:mm:ss.fff"),
UnderlyingSecurity.LastTrade.Price.ToString("0.0"), r.ToString(), newBestPrice.ToString("0.0"), newVolume.ToString("0.0")));
return r;
}
protected override void RegisterOrder(Order order)
{
Debug.WriteLine("Время: {0}; Вызван RegisterOrder.".Put(DateTime.Now.ToString("HH:mm:ss.fff")));
base.RegisterOrder(order);
}
protected override void RegisterQuotingOrder(Order order)
{
Debug.WriteLine("Время: {0}; Вызван RegisterQuotingOrder.".Put(DateTime.Now.ToString("HH:mm:ss.fff")));
base.RegisterQuotingOrder(order);
}
protected override void ReRegisterOrder(Order oldOrder, Order newOrder)
{
Debug.WriteLine("Время: {0}; Вызван ReRegisterOrder.".Put(DateTime.Now.ToString("HH:mm:ss.fff")));
base.ReRegisterOrder(oldOrder, newOrder);
}
protected override void OnStarting()
{
this.NewOrder += o => Debug.WriteLine("Время: {0}; Событие NewOrder; Цена БА: {1}; Цена заявки: {2}; Объем заявки: {3}.".Put(DateTime.Now.ToString("HH:mm:ss.fff"),
this.UnderlyingSecurity.LastTrade.Price.ToString("0.0"), o.Price.ToString("0.0"), o.Volume.ToString("0.0")));
this.NewMyTrades += t => Debug.WriteLine("Новая сделка");
this.UnderlyingSecurity = this.Security.GetUnderlyingAsset();
base.OnStarting();
}
}