Как убрать выставление лишних заявок?
Atom Ответить
13.05.2013


Код

 private void ProcessCandle(Candle candle)
        {
            lock(_mainlock)
             {
            var timeFrame = (TimeSpan)candle.Arg;
            var time = timeFrame.GetCandleBounds(Security).Min - timeFrame;
            _band.Process(new CandleIndicatorValue(candle) { IsFinal = true });
            this.AddInfoLog("Новая свечка {0}, {1}, {2}, {3}, {4}", candle.HighPrice, candle.CloseTime, _band.LastValue, _band.PrevIndValue, _band.InitDirection);


            if (candle.OpenTime >= time && _band.IsFormed )
            
            {

                if (_band.Direction == -1 && _band.LastValue < _band.PrevIndValue && Position >= 0 && _band.LevelHigh2 != 0)
                {
                    //отменяем все ордера  и выставляем новую заявку
                    CancelActiveOrders();
                    var order = this.CreateOrder(OrderDirections.Sell, Security.BestAsk.Price - 1m, this.Position + Volume);
                    RegisterOrder(order);
                }
                
                else
                    
                    if (_band.Direction == 1 && _band.LastValue > _band.PrevIndValue && Position <= 0 && _band.LevelLow2 != 0)
                    {
                        //отменяем все ордера  и выставляем новую заявку
                        CancelActiveOrders();
                        var order = this.CreateOrder(OrderDirections.Buy, Security.BestBid.Price + 1m, this.Position * -1m + Volume);
                        RegisterOrder(order);
                    }

                    else
                        if (_band.InitDirection == 2 && Position > 0)
                        {
                            //отменяем все ордера  и выставляем новую заявку
                            CancelActiveOrders();
                            var order = this.CreateOrder(OrderDirections.Sell, Security.BestAsk.Price, this.Position);
                            RegisterOrder(order);
                        }
                        else
                            if (_band.InitDirection == -2 && Position < 0)
                            {
                                //отменяем все ордера  и выставляем новую заявку
                                CancelActiveOrders();
                                var order = this.CreateOrder(OrderDirections.Buy, Security.BestBid.Price, this.Position * -1m);
                                RegisterOrder(order);
                            }
            }
            }

        }


Это код, который выставляет заявки. Но в моменты высокой активности он начинает ставить "лишнее". Есть способы устранения?

Теги:


Спасибо:




26 Ответов
< 1 2 
esper

Фотография
Программист
Дата: 28.05.2013
Ответить


Если попробовать выставить заявку через Quik/Sample вручную?
Спасибо:
< 1 2 

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy