ra81
|
Date: 3/16/2012
|
|
|
|
Alexander Mukhanchikov Ну собственно такого точно нет, потому и не было замечено раньше :) Вы что-то не так делаете.
Что такое "проходит криво"?
Давайте лог, пишите конкретно как подаётся заявка, приводите код. Это при старте стратегии. Code
protected override void OnStarting()
{
base.OnStarting();
_candleManager = _candleManager ?? new CandleManager(Trader);
_candleToken = _candleToken ?? _candleManager.RegisterTimeFrameCandles(Security, (TimeSpan)AlfaTimeFrames.Minute1);
this
.When(_candleToken.CandlesFinished())
.Do(TryMakeTrade).Once();
}
Сначала идет сделка на покупу потом на продажу в TryMakeTrade. Code
var order = new Order()
{
Direction = OrderDirections.Buy,
Type = OrderTypes.Market,
Volume = this.Security.MinLotSize,
Security = this.Security,
Portfolio = this.Portfolio,
};
RegisterOrder(order);
this
.When(order.Matched())
.Do(SetStop).Once();
// Сделка висит пока не закроется по стоплоссу.
А вот метод SetStop Code
private void SetStop(Order order)
{
var averPrice = order.GetAlfaAveragePrice();
var stopPersent = 0.01;
var trailLevel = (double)averPrice * stopPersent;
var stop = new Order()
{
Type = OrderTypes.Conditional,
Direction = OrderDirections.Sell,
Portfolio = this.Portfolio,
Security = this.Security,
Volume = this.Security.MinLotSize,
StopCondition = new AlfaStopCondition()
{
Slippage = 1,
StopPrice = (double)averPrice + 0.5,
TrailingLevel = trailLevel,
},
};
RegisterOrder(stop);
}
После подобной манипуляции должна быть общая позиция равна нулю, потому что стоп заявка сразу же исполняется (специально так сформирована). А по факту позиция равна 1 лоту. Если повторить операцию позиция увеличится еще на лот и так далее. Продажи по стопу не учитываются никак. Кажется что сделки для стоп ордеров просто не считаются и все. Их тупо нет в стратегии. А для простых ордеров все считается. Вот лог стратегии Code
SS | 16.03.2012 12:46:19.047 | | Стратегия запущена.
SS | 16.03.2012 12:46:59.781 | | Свеча завершена, начинаем проверку условий.
SS | 16.03.2012 12:46:59.781 | | Проверка завершена, можно входить в позицию.
SS | 16.03.2012 12:46:59.781 | | Формируем ордер. Направление: Buy Тип: Market Объем: 10 Инструмент: SBER3
SS | 16.03.2012 12:47:02.781 | | Новая позиция 10.
SS | 16.03.2012 12:47:08.859 | | Заявка исполнена, формируем стоп. Направление: Sell Тип: Conditional Объем: 10 Инструмент: SBER3
SS | 16.03.2012 12:47:08.859 | | Новая Buy сделка 134193310 по цене 100,74 на 10 заявки 212770782.
А вот что пишет студия. Событие продажи как видим приходит. Code
15:46:53 - New Order. Цена: 101,74 Направление: Buy Тип ордера: Limit
15:46:59 - Order Changed. Цена: 101,74 Направление: Buy Тип ордера: Limit
15:46:59 - Order Changed. Цена: 101,74 Направление: Buy Тип ордера: Limit
15:46:59 - New My Trade. Цена: 100,74 Направление: Buy Тип ордера: Limit
15:47:2 - New Order. Цена: 100,28 Направление: Sell Тип ордера: Conditional
15:47:2 - Order Changed. Цена: 100,28 Направление: Sell Тип ордера: Conditional
15:47:14 - Order Changed. Цена: 100,28 Направление: Sell Тип ордера: Conditional
15:47:20 - Order Changed. Цена: 100,28 Направление: Sell Тип ордера: Conditional
15:47:23 - New My Trade. Цена: 100,71 Направление: Sell Тип ордера: Conditional
15:47:24 - Order Changed. Цена: 100,28 Направление: Sell Тип ордера: Conditional
|