コード例 #1
0
        public void MarketOrder(SignalInfo signal, IExpert adv)
        {
            try
            {
                if (adv == null)
                {
                    return;
                }
                // decimal priceInOrder = Math.Round(tool.LastPrice + tool.Step * 5, tool.PriceAccuracy);
                // decimal priceInOrder = 0;// Math.Round(tool.LastPrice, tool.PriceAccuracy);
                int qty = (int)adv.Volume();

                var portfolio = Portfolios.Where(x => x.Name == adv.AccountName()).FirstOrDefault();
                if (!Trader.RegisteredPortfolios.Contains(portfolio))
                {
                    Trader.RegisterPortfolio(portfolio);
                }

                Order order = new Order();
                order.Type = OrderTypes.Market;
                var securities = Securities.Where(x => x.Code == adv.Symbol());
                if (securities != null && securities.Count() > 0)
                {
                    order.Security = securities.FirstOrDefault();
                }
                else
                {
                    order.Security      = new Security();
                    order.Security.Code = adv.Symbol();
                    order.Security.Id   = adv.Symbol() + "@FORTS";
                }

                order.Comment   = adv.Comment();
                order.Portfolio = portfolio;

                if (!Trader.RegisteredSecurities.Contains(order.Security))
                {
                    Trader.RegisterSecurity(order.Security);
                    Trader.RegisterTrades(order.Security);
                }

                order.Volume    = qty;
                order.Direction = signal.Value == 0 ? Sides.Buy : Sides.Sell;

                Log(
                    $"Expert <{adv.AccountName()}> On {adv.Symbol()} {order.Direction.ToString()} Register order: lots=" +
                    qty);
                Trader.RegisterOrder(order);
            }
            catch (Exception e)
            {
                Log($"Expert <{adv.AccountName()}> Error registering order: " + e);
            }
        }
コード例 #2
0
        protected SignalInfo ListenSignals(out IExpert quikExpert)
        {
            var advisers = connector.GetRunningAdvisers();

            foreach (var expert in advisers)
            {
                SignalInfo signal = MainService.thisGlobal.ListenSignal(expert.Key, (long)SignalFlags.Expert);
                if (signal != null)
                {
                    quikExpert = expert.Value;
                    return(signal);
                }
            }

            quikExpert = null;
            return(null);
        }
コード例 #3
0
        static void Main(string[] args)
        {
            IFactory WoodenDoorFactory = new WoodenDoorFactory();
            IFactory IronDoorFactory   = new IronDoorFactory();

            IDoor WoodenDoor = WoodenDoorFactory.makeDoor();
            IDoor IronDoor   = IronDoorFactory.makeDoor();

            IExpert Carpenter = WoodenDoorFactory.makeExpert();
            IExpert Welder    = IronDoorFactory.makeExpert();

            WoodenDoor.getDescription();
            Carpenter.getDescription();

            IronDoor.getDescription();
            Welder.getDescription();

            System.Console.ReadLine();
        }
コード例 #4
0
        public void RunProccessor(IJobExecutionContext context)
        {
            while (!connector.IsStopped())
            {
                Thread.Sleep(100);
                if (context.CancellationToken.IsCancellationRequested)
                {
                    return;
                }

                IExpert    expert = null;
                SignalInfo signal = ListenSignals(out expert);
                if (signal != null)
                {
                    switch ((EnumSignals)signal.Id)
                    {
                    case EnumSignals.SIGNAL_ACTIVE_ORDERS:
                    {
                        // MainService.thisGlobal.UpdatePositions(signal.ObjectId, connector.GetActivePositions());
                    }
                    break;

                    case EnumSignals.SIGNAL_MARKET_EXPERT_ORDER:
                    case EnumSignals.SIGNAL_MARKET_MANUAL_ORDER:
                    case EnumSignals.SIGNAL_MARKET_FROMPENDING_ORDER:
                    {
                        //PositionInfo position = JsonConvert.DeserializeObject<PositionInfo>(signal.Data);
                        connector.MarketOrder(signal, expert);
                    }
                    break;

                    case EnumSignals.SIGNAL_CHECK_BALANCE:
                    {
                    }
                    break;
                    }
                }
            }
        }
コード例 #5
0
        public InferencingActionsModel(
            IProfileRepository profileRepository,
            ISettingsRepository settingsRepository,
            IDefaultSettingsProvider defaultSettingsProvider,
            IExpert expert,
            IKnowledgeBaseManager knowledgeBaseManager,
            IDataFilePathProvider dataFilePathProvider,
            IResultLogger resultLogger)
        {
            _profileRepository       = profileRepository ?? throw new ArgumentNullException(nameof(profileRepository));
            _settingsRepository      = settingsRepository ?? throw new ArgumentNullException(nameof(settingsRepository));
            _defaultSettingsProvider = defaultSettingsProvider ?? throw new ArgumentNullException(nameof(defaultSettingsProvider));
            _expert = expert ?? throw new ArgumentNullException(nameof(expert));
            _knowledgeBaseManager = knowledgeBaseManager ?? throw new ArgumentNullException(nameof(knowledgeBaseManager));
            _dataFilePathProvider = dataFilePathProvider ?? throw new ArgumentNullException(nameof(dataFilePathProvider));
            _resultLogger         = resultLogger ?? throw new ArgumentNullException(nameof(resultLogger));

            GetDataCommand          = new RelayCommand(obj => GetData(), obj => true);
            StartInferenceCommand   = new RelayCommand(obj => StartInference(), obj => !string.IsNullOrEmpty(DataFilePath) && SelectedProfile != null && SelectedProfile.Rules.Count != 0);
            GetPartialResultCommand = new RelayCommand(obj => GetPartialResult(), obj => true);
            OpenResultFileCommand   = new RelayCommand(obj => OpenResultFile(), obj => ExpertOpinion != null);

            InitializeState();
        }
コード例 #6
0
		static void AddToFile(IExpert expert)
		{
			IList<IExpert> experts = LoadExpertsFromFile();
			foreach (IExpert e in experts)
			{
				if (FileHelper.IsTheSameFile(e.FileName, expert.FileName))
				{
					return;
				}
			}
			experts.Add(expert);
			SaveExpertsToFile(experts);
		}