В последнее время с моей стратегией твориться сплошная магия... Одну магическую штуку, я обнаружил совсем недавно!
Вот пример кода:
var activeOrders = (from orders in this.Orders
where (orders.State == OrderStates.Active)
select orders).ToList();
if (activeOrders.Count == 0)
{
//что то
}
else
{
var lastOrderPrice = activeOrders.FirstOrDefault().Price;
var bestAsk = this.Security.GetMarketDepth().BestAsk;
var bestBid = this.Security.GetMarketDepth().BestBid;
//если спрэд удовлетворяет условия
if (e.SpreadPrice >= Convert.ToDecimal(this.Security.MinStepSize * Properties.Settings.Default.SignalSpreadSize))
{
//если наша заявка стоит первой на покупку или продажу
if (lastOrderPrice == bestAsk.Price || lastOrderPrice == bestBid.Price)
{
//что то делаем
}
// еще что то и т.д.
}
}
Главное то, что заявку стратегия должна выкидывать только одну (и чаще всего так и делает), а если уже была выставлена заявка, то важно знать первая она или нет? И var <mark>lastOrderPrice</mark> это определяет. Но если я стою, к примеру первый на покупку, то <mark>var bestBid</mark> почему то видит заявку, которая стоит за моей заявкой. Вот она - магия, или нет? Возможно, я просто плохо знаю и понимаю работу S#, но мне кажется, что такой код вполне должен нормально работать.
评论 (1)
登录 或 创建账户, 登录或注册以发表评论
Все решилось само собой. Просто, как оказалось, не желательно включать робота, когда QUIK активно загружает данные, при первом запуске за день.