Maniac
|
Дата: 16.10.2012
|
|
|
|
Создание стратегии и OnProcess Код
_strategy = new ChaosStrategy(_timeFrame)
{
Volume = 1,
Security = _sec,
Portfolio = _portfolio,
Trader = _trader,
CancelOrdersWhenStopping = false,
Name = "Chaos",
WaitAllTrades = true
};
_logManager.Sources.Add(_strategy); // добавление логирования
public ChaosStrategy(TimeSpan timeFrame)
: base(timeFrame)
{
}
protected override void OnStarted()
{
base.StopOrderRegistered += o => this.AddInfoLog("New StopOrder {3}: Id={0}, Securuty={1}, State={2}", o.Id, o.Security.Code, o.State, o.Type);
base.StopOrderChanged += o => this.AddInfoLog("Стоп заявка {0}, объём {2}, баланс {3}, TransactionId={4}, Price={5} изменилась на {1} в {7}, Latency={6}",
o.Id, o.State, o.Volume, o.Balance, o.TransactionId, o.Price, o.LatencyCancellation, o.Time);
base.NewMyTrades += trades =>
{
foreach (var myTrade in trades)
{
var trade = myTrade.Trade;
this.AddInfoLog("ChaosStrategy Trade: Id={0}, {5}, Price={1}, Security={2}, Volume={3}, Date={4}",
trade.Id, trade.Price, trade.Security.Code, trade.Volume, trade.Time, trade.OrderDirection);
}
Thread.Sleep(500);
if (base.PositionManager.Position != 0)
{
// protect current position with stop order
CreateTakeProfitAndStopLimit();
}
};
base.OnStarted();
}
protected override ProcessResults OnProcess()
{
if (PositionManager.Position == 0)
{
MakeTrade(_direction);
_direction = _direction.Invert();
}
this.AddInfoLog("Очередная итерация. Позиция: {0}", this.Position.ToString());
return ProcessResults.Continue;
}
public void MakeTrade(OrderDirections _direction)
{
// создаем заявку
decimal _price = _direction == OrderDirections.Buy ?
Security.BestAsk.Price + Security.MinStepSize * 10 : Security.BestAsk.Price - Security.MinStepSize * 10;
var order = this.CreateOrder(_direction, _price, Volume);
// регистрируем заявку (обычным способом - лимитированной заявкой)
RegisterOrder(order);
}
Логи 2012.10.16 22:24:27.406| |Chaos |Стратегия запущена. [0,-1]. Позиция при старте 0. 2012.10.16 22:24:57.390| |QuikTrader|RegisterOrder: 80642079/0 Покупка Цена=1926,0 Объем=1 Сост=None Бал=1 2012.10.16 22:24:57.406| |Chaos |Очередная итерация. Позиция: 0 2012.10.16 22:24:58.328| |QuikTrader|New order: 80642080/1921961359 Покупка Цена=1926 Объем=1 Сост=Done Бал=0 2012.10.16 22:24:58.328| |QuikTrader|Order changed: 80642080/1921961359 Покупка Цена=1926 Объем=1 Сост=Done Бал=0 2012.10.16 22:24:58.343| |QuikTrader|QuikTrader Trade : Id=1184336309, Price=1924,5, Security=LKOH, Volume=1, Date=16.10.2012 22:24:40 2012.10.16 22:25:27.375| |QuikTrader|RegisterOrder: 80642081/0 Продажа Цена=1921,7 Объем=1 Сост=None Бал=1 2012.10.16 22:25:27.375| |Chaos |Очередная итерация. Позиция: 0 2012.10.16 22:25:28.328| |QuikTrader|New order: 80642082/1921961957 Продажа Цена=1921,7 Объем=1 Сост=Done Бал=0 2012.10.16 22:25:28.328| |QuikTrader|QuikTrader Trade : Id=1184336657, Price=1921,8, Security=LKOH, Volume=1, Date=16.10.2012 22:25:10 2012.10.16 22:25:28.328| |QuikTrader|Order changed: 80642082/1921961957 Продажа Цена=1921,7 Объем=1 Сост=Done Бал=0 2012.10.16 22:25:57.375| |QuikTrader|RegisterOrder: 80642083/0 Покупка Цена=1924,4 Объем=1 Сост=None Бал=1 2012.10.16 22:25:57.375| |Chaos |Очередная итерация. Позиция: 0 2012.10.16 22:25:58.484| |QuikTrader|New order: 80642084/1921962719 Покупка Цена=1924,4 Объем=1 Сост=Done Бал=0 2012.10.16 22:25:58.484| |QuikTrader|QuikTrader Trade : Id=1184337097, Price=1923,4, Security=LKOH, Volume=1, Date=16.10.2012 22:25:40 2012.10.16 22:25:58.484| |QuikTrader|Order changed: 80642084/1921962719 Покупка Цена=1924,4 Объем=1 Сост=Done Бал=0 2012.10.16 22:26:27.375| |QuikTrader|RegisterOrder: 80642085/0 Продажа Цена=1922,1 Объем=1 Сост=None Бал=1 2012.10.16 22:26:27.375| |Chaos |Очередная итерация. Позиция: 0 2012.10.16 22:26:27.859| |QuikTrader|New order: 80642086/1921962972 Продажа Цена=1922,1 Объем=1 Сост=Active Бал=1 2012.10.16 22:26:27.875| |QuikTrader|Order changed: 80642086/1921962972 Продажа Цена=1922,1 Объем=1 Сост=Active Бал=1 2012.10.16 22:26:34.656| |QuikTrader|QuikTrader Trade : Id=1184337296, Price=1922,1, Security=LKOH, Volume=1, Date=16.10.2012 22:26:16 2012.10.16 22:26:34.656| |QuikTrader|Order changed: 80642086/1921962972 Продажа Цена=1922,1 Объем=1 Сост=Done Бал=0 2012.10.16 22:26:57.375| |QuikTrader|RegisterOrder: 80642087/0 Покупка Цена=1923,1 Объем=1 Сост=None Бал=1 2012.10.16 22:26:57.375| |Chaos |Очередная итерация. Позиция: 0 2012.10.16 22:26:57.859| |QuikTrader|New order: 80642088/1921963374 Покупка Цена=1923,1 Объем=1 Сост=Done Бал=0 2012.10.16 22:26:57.859| |QuikTrader|QuikTrader Trade : Id=1184337528, Price=1922,1, Security=LKOH, Volume=1, Date=16.10.2012 22:26:40 2012.10.16 22:26:57.859| |QuikTrader|Order changed: 80642088/1921963374 Покупка Цена=1923,1 Объем=1 Сост=Done Бал=0 2012.10.16 22:27:03.156| |Logger |Останавливаем работу ... 2012.10.16 22:27:04.625| |Chaos |Стратегия останавливается. [0,-1]. Позиция при старте 0.
|
Maniac
|
Дата: 17.10.2012
|
|
|
|
В OnStarted подписался на события OrderRegistering, OrderRegistered, OrderRegisterFailed Код
base.OrderRegistering += o => this.AddInfoLog("OrderRegistering {3}: Id={0}, Securuty={1}, State={2}", o.Id, o.Security.Code, o.State, o.Type);
base.OrderRegistered += o => this.AddInfoLog("OrderRegistered {3}: Id={0}, Securuty={1}, State={2}", o.Id, o.Security.Code, o.State, o.Type);
base.OrderRegisterFailed += o => this.AddInfoLog("OrderRegisterFailed {3} {4}: Id={0}, Securuty={1}, State={2}", o.Order.Id, o.Order.Security.Code, o.Order.State, o.Order.Type, o.Error.Message);
В логах есть только OrderRegistering, к-рый, видимо так и не выполняется, т.к. при остановке стратегии возникает предупреждение: Стратегия в состоянии Stopping. Регистрация заявки невозможна. 2012.10.17 09:58:27.117| |Chaos |Стратегия запущена. [0,-1]. Позиция при старте 0. 2012.10.17 09:58:56.960| |Chaos |OrderRegistering Limit: Id=0, Securuty=LKOH, State=None 2012.10.17 09:58:56.975| |QuikTrader|RegisterOrder: 35873126/0 Покупка Цена=1934,8 Объем=1 Сост=None Бал=1 2012.10.17 09:58:57.007| |Chaos |Очередная итерация. Позиция: 0 2012.10.17 09:58:57.599| |QuikTrader|New order: 35873127/1922401126 Покупка Цена=1934,8 Объем=1 Сост=Done Бал=0 2012.10.17 09:58:57.615| |QuikTrader|Order changed: 35873127/1922401126 Покупка Цена=1934,8 Объем=1 Сост=Done Бал=0 2012.10.17 09:58:57.631| |QuikTrader|QuikTrader Trade : Id=1184599265, Price=1933,8, Security=LKOH, Volume=1, Date=17.10.2012 9:58:56 2012.10.17 09:59:26.974| |Chaos |OrderRegistering Limit: Id=0, Securuty=LKOH, State=None 2012.10.17 09:59:26.974| |QuikTrader|RegisterOrder: 35873128/0 Продажа Цена=1932,8 Объем=1 Сост=None Бал=1 2012.10.17 09:59:26.974| |Chaos |Очередная итерация. Позиция: 0 2012.10.17 09:59:27.551| |QuikTrader|New order: 35873129/1922401509 Продажа Цена=1932,8 Объем=1 Сост=Done Бал=0 2012.10.17 09:59:27.551| |QuikTrader|Order changed: 35873129/1922401509 Продажа Цена=1932,8 Объем=1 Сост=Done Бал=0 2012.10.17 09:59:27.551| |QuikTrader|QuikTrader Trade : Id=1184599480, Price=1933,2, Security=LKOH, Volume=1, Date=17.10.2012 9:59:26 2012.10.17 09:59:56.989| |Chaos |OrderRegistering Limit: Id=0, Securuty=LKOH, State=None 2012.10.17 09:59:56.989| |QuikTrader|RegisterOrder: 35873130/0 Покупка Цена=1934,8 Объем=1 Сост=None Бал=1 2012.10.17 09:59:56.989| |Chaos |Очередная итерация. Позиция: 0 2012.10.17 09:59:57.566| |QuikTrader|New order: 35873131/1922401858 Покупка Цена=1934,8 Объем=1 Сост=Done Бал=0 2012.10.17 09:59:57.566| |QuikTrader|QuikTrader Trade : Id=1184599648, Price=1933,8, Security=LKOH, Volume=1, Date=17.10.2012 9:59:56 2012.10.17 09:59:57.566| |QuikTrader|Order changed: 35873131/1922401858 Покупка Цена=1934,8 Объем=1 Сост=Done Бал=0 2012.10.17 09:59:59.001| |Logger |Останавливаем работу ... 2012.10.17 10:00:00.764| |Chaos |Стратегия останавливается. [0,-1]. Позиция при старте 0. 2012.10.17 10:00:00.764|Warning|Chaos |Стратегия в состоянии Stopping. Регистрация заявки невозможна. 2012.10.17 10:00:00.764| |Chaos |Очередная итерация. Позиция: 0
|