Создание стратегии и OnProcess
[code=csharp]
_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);
}[/code]
Логи
[SPOILER]
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.
[/SPOILER]