[Bug] запаздывание обновления Strategy.MyTrades

[Bug] запаздывание обновления Strategy.MyTrades
Atom
8/2/2011
vader


Обнаружил что, MyTrades хоть и является синхоронизированной, но обновляется с опозданием. у меня стратегия содержит такое правило


this
				.When(StrategyRuleConditionHelper.StrategyNewMyTrades(this) )
				.Do(RegisterNext);

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


private void RegisterNext()
		{
			if(TraderHelper.IsMatched(this.MyTrades[this.MyTrades.Count-1].Order)){
				_curLotBuySellNow += this.MyTrades[this.MyTrades.Count-1].Order.Volume;

часто происходит так, что он проверяет одну и туже сделку, т.е. остальные ещё не попали в список. Как с этим быть?


Tags:


Thanks:


President

Avatar
Date: 8/2/2011
Reply


в событие NewMyTrades должны передаваться трейды - у вас же в RegisterNext ничего не передается. Не знаю как эту конструкцию описать через .When.Do я делаю по старинке: в конструкторе стратегии: this.NewMyTrades += new Action<IEnumerable>(OnNewMyTrades);

	void OnNewMyTrades(IEnumerable<MyTrade> myTrades)
	{
		foreach (MyTrade myTrade in myTrades)
		{

...

2. вам судя по вашему примеру нужны не сами трейды, а изменение состояния ордера - а тогда вы можете ловить именно это событие this.OrderChanged += new Action(OnOrderChanged); void OnOrderChanged(Order obj) { if(obj.IsMatched()) { ....

Thanks:

vader

Avatar
Date: 8/3/2011
Reply


Какой именно ордер передается в void OnOrderChanged(Order obj) ?

Thanks:

President

Avatar
Date: 8/3/2011
Reply


vader: Какой именно ордер передается в void OnOrderChanged(Order obj) ? тот у которого что-то изменилось

Thanks: vader

vader

Avatar
Date: 8/3/2011
Reply


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


void OnOrderChanged(Order obj)
		{
			if(obj.IsMatched()) {
				_listOfIdOrders.Add(obj.Id);
			}
		}

Как этого избежать?

Thanks:

MSH

Avatar
Date: 12/2/2011
Reply


У нас такая же проблема - найдено ли решение?

Thanks:

Alexander

Avatar
Date: 12/2/2011
Reply


Такая же - это какая? Если про несколько раз изменяется после Done - да, такое может быть.

Пример для плазы2:

  1. вам приходит событие об исполнении ордера по ответу на транзакцию.
  2. Далее - вы получаете событие об изменении вашего ордера по ордер логу.

Как избежать - локально в стратегии.

Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy