コード例 #1
0
        private IReadOnlyCollection <DataGenerationPlan> Plan(
            IReadOnlyCollection <string> sedols,
            ExchangeDto dto,
            DateTime from)
        {
            if (!sedols?.Any() ?? true)
            {
                return(new DataGenerationPlan[0]);
            }

            var result = new List <DataGenerationPlan>();

            var i = 1;

            foreach (var sedol in sedols)
            {
                var openTime            = from.Add(dto.MarketOpenTime).AddMinutes(i * 60);
                var intervalInstruction = new IntervalEquityPriceInstruction(
                    sedol,
                    openTime.TimeOfDay,
                    openTime.TimeOfDay.Add(TimeSpan.FromMinutes(45)),
                    TimeSpan.FromMinutes(1),
                    from.Date.Add(openTime.TimeOfDay),
                    from.Date.Add(openTime.TimeOfDay.Add(TimeSpan.FromMinutes(45))),
                    PriceManipulation.Increase,
                    0.03m);

                var newPlan = new DataGenerationPlan(sedol, intervalInstruction);
                result.Add(newPlan);
                i++;
            }

            return(result);
        }
コード例 #2
0
        private DataGenerationPlan BuildPlan(IReadOnlyCollection <string> sedols, DateTime from, ExchangeDto dto)
        {
            if (sedols == null || !sedols.Any())
            {
                return(new DataGenerationPlan(
                           null,
                           new IntervalEquityPriceInstruction(
                               string.Empty,
                               TimeSpan.MinValue,
                               TimeSpan.MinValue,
                               TimeSpan.FromDays(1),
                               DateTime.MinValue,
                               DateTime.MinValue,
                               PriceManipulation.Consistent,
                               0m)));
            }

            var sedol    = sedols.FirstOrDefault();
            var openTime = from.Add(dto.MarketOpenTime).AddMinutes(60);
            var plan     = new DataGenerationPlan(
                sedol,
                new IntervalEquityPriceInstruction(
                    sedol,
                    openTime.TimeOfDay,
                    openTime.TimeOfDay.Add(TimeSpan.FromMinutes(30)),
                    TimeSpan.FromMinutes(1),
                    from.Date.Add(openTime.TimeOfDay),
                    from.Date.Add(openTime.TimeOfDay.Add(TimeSpan.FromMinutes(30))),
                    PriceManipulation.Increase,
                    0.01m));

            return(plan);
        }
コード例 #3
0
 public TradingWashTradeProcess(ITradeStrategy <Order> orderStrategy, DataGenerationPlan plan, ILogger logger)
     : base(logger, orderStrategy)
 {
     this._plan = plan;
     this._thirdGroupActivation = this._plan.EquityInstructions.TerminationInUtc.AddHours(4);
 }
コード例 #4
0
 public IOrderDataGenerator Build(DataGenerationPlan plan)
 {
     return(new TradingWashTradeProcess(new StubTradeStrategy(), plan, this._logger));
 }
コード例 #5
0
 public PlanEquityStrategy(DataGenerationPlan plan, IEquityDataGeneratorStrategy baseStrategy)
 {
     this._plan         = plan ?? throw new ArgumentNullException(nameof(plan));
     this._baseStrategy = baseStrategy ?? throw new ArgumentNullException(nameof(baseStrategy));
 }