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