예제 #1
0
        public string Export(GapStrategy strategy)
        {
            GapStrategy = strategy;
            KnownTypes.Clear();

            var header = new StringBuilder();

            var definedTypes = GetExportableTypes(nameof(FFXIVClientStructs));

            // Make forward references for everything, cycles are bad, detecting them is harder.
            header.AppendLine("// Forward References");
            foreach (var type in definedTypes)
            {
                if (type.IsStruct() && !type.IsFixedBuffer())
                {
                    header.AppendLine($"struct {FixFullName(type)};");
                }
            }

            header.AppendLine();
            header.AppendLine("// Definitions");
            foreach (var type in definedTypes)
            {
                ProcessType(type, header);
            }

            return(header.ToString());
        }
예제 #2
0
        protected async override void Handle(PlayGapCommand request)
        {
            if ((DateTime.Now.Hour == 8 && DateTime.Now.Minute > 56) && DateTime.Now.Hour < 9) //EU
            {
                try
                {
                    var account = await _accountRepository.GetAccountAsync("11181613");

                    var instruments = await _instrumentRepository.GetInstruments();

                    var symbolsEu     = request.SymbolsToPlay.BottomGapSymbolEu.Union(request.SymbolsToPlay.TopGapSymbolEu);
                    var instrumentsEu = instruments.Where(x => symbolsEu.Contains(x.Symbol)).ToList();
                    if (instrumentsEu.Any())
                    {
                        var chartsAsync = instrumentsEu.Select(async x => await _chartRepository.GetChartAsync(x.Symbol, "M1", 2250 * 5, x.Precision));
                        var charts      = await Task.WhenAll(chartsAsync);

                        foreach (var chart in charts)
                        {
                            var instrument  = instruments.FirstOrDefault(x => x.Symbol == chart.Symbol);
                            var gapStrategy = new GapStrategy(instrument, 1000, account);
                            gapStrategy.Play(chart);
                        }
                        _logger.LogInformation($"Play eu gap - {instrumentsEu.Aggregate("", (current, next) => current + ", " + next.Symbol)}");
                    }
                    await _mediator.DispatchDomainEventsAsync(account);

                    _logger.LogInformation($"No symbols eu to play gap");
                }
                catch (Exception e)
                {
                    _logger.LogError(e, "Error gap");
                }
            }
            if ((DateTime.Now.Hour == 15 && DateTime.Now.Minute > 26) && (DateTime.Now.Hour >= 15 && DateTime.Now.Minute > 30)) // US
            {
                try
                {
                    var account = await _accountRepository.GetAccountAsync("11181613");

                    var instruments = await _instrumentRepository.GetInstruments();

                    var symbolsEu     = request.SymbolsToPlay.BottomGapSymbolUs.Union(request.SymbolsToPlay.TopGapSymbolUs);
                    var instrumentsUs = instruments.Where(x => symbolsEu.Contains(x.Symbol)).ToList();
                    if (instrumentsUs.Any())
                    {
                        var chartsAsync = instrumentsUs.Select(async x => await _chartRepository.GetChartAsync(x.Symbol, "M1", 2250 * 5, x.Precision));
                        var charts      = await Task.WhenAll(chartsAsync);

                        foreach (var chart in charts)
                        {
                            var instrument  = instruments.FirstOrDefault(x => x.Symbol == chart.Symbol);
                            var gapStrategy = new GapStrategy(instrument, 1000, account);
                            gapStrategy.Play(chart);
                        }
                        _logger.LogInformation($"Play us gap - {instrumentsUs.Aggregate("", (current, next) => current + ", " + next.Symbol)}");
                    }
                    await _mediator.DispatchDomainEventsAsync(account);

                    _logger.LogInformation($"No symbols us to play gap");
                }
                catch (Exception e)
                {
                    _logger.LogError(e, "Error gap");
                }
            }
        }