тестирование на тиках HistoryEmulationConnector
Инструмент, портфель, коннектор, свечи делаю так
Code
_security = new Security
{
Id = "BRZ7@FORTS",
Code = "BRZ7",
PriceStep = 0.01m,
Board = ExchangeBoard.Micex
};
_portfolio = new Portfolio { Name = "test account", BeginValue = 1000000 };
StorageRegistry storageRegistry = new StorageRegistry
{
DefaultDrive = new LocalMarketDataDrive(@"d:\S#History\"),
};
_connector = new HistoryEmulationConnector(new[] { _security }, new[] { _portfolio })
{
HistoryMessageAdapter =
{
StorageRegistry=storageRegistry,
StorageFormat = StorageFormats.Csv,
StartDate = DateTimePickerBegin.Value.Value.ChangeKind(DateTimeKind.Utc),
StopDate = DateTimePickerEnd.Value.Value.ChangeKind(DateTimeKind.Utc),
}
};
_connector.LogLevel = LogLevels.Info;
_logManager.Sources.Add(_connector);
_candleSeries = new CandleSeries(CandleSettingsEditor.Settings.CandleType, _security, CandleSettingsEditor.Settings.Arg)
{
BuildCandlesMode = BuildCandlesModes.Build,
BuildCandlesFrom = MarketDataTypes.Trades,
};
стратегия самая простая если свеча красная покупаем по рынку, если зеленая продаем по рынку.
Code
public class MyStrategy : Strategy
{
CandleSeries _candleSeries;
private ICandleManager _candleManager;
public MyStrategy(CandleSeries candleSeries)
{
_candleSeries = candleSeries;
}
protected override void OnStarted()
{
_candleManager = this.GetCandleManager();
_candleManager.WhenCandlesFinished(_candleSeries).Do(_candleManager_Processing).Apply(this);
base.OnStarted();
}
private void _candleManager_Processing(Candle candle)
{
if (candle.OpenPrice < candle.ClosePrice && Position >= 0)
{
RegisterOrder(this.SellAtMarket(Volume + Math.Abs(Position)));
}
else
if (candle.OpenPrice > candle.ClosePrice && Position <= 0)
{
RegisterOrder(this.BuyAtMarket(Volume + Math.Abs(Position)));
}
}
}
В сделках вижу что есть отмененные заявки.
А в логах говорит, что
или так
Вопросы
Как так происходит?
Почему на эмуляции неудовлетворенна заявка с таким маленьким объемом?
Почему в ошибке он говорит что объем 0? Я проверял много раз и объем там не может быть 0.
Такому тестированию доверять как то не получается...