← Zurück

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

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (13)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

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# все равно бесполезно.