← 戻る

тестирование на тиках 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

Добрый день,

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