← Назад

тестирование на тиках HistoryEmulationConnector

Инструмент, портфель, коннектор, свечи делаю так


            _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,
            };

стратегия самая простая если свеча красная покупаем по рынку, если зеленая продаем по рынку.


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)));
            }
        }
    }

В сделках вижу что есть отмененные заявки. image8134.png А в логах говорит, что image7371.png или так image8988.png Вопросы Как так происходит? Почему на эмуляции неудовлетворенна заявка с таким маленьким объемом? Почему в ошибке он говорит что объем 0? Я проверял много раз и объем там не может быть 0.

Такому тестированию доверять как то не получается...

Комментарии (1)

Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий

Support
Support

Добрый день,

Пришлите, пожалуйста, пример для воспроизведения ошибки.