Alexander
|
Date: 7/22/2011
[quote=Pavel-NS;9796][quote=Alexander;9793]
Блокирует коллекцию для изменения и запускает передаваемую функцию над коллекцией.[/quote]
Спасибо за ответ.
А есть ли где более полная документация, чем chm-файл??
Не нашёл какой-либо информации по "ecng" пространству имён ни в доках, а также при просмотре из студии нет никаких комментариев.
[/quote]
Ecng никак не комментирован пока, да.
Полнее чем в chm в любом случае нет - это полная дока которая строится по комментариям.
|
|
|
|
Thanks:
|
|
|
|
|
|
vader
|
Date: 7/25/2011
Подскажите ,пожалуйста.
Пытаюсь создать событийную стратегию и почему-то не происходит действия, активизирующееся при наступлении условия.
Условие добавляется в список правил. Пробовал разные условия, результат нулевой.
Результат проверки Verifir – все в порядке.
версия библиотеки - 3.2.5
[code=csharp]
public class ConservativeRegime : Strategy
{
public ConservativeRegime(bool bBuy, decimal priceOfOrder, decimal dPrice, int division)
: base()
{
_bBuy = bBuy;
_priceOfOrder = priceOfOrder;
_dPrice = dPrice;
_division = division;
_order = new Order
{
Portfolio = this.Portfolio,
Volume = this.Volume,
Price = _priceOfOrder,
Security = this.Security,
Direction = OrderDirections.Buy,
};
}
protected override void OnRunning()
{
StrategyRule strR = this
.When(this.Security.BestAskPriceLess(_priceOfOrder))
.Do(SimpleRegOrd);
base.OnRunning();
foreach(StrategyRule r in this.Rules){
MessageBox.Show(r.ToString());
}
}
private void SimpleRegOrd()
{
MessageBox.Show("SimpleRegOrd");
this.RegisterOrder(_order);
}
private bool _bBuy;
private decimal _priceOfOrder;
private decimal _dPrice;
private int _division;
private Order _order;
}
[/code]
|
|
|
|
Thanks:
|
|
|
|
|
|
Alexander
|
Date: 7/25/2011
[quote=vader;9860]Подскажите ,пожалуйста.
Пытаюсь создать событийную стратегию и почему-то не происходит действия, активизирующееся при наступлении условия.
Условие добавляется в список правил. Пробовал разные условия, результат нулевой.
Результат проверки Verifir – все в порядке.
версия библиотеки - 3.2.5
[code=csharp]
public class ConservativeRegime : Strategy
{
public ConservativeRegime(bool bBuy, decimal priceOfOrder, decimal dPrice, int division)
: base()
{
_bBuy = bBuy;
_priceOfOrder = priceOfOrder;
_dPrice = dPrice;
_division = division;
_order = new Order
{
Portfolio = this.Portfolio,
Volume = this.Volume,
Price = _priceOfOrder,
Security = this.Security,
Direction = OrderDirections.Buy,
};
}
protected override void OnRunning()
{
StrategyRule strR = this
.When(this.Security.BestAskPriceLess(_priceOfOrder))
.Do(SimpleRegOrd);
base.OnRunning();
foreach(StrategyRule r in this.Rules){
MessageBox.Show(r.ToString());
}
}
private void SimpleRegOrd()
{
MessageBox.Show("SimpleRegOrd");
this.RegisterOrder(_order);
}
private bool _bBuy;
private decimal _priceOfOrder;
private decimal _dPrice;
private int _division;
private Order _order;
}
[/code][/quote]
Запускаете экспорт стакана?
|
|
|
|
Thanks:
|
|
|
|
|
|
vader
|
Date: 7/26/2011
Да, запускаю.
Я вставил такой код, чтобы убедится что стратегия получает данные.
[code=csharp]
protected override void OnRunning()
{
...
base.OnRunning();
MessageBox.Show(Security.BestAsk.Price.ToString());
...
}
[/code]
|
|
|
|
Thanks:
|
|
|
|
|
|
Alexander
|
Date: 7/26/2011
[quote=vader;9882]Да, запускаю.
Я вставил такой код, чтобы убедится что стратегия получает данные.
[code=csharp]
protected override void OnRunning()
{
...
base.OnRunning();
MessageBox.Show(Security.BestAsk.Price.ToString());
...
}
[/code][/quote]
Поля Security, Portfolio в конструкторе не проинициализированны.
Вы их должны устанавливать уже после вызова конструктора. Значит у заявки в конструкторе этих данных нет - можете проверить в OnRunning и заодно переместить создание заявки туда.
|
|
|
|
Thanks:
|
|
|
|
|
|
vader
|
Date: 7/26/2011
я инициалезирую эти поля так
[code=csharp]
_consStrategy = new ConservativeRegime( _bBuy, _priceOfOrder, _dPrice, _division)
;
[/code]
Я сделал проверку, все на месте
[code=csharp]
protected override void OnRunning()
{
StrategyRule strR = this
.When(this.Security.BestAskPriceLess(_priceOfOrder))
.Do(SimpleRegOrd);
base.OnRunning();
MessageBox.Show("Security= " + this.Security.ToString());
MessageBox.Show("Portfolio= " + this.Portfolio.ToString());
foreach(StrategyRule r in this.Rules){
MessageBox.Show(r.ToString());
}
}
[/code]
Ведь вопрос не в том ,что он заявку не создает,а в том, что он нужный метод (SimpleRegOrd) не вызывает.
|
|
|
|
Thanks:
|
|
|
|
|
|
Alexander
|
Date: 7/26/2011
[quote=vader;9896]я инициалезирую эти поля так
[code=csharp]
_consStrategy = new ConservativeRegime( _bBuy, _priceOfOrder, _dPrice, _division)
;
[/code]
Я сделал проверку, все на месте
[code=csharp]
protected override void OnRunning()
{
StrategyRule strR = this
.When(this.Security.BestAskPriceLess(_priceOfOrder))
.Do(SimpleRegOrd);
base.OnRunning();
MessageBox.Show("Security= " + this.Security.ToString());
MessageBox.Show("Portfolio= " + this.Portfolio.ToString());
foreach(StrategyRule r in this.Rules){
MessageBox.Show(r.ToString());
}
}
[/code]
Ведь вопрос не в том ,что он заявку не создает,а в том, что он нужный метод (SimpleRegOrd) не вызывает.[/quote]
Вначале вызывается конструктор, потом происходит инициализация полей.
Когда вы создаёте заявку - у вас там используется:
[code=csharp]Portfolio = this.Portfolio,
Security = this.Security,
[/code]
Оба этих поля = null.
Не верите - распечатайте
[code=csharp] MessageBox.Show("Security= " + _order.Security.ToString());
MessageBox.Show("Portfolio= " + _order.Portfolio.ToString());[/code]
:)
Необходимо вначале это исправить.
|
|
|
|
Thanks:
|
|
|
|
|
|
vader
|
Date: 7/26/2011
перенес создание заявки в OnRunning
Все равно ничего не происходит.
[code=csharp]
protected override void OnRunning()
{
_order = new Order
;
StrategyRule strR = this
.When(this.Security.BestAskPriceLess(_priceOfOrder))
.Do(SimpleRegOrd);
base.OnRunning();
MessageBox.Show("Security= " + this.Security.ToString());
MessageBox.Show("Portfolio= " + this.Portfolio.ToString());
foreach(StrategyRule r in this.Rules){
MessageBox.Show(r.ToString());
}
}
[/code]
|
|
|
|
Thanks:
|
|
|
|
|
|
Alexander
|
Date: 7/26/2011
Чему равно _priceOfOrder, как изменяется Security.BestAsk.Price?
|
|
|
|
Thanks:
|
|
|
|
|
|
vader
|
Date: 7/26/2011
_priceOfOrder - ввожу вручную, сталю такой, чтобы скорее испольнилось условие.
Как пример. Если лучшая продажа 198645, то ставлю 198630.
Security.BestAsk.Price не использую сейчас. Я выводил это ,чтобы убедится, что стратегия получает данные.
|
|
|
|
Thanks:
|
|
|
|
|