← Voltar

выставление и снятие заявок

Добрый день)) возникла такая загвоздка, последовательно выставляю две заявки, и по исполнению одной из них надо снять другую??? подскажите каким образом можно это сделать, а то совсем ума не приложу.

Este tópico foi útil?

Compartilhar tópico

Comentários (13)

Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário

Dmitriy Klimov
Dmitriy Klimov

funvee_2: Добрый день)) возникла такая загвоздка, последовательно выставляю две заявки, и по исполнению одной из них надо снять другую??? подскажите каким образом можно это сделать, а то совсем ума не приложу. Отслеживать событие NewMyTrades у Strategy или BaseTrader.

funvee_2
funvee_2 Autor

а не могли бы Вы выложить кусочек кода, каким образом это сделать, просто я не программист и разобраться бывает сложновато, был бы Вам безумно признателен

Dmitriy Klimov
Dmitriy Klimov

funvee_2: а не могли бы Вы выложить кусочек кода, каким образом это сделать, просто я не программист и разобраться бывает сложновато, был бы Вам безумно признателен Если вы не программист, то кусочком кода не обойдешься. Посмотрите примеры, которые идут с библиотекой. Там все это есть...

funvee_2
funvee_2 Autor

честно смотрел.....я не из лени сюда написал. а потому что действительно не смог найти, а кусочка кода с тем как именно отследить заявку будет достаточно))) и больше не стану Вас донимать глупыми вопросами))

Dmitriy Klimov
Dmitriy Klimov

funvee_2: честно смотрел.....я не из лени сюда написал. а потому что действительно не смог найти, а кусочка кода с тем как именно отследить заявку будет достаточно))) и больше не стану Вас донимать глупыми вопросами)) Если заявки выставляются в стратегии, то можно так:

class MyStrategy : Strategy
{
        public MyStrategy ()
        {
            base.NewMyTrades += OnNewMyTrades;
        }

        private void OnNewMyTrades(IEnumerable<MyTrade> trades)
        {
            base.CancelActiveOrders();
        }
}

Каждый раз при исполнении одной заявки все остальные заявки будут сниматься.

funvee_2
funvee_2 Autor

Спасибо большое)))) все таки еще один вопросик остался)))) а если мне надо не все заявки снять а только последнюю а остальные оставить....????

Dmitriy Klimov
Dmitriy Klimov

funvee_2: Спасибо большое)))) все таки еще один вопросик остался)))) а если мне надо не все заявки снять а только последнюю а остальные оставить....???? В спсике Strategy.Orders хранятся все заявки, сделанные стратегией. Отменить можно любую через BaseTrader.CancelOrder.

funvee_2
funvee_2 Autor

это опять я. подскажите, пожалйста, как снять заявку по имеющемуся id заявки??

Mikhail Sukhov
Mikhail Sukhov

funvee_2: это опять я. подскажите, пожалйста, как снять заявку по имеющемуся id заявки??

Примерный код:

var order = ITrader.Orders.First(o => o.Id == id)
ITrader.CancelOrder(order)

Но есть подозрение, что неправильно строите логику. Оперировать нужно объектами (Order), а не номерами заявок.

funvee_2
funvee_2 Autor

а как тогда узнать какая из заявок была исполнена??? допустим если было 4 активные заявки. и пришло событие что одна исполнилась как узнать какая из них?? надо же сохранить id а потом сравнить с id исполненой сделки???я правильно понимаю???

Mikhail Sukhov
Mikhail Sukhov

funvee_2: а как тогда узнать какая из заявок была исполнена??? допустим если было 4 активные заявки. и пришло событие что одна исполнилась как узнать какая из них?? надо же сохранить id а потом сравнить с id исполненой сделки???я правильно понимаю???

Нет, просто запоминаете объект Order и сравниваете с тем, что пришло в Strategy.OrderChanged.

funvee_2
funvee_2 Autor

я понимаю, что это уже наглость. но все равно прошу помощи) дайте ,пожалуйста, кусочек кода, или пример какой-нибудь. вот есть у меня допустим 3 заявки активных, исполняется допустим номер 2(по счету) и пусть незнаю переменная а=2 , если 3яя исполняется то а=3....помогите плиз...оч надо...

Mikhail Sukhov
Mikhail Sukhov

funvee_2: я понимаю, что это уже наглость. но все равно прошу помощи) дайте ,пожалуйста, кусочек кода, или пример какой-нибудь. вот есть у меня допустим 3 заявки активных, исполняется допустим номер 2(по счету) и пусть незнаю переменная а=2 , если 3яя исполняется то а=3....помогите плиз...оч надо...

Код я конечно приведу:

private List<Order> _myOrders = new List<Order>();

var order = new Order....
RegisterOrder(order);
_oders.Add(order)
....

private void OnOrdersChanged(IEnumerable<Order> orders)
{
   foreach (var order in orders)
   {
       if (_myOrders.Contains(order))
      {
            // моя заявки
      }
   }
}

Только без изучения C# все равно бесполезно.