Помогите сделать живучего робота.
Взял SimpleSmaStrategy, переделанный под событийную модель.
Робот делает два шага и падает ничком. У меня нет учебников,
где написано как их собирать. Поэтому нужны конкретные
ответы, а не политкорректные )) что можно разными вариантами сделать.
нельзя - без долговременной практики.
Биржа (смартком тест) не регистрирует заявку и все -
незакрытые позиции стратегией не учитываются, position manager
считает неправильно, выходим за пределы Volume и привет.
Задача конечная - стратегия парного трейдинга.
Я хотел отработать вот эти ситуации нештатные.
Это можно сделать на примере черного ящика MarketQuotingStrategy
или плюнуть на него?
Если не использовать, то где взять примеры несферических стратегий? (
на всякий случай ниже раскадровка, версия 4.0.17
class SmaStrategy : Strategy
{
private readonly CandleToken _candleToken;
private bool _isShortLessThenLong;
public SmaStrategy(CandleToken candleToken, ExponentialMovingAverage longSma, ExponentialMovingAverage shortSma, TimeSpan timeFrame)
{
_candleToken = candleToken;
LongSma = longSma;
ShortSma = shortSma;
}
public ExponentialMovingAverage LongSma { get; private set; }
public ExponentialMovingAverage ShortSma { get; private set; }
protected override void OnStarting()
{
this
.When(_candleToken.CandlesFinished())
.Do(ProcessCandles);
// запоминаем текущее положение относительно друг друга
_isShortLessThenLong = ShortSma.LastValue < LongSma.LastValue;
base.OnStarting();
}
private void ProcessCandles(IEnumerable<Candle> candles)
{
// если наша стратегия в процессе остановки
if (ProcessState == ProcessStates.Stopping)
{
// отменяем активные заявки
CancelActiveOrders();
return;
}
// если робот запустил экспорт не с начала торгов, может быть несколько свечей
foreach (var candle in candles)
{
// добавляем новую свечку
LongSma.Process((DecimalIndicatorValue)candle.ClosePrice);
ShortSma.Process((DecimalIndicatorValue)candle.ClosePrice);
}
// вычисляем новое положение относительно друг друга
var isShortLessThenLong = ShortSma.LastValue < LongSma.LastValue;
// если произошло пересечение
if (_isShortLessThenLong != isShortLessThenLong)
{
// если короткая меньше чем длинная, то продажа, иначе, покупка.
var direction = isShortLessThenLong ? OrderDirections.Sell : OrderDirections.Buy;
// создаем заявку
var order = this.CreateOrder(direction, Security.GetMarketPrice(direction), Volume);
// регистрируем заявку (обычным способом - лимитированной заявкой)
// RegisterOrder(order);
// регистрируем заявку (через котирование)
// var strategy = new MarketQuotingStrategy(order, new Unit(), new Unit());
var strategy = new MarketQuotingStrategy(order, new Unit(), new Unit());
ChildStrategies.Add(strategy);
// запоминаем текущее положение относительно друг друга
_isShortLessThenLong = isShortLessThenLong;
}
}
}
14:19:22.150 | | REAL_ExSma | Новая Buy сделка 54517197 по цене 163810 на 1 заявки 50757477.
14:22:07.413 | | MQS | Стратегия запущена.
14:22:07.416 | | MQS | Котирование на Sell объема 1.
14:22:07.416 | | MQS | Цена текущей NULL и лучшей 163755.
14:22:07.416 | | MQS | Лучший бид 163745 и лучший аск 163755.
14:22:07.416 | | MQS | Регистрация новой заявки на Sell с ценой 163755 и объемом 1.
14:22:07.418 | | MQS | Заявка 50757480 на Sell отправлена с ценой 163755 объемом 1.
14:22:07.486 | Warning | MQS | Заявка 50757480 в процессе регистрации.
14:22:07.603 | | MQS | Заявка 50757480 принята биржей.
14:22:07.631 | | MQS | Цена текущей 163755 и лучшей 163740.
14:22:07.631 | | MQS | Лучший бид 163720 и лучший аск 163740.
14:22:07.633 | | MQS | Котирование заявки 50757480 на Sell с ценой 163755 объемом 1.
14:22:07.643 | | MQS | Перекотирование зарегистрировано для заявки 50757481 на Sell с ценой 163740 объемом 1.
14:22:07.733 | | MQS | Цена текущей 163740 и лучшей 163755.
14:22:07.733 | | MQS | Лучший бид 163720 и лучший аск 163755.
14:22:07.736 | | MQS | Котирование заявки 50757481 на Sell с ценой 163740 объемом 1.
14:22:07.738 | | MQS | Перекотирование зарегистрировано для заявки 50757482 на Sell с ценой 163755 объемом 1.
14:22:07.811 | | MQS | Заявка 50757482 принята биржей.
14:22:07.963 | | MQS | Цена текущей 163755 и лучшей 163740.
14:22:07.963 | | MQS | Лучший бид 163730 и лучший аск 163740.
14:22:07.963 | | MQS | Котирование заявки 50757482 на Sell с ценой 163755 объемом 1.
14:22:07.968 | | MQS | Перекотирование зарегистрировано для заявки 50757483 на Sell с ценой 163740 объемом 1.
14:22:13.300 | | MQS | Цена текущей 163740 и лучшей 163805.
14:22:13.301 | | MQS | Лучший бид 163720 и лучший аск 163805.
14:22:13.301 | | MQS | Котирование заявки 50757483 на Sell с ценой 163740 объемом 1.
14:22:13.318 | | MQS | Перекотирование зарегистрировано для заявки 50757484 на Sell с ценой 163805 объемом 1.
14:22:13.321 | Error | MQS | Заявка 50757483 не была принята по причине System.InvalidOperationException: Перестановка заявки 50757483 не возможно в силу того что удовлетворена исходная заявка..
14:22:13.321 | Error | MQS | Заявка 50757484 не была принята по причине System.InvalidOperationException: Перестановка заявки 50757484 не возможно в силу того что удовлетворена исходная заявка..
14:22:13.321 | Error | MQS | Заявка 50757483 не принята биржей по причине 'Перестановка заявки 50757483 не возможно в силу того что удовлетворена исходная заявка.'.
14:22:13.323 | Warning | MQS | Заявка 50757483 устарела.
14:22:13.323 | Error | MQS | Заявка 50757484 не принята биржей по причине 'Перестановка заявки 50757484 не возможно в силу того что удовлетворена исходная заявка.'.
14:22:13.323 | | MQS | Цена текущей NULL и лучшей 163805.
14:22:13.323 | | MQS | Лучший бид 163720 и лучший аск 163805.
14:22:13.323 | | MQS | Регистрация новой заявки на Sell с ценой 163805 и объемом 1.
14:22:13.331 | | MQS | Заявка 50757485 на Sell отправлена с ценой 163805 объемом 1.
14:22:13.333 | | REAL_ExSma | Новая позиция -1.
14:22:13.334 | | MQS | Новая позиция -1.
14:22:13.335 | | MQS | Позиция изменилась на -1. Оставшийся объем 0.
14:22:13.336 | | MQS | Заканчиваем котирование.
14:22:13.336 | | MQS | Отмена заявки 50757480.
14:22:13.341 | | MQS | Стратегия останавливается.
14:22:13.342 | | MQS | Стратегия остановлена.
14:22:13.352 | | REAL_ExSma | Новая Sell сделка 54517392 по цене 163740 на 1 заявки 50757482.