/// <summary> /// Creates the brokerage under test and connects it /// </summary> /// <returns>A connected brokerage instance</returns> protected override IBrokerage CreateBrokerage(IOrderProvider orderProvider, IHoldingsProvider holdingsProvider) { var oandaBrokerage = new OandaBrokerage(orderProvider, 0); var tokens = OandaBrokerageFactory.GetTokens(); var environment = Config.Get("oanda-environment"); if (environment == "sandbox") { var requestString = EndpointResolver.ResolveEndpoint(Environment.Sandbox, Server.Account) + "accounts"; var accountResponse = oandaBrokerage.MakeRequest<AccountResponse>(requestString, "POST"); oandaBrokerage.SetAccountId(accountResponse.accountId); oandaBrokerage.SetEnvironment("sandbox"); oandaBrokerage.SetUserName(accountResponse.username); } else { oandaBrokerage.SetAccountId(Convert.ToInt32(Config.Get("oanda-account-id"))); oandaBrokerage.SetEnvironment(Config.Get("oanda-environment")); } var qcUserId = OandaBrokerageFactory.Configuration.QuantConnectUserId; oandaBrokerage.SetTokens(qcUserId, tokens.AccessToken, tokens.IssuedAt, TimeSpan.FromSeconds(tokens.ExpiresIn)); oandaBrokerage.InitializeInstrumentSecurityTypeMap(); // keep the tokens up to date in the event of a refresh oandaBrokerage.SessionRefreshed += (sender, args) => { File.WriteAllText(OandaBrokerageFactory.TokensFile, JsonConvert.SerializeObject(args, Formatting.Indented)); }; return oandaBrokerage; }
/// <summary> /// Creates the brokerage under test and connects it /// </summary> /// <returns>A connected brokerage instance</returns> protected override IBrokerage CreateBrokerage(IOrderProvider orderProvider, ISecurityProvider securityProvider) { var environment = Config.Get("oanda-environment").ConvertTo<Environment>(); var accessToken = Config.Get("oanda-access-token"); var accountId = Config.Get("oanda-account-id"); return new OandaBrokerage(orderProvider, securityProvider, environment, accessToken, accountId); }
/// <summary> /// Creates the brokerage under test /// </summary> /// <returns>A connected brokerage instance</returns> protected override IBrokerage CreateBrokerage(IOrderProvider orderProvider, ISecurityProvider securityProvider) { var server = Config.Get("fxcm-server"); var terminal = Config.Get("fxcm-terminal"); var userName = Config.Get("fxcm-user-name"); var password = Config.Get("fxcm-password"); var accountId = Config.Get("fxcm-account-id"); return new FxcmBrokerage(orderProvider, securityProvider, server, terminal, userName, password, accountId); }
/// <summary> /// Creates a new instance of the <see cref="FxcmBrokerage"/> class /// </summary> /// <param name="orderProvider">The order provider</param> /// <param name="securityProvider">The holdings provider</param> /// <param name="server">The url of the server</param> /// <param name="terminal">The terminal name</param> /// <param name="userName">The user name (login id)</param> /// <param name="password">The user password</param> /// <param name="accountId">The account id</param> public FxcmBrokerage(IOrderProvider orderProvider, ISecurityProvider securityProvider, string server, string terminal, string userName, string password, string accountId) : base("FXCM Brokerage") { _orderProvider = orderProvider; _securityProvider = securityProvider; _server = server; _terminal = terminal; _userName = userName; _password = password; _accountId = accountId; }
public void Add(IConfig config) { columns.AddRange(config.GetColumns()); exporters.AddRange(config.GetExporters()); loggers.AddRange(config.GetLoggers()); diagnosers.AddRange(config.GetDiagnosers()); analysers.AddRange(config.GetAnalysers()); jobs.AddRange(config.GetJobs()); validators.AddRange(config.GetValidators()); orderProvider = config.GetOrderProvider() ?? orderProvider; KeepBenchmarkFiles |= config.KeepBenchmarkFiles; }
/// <summary> /// Initializes a new instance of the <see cref="OandaBrokerage"/> class. /// </summary> /// <param name="orderProvider">The order provider.</param> /// <param name="securityProvider">The holdings provider.</param> /// <param name="environment">The Oanda environment (Trade or Practice)</param> /// <param name="accessToken">The Oanda access token (can be the user's personal access token or the access token obtained with OAuth by QC on behalf of the user)</param> /// <param name="accountId">The account identifier.</param> public OandaBrokerage(IOrderProvider orderProvider, ISecurityProvider securityProvider, Environment environment, string accessToken, int accountId) : base("Oanda Brokerage") { _orderProvider = orderProvider; _securityProvider = securityProvider; if (environment != Environment.Trade && environment != Environment.Practice) throw new NotSupportedException("Oanda Environment not supported: " + environment); _environment = environment; _accessToken = accessToken; _accountId = accountId; }
/// <summary> /// Creates a new instance of the <see cref="FxcmBrokerage"/> class /// </summary> /// <param name="orderProvider">The order provider</param> /// <param name="securityProvider">The holdings provider</param> /// <param name="server">The url of the server</param> /// <param name="terminal">The terminal name</param> /// <param name="userName">The user name (login id)</param> /// <param name="password">The user password</param> /// <param name="accountId">The account id</param> public FxcmBrokerage(IOrderProvider orderProvider, ISecurityProvider securityProvider, string server, string terminal, string userName, string password, string accountId) : base("FXCM Brokerage") { _orderProvider = orderProvider; _securityProvider = securityProvider; _server = server; _terminal = terminal; _userName = userName; _password = password; _accountId = accountId; HistoryResponseTimeout = 5000; MaximumHistoryRetryAttempts = 1; }
protected override IBrokerage CreateBrokerage(IOrderProvider orderProvider, ISecurityProvider securityProvider) { if (!_manualGatewayControl && !_gatewayLaunched) { _gatewayLaunched = true; InteractiveBrokersGatewayRunner.Start(Config.Get("ib-controller-dir"), Config.Get("ib-tws-dir"), Config.Get("ib-user-name"), Config.Get("ib-password"), Config.GetBool("ib-use-tws") ); } return new InteractiveBrokersBrokerage(orderProvider, securityProvider); }
/// <summary> /// Creates the brokerage under test /// </summary> /// <returns>A connected brokerage instance</returns> protected override IBrokerage CreateBrokerage(IOrderProvider orderProvider, ISecurityProvider securityProvider) { var accountID = TradierBrokerageFactory.Configuration.AccountID; var tradier = new TradierBrokerage(orderProvider, securityProvider, accountID); var qcUserID = TradierBrokerageFactory.Configuration.QuantConnectUserID; var tokens = TradierBrokerageFactory.GetTokens(); tradier.SetTokens(qcUserID, tokens.AccessToken, tokens.RefreshToken, tokens.IssuedAt, TimeSpan.FromSeconds(tokens.ExpiresIn)); // keep the tokens up to date in the event of a refresh tradier.SessionRefreshed += (sender, args) => { File.WriteAllText(TradierBrokerageFactory.TokensFile, JsonConvert.SerializeObject(args, Formatting.Indented)); }; return tradier; }
/// <summary> /// Creates the brokerage under test and connects it /// </summary> /// <returns>A connected brokerage instance</returns> protected abstract IBrokerage CreateBrokerage(IOrderProvider orderProvider, IHoldingsProvider holdingsProvider);
/// <summary> /// Initializes a new instance of the <see cref="OandaRestApiV1"/> class. /// </summary> /// <param name="symbolMapper">The symbol mapper.</param> /// <param name="orderProvider">The order provider.</param> /// <param name="securityProvider">The holdings provider.</param> /// <param name="environment">The Oanda environment (Trade or Practice)</param> /// <param name="accessToken">The Oanda access token (can be the user's personal access token or the access token obtained with OAuth by QC on behalf of the user)</param> /// <param name="accountId">The account identifier.</param> /// <param name="agent">The Oanda agent string</param> public OandaRestApiV1(OandaSymbolMapper symbolMapper, IOrderProvider orderProvider, ISecurityProvider securityProvider, Environment environment, string accessToken, string accountId, string agent) : base(symbolMapper, orderProvider, securityProvider, environment, accessToken, accountId, agent) { }
public Person4ManagerController(IEmpProvider empProvider, ICustomerProvider customerProvider, IPowerCheckProvider powerCheckProvider, IOrderProvider orderProvider) { _empProvider = empProvider; _customerProvider = customerProvider; _powerCheckProvider = powerCheckProvider; _orderProvider = orderProvider; }
/// <summary> /// Initializes a new instance of the <see cref="DefaultBrokerageModel"/> class /// </summary> /// <param name="orderProvider">The order provider</param> /// <param name="accountType">The type of account to be modelled, defaults to /// <see cref="AccountType.Cash"/></param> public AlpacaBrokerageModel(IOrderProvider orderProvider, AccountType accountType = AccountType.Margin) : base(accountType) { _orderProvider = orderProvider; }
/// <summary> /// Gets a new instance of the <see cref="TradierBrokerageModel"/> /// </summary> /// <param name="orderProvider">The order provider</param> public override IBrokerageModel GetBrokerageModel(IOrderProvider orderProvider) => new TradierBrokerageModel();
public override IBrokerageModel GetBrokerageModel(IOrderProvider orderProvider) => new BrokerageTransactionHandlerTests.BrokerageTransactionHandlerTests.TestBrokerageModel();
public static IConfig With(this IConfig config, IOrderProvider provider) => config.With(m => m.Set(provider));
/// <summary> /// Creates a new InteractiveBrokersBrokerage using values from configuration: /// ib-account (required) /// ib-host (optional, defaults to LOCALHOST) /// ib-port (optional, defaults to 4001) /// ib-agent-description (optional, defaults to Individual) /// </summary> /// <param name="orderProvider">An instance of IOrderProvider used to fetch Order objects by brokerage ID</param> /// <param name="securityProvider">The security provider used to give access to algorithm securities</param> public InteractiveBrokersBrokerage(IOrderProvider orderProvider, ISecurityProvider securityProvider) : this( orderProvider, securityProvider, Config.Get("ib-account"), Config.Get("ib-host", "LOCALHOST"), Config.GetInt("ib-port", 4001), Config.GetValue("ib-agent-description", IB.AgentDescription.Individual) ) { }
/// <summary> /// Initializes a new instance of the <see cref="OandaBrokerage"/> class. /// </summary> /// <param name="orderProvider">The order provider.</param> /// <param name="securityProvider">The holdings provider.</param> /// <param name="aggregator">consolidate ticks</param> /// <param name="environment">The Oanda environment (Trade or Practice)</param> /// <param name="accessToken">The Oanda access token (can be the user's personal access token or the access token obtained with OAuth by QC on behalf of the user)</param> /// <param name="accountId">The account identifier.</param> /// <param name="agent">The Oanda agent string</param> public OandaBrokerage(IOrderProvider orderProvider, ISecurityProvider securityProvider, IDataAggregator aggregator, Environment environment, string accessToken, string accountId, string agent = OandaRestApiBase.OandaAgentDefaultValue) : base("Oanda Brokerage") { Initialize(orderProvider, securityProvider, aggregator, environment, accessToken, accountId, agent = OandaRestApiBase.OandaAgentDefaultValue); }
/// <summary> /// Creates a new IBrokerage instance and set ups the environment for the brokerage /// </summary> /// <param name="brokerageData">Brokerage data containing necessary parameters for initialization</param> /// <param name="orderProvider">IOrderMapping instance to maintain IB -> QC order id mapping</param> /// <returns>A new brokerage instance</returns> public IBrokerage CreateBrokerage(Dictionary<string, string> brokerageData, IOrderProvider orderProvider) { var errors = new List<string>(); // read values from the brokerage datas var useTws = Config.GetBool("ib-use-tws"); var port = Config.GetInt("ib-port", 4001); var host = Config.Get("ib-host", "127.0.0.1"); var twsDirectory = Config.Get("ib-tws-dir", "C:\\Jts"); var ibControllerDirectory = Config.Get("ib-controller-dir", "C:\\IBController"); var account = Read<string>(brokerageData, "ib-account", errors); var userID = Read<string>(brokerageData, "ib-user-name", errors); var password = Read<string>(brokerageData, "ib-password", errors); var agentDescription = Read<AgentDescription>(brokerageData, "ib-agent-description", errors); if (errors.Count != 0) { // if we had errors then we can't create the instance throw new Exception(string.Join(Environment.NewLine, errors)); } // launch the IB gateway InteractiveBrokersGatewayRunner.Start(ibControllerDirectory, twsDirectory, userID, password, useTws); return new InteractiveBrokersBrokerage(orderProvider, account, host, port, agentDescription); }
/// <summary> /// Gets the order by its brokerage id /// </summary> /// <param name="orderProvider">The order provider to search</param> /// <param name="brokerageId">The brokerage id to fetch</param> /// <returns>The first order matching the brokerage id, or null if no match is found</returns> public static Order GetOrderByBrokerageId(this IOrderProvider orderProvider, long brokerageId) { return(orderProvider.GetOrderByBrokerageId(brokerageId.ToStringInvariant())); }
/// <summary> /// Creates the brokerage under test and connects it /// </summary> /// <returns>A connected brokerage instance</returns> protected abstract IBrokerage CreateBrokerage(IOrderProvider orderProvider, ISecurityProvider securityProvider);
/// <summary> /// Initializes a new instance of the <see cref="PartialMarketFillModel"/> class /// </summary> /// <code> /// // split market orders into two fills /// Securities["SPY"].FillModel = new PartialMarketFillModel(Transactions, 2); /// </code> /// <param name="orderProvider">The order provider used for getting order tickets</param> /// <param name="numberOfFills"></param> public PartialMarketFillModel(IOrderProvider orderProvider, int numberOfFills = 1) { _orderProvider = orderProvider; _percent = 1m / numberOfFills; }
/// <summary> /// Gets a new instance of the <see cref="InteractiveBrokersBrokerageModel"/> /// </summary> /// <param name="orderProvider">The order provider</param> public override IBrokerageModel GetBrokerageModel(IOrderProvider orderProvider) => new InteractiveBrokersBrokerageModel();
public OrdersController(IOrderProvider provider) => _orderProvider = provider;
protected override IBrokerage CreateBrokerage(IOrderProvider orderProvider, ISecurityProvider securityProvider) { return(new InteractiveBrokersBrokerage(new QCAlgorithm(), orderProvider, securityProvider)); }
/// <summary> /// Gets a new instance of the <see cref="AlpacaBrokerageModel"/> /// </summary> /// <param name="orderProvider">The order provider</param> public override IBrokerageModel GetBrokerageModel(IOrderProvider orderProvider) => new AlpacaBrokerageModel(orderProvider);
public void Set(IOrderProvider provider) => orderProvider = provider ?? orderProvider;
public OrderController(IOrderProvider provider) { _provider = provider; }
public BookingService(IOrderProvider orderProvider) { m_order_provider = orderProvider; }
/// <summary> /// Gets the order by its brokerage id /// </summary> /// <param name="orderProvider">The order provider to search</param> /// <param name="brokerageId">The brokerage id to fetch</param> /// <returns>The first order matching the brokerage id, or null if no match is found</returns> public static Order GetOrderByBrokerageId(this IOrderProvider orderProvider, int brokerageId) { return(orderProvider.GetOrderByBrokerageId(brokerageId.ToString())); }
private static void SaveListOfTrades(IOrderProvider transactions, string csvFileName) { var orders = transactions.GetOrders(x => x.Status.IsFill()); var path = Path.GetDirectoryName(csvFileName); if (path != null && !Directory.Exists(path)) Directory.CreateDirectory(path); using (var writer = new StreamWriter(csvFileName)) { foreach (var order in orders) { var line = string.Format("{0},{1},{2},{3},{4}", order.Time.ToString("yyyy-MM-dd HH:mm:ss"), order.Symbol.Value, order.Direction, order.Quantity, order.Price); writer.WriteLine(line); } } }
public OrdersController(IOrderProvider orderProvider) { this.orderProvider = orderProvider; }
/// <summary> /// Gets a brokerage model that can be used to model this brokerage's unique behaviors /// </summary> /// <param name="orderProvider">The order provider</param> public abstract IBrokerageModel GetBrokerageModel(IOrderProvider orderProvider);
public OrderController(IOrderProvider orderProvider) { _orderProvider = orderProvider; }
/// <summary> /// Create a new instance /// </summary> /// <param name="orderProvider">The order provider used to determine if it is safe to remove a security</param> public PendingRemovalsManager(IOrderProvider orderProvider) { _orderProvider = orderProvider; _pendingRemovals = new Dictionary <Universe, List <Security> >(); }
/// <summary> /// Gets a new instance of the <see cref="InteractiveBrokersBrokerageModel"/> /// </summary> /// <param name="orderProvider">The order provider</param> public override IBrokerageModel GetBrokerageModel(IOrderProvider orderProvider) => new DefaultBrokerageModel();
public OrderController(IAccessTokenService accessTokenService, IOrderProcessingService orderProcessingService, IOrderProvider orderProvider) { m_token_service = accessTokenService; m_order_processing = orderProcessingService; m_order_provider = orderProvider; }
public ProductService(IProductProvider productProvider, IOrderProvider orderProvider, IOfferProvider offerProvider) { _productProvider = productProvider; _orderProvider = orderProvider; _offerProvider = offerProvider; }
/// <summary> /// Creates a new <see cref="IBrokerageModel"/> for the specified <see cref="BrokerageName"/> /// </summary> /// <param name="orderProvider">The order provider</param> /// <param name="brokerage">The name of the brokerage</param> /// <param name="accountType">The account type</param> /// <returns>The model for the specified brokerage</returns> public static IBrokerageModel Create(IOrderProvider orderProvider, BrokerageName brokerage, AccountType accountType) { switch (brokerage) { case BrokerageName.Default: return(new DefaultBrokerageModel(accountType)); case BrokerageName.InteractiveBrokersBrokerage: return(new InteractiveBrokersBrokerageModel(accountType)); case BrokerageName.TradierBrokerage: return(new TradierBrokerageModel(accountType)); case BrokerageName.OandaBrokerage: return(new OandaBrokerageModel(accountType)); case BrokerageName.FxcmBrokerage: return(new FxcmBrokerageModel(accountType)); case BrokerageName.Bitfinex: return(new BitfinexBrokerageModel(accountType)); case BrokerageName.Binance: return(new BinanceBrokerageModel(accountType)); case BrokerageName.BinanceUS: return(new BinanceUSBrokerageModel(accountType)); case BrokerageName.GDAX: return(new GDAXBrokerageModel(accountType)); case BrokerageName.AlphaStreams: return(new AlphaStreamsBrokerageModel(accountType)); case BrokerageName.Zerodha: return(new ZerodhaBrokerageModel(accountType)); case BrokerageName.Atreyu: return(new AtreyuBrokerageModel(accountType)); case BrokerageName.TradingTechnologies: return(new TradingTechnologiesBrokerageModel(accountType)); case BrokerageName.Samco: return(new SamcoBrokerageModel(accountType)); case BrokerageName.Kraken: return(new KrakenBrokerageModel(accountType)); case BrokerageName.Exante: return(new ExanteBrokerageModel(accountType)); case BrokerageName.FTX: return(new FTXBrokerageModel(accountType)); case BrokerageName.FTXUS: return(new FTXUSBrokerageModel(accountType)); default: throw new ArgumentOutOfRangeException(nameof(brokerage), brokerage, null); } }
/// <summary> /// Creates a new InteractiveBrokersBrokerage from the specified values /// </summary> /// <param name="orderProvider">An instance of IOrderProvider used to fetch Order objects by brokerage ID</param> /// <param name="securityProvider">The security provider used to give access to algorithm securities</param> /// <param name="account">The Interactive Brokers account name</param> /// <param name="host">host name or IP address of the machine where TWS is running. Leave blank to connect to the local host.</param> /// <param name="port">must match the port specified in TWS on the Configure>API>Socket Port field.</param> /// <param name="agentDescription">Used for Rule 80A describes the type of trader.</param> public InteractiveBrokersBrokerage(IOrderProvider orderProvider, ISecurityProvider securityProvider, string account, string host, int port, IB.AgentDescription agentDescription = IB.AgentDescription.Individual) : base("Interactive Brokers Brokerage") { _orderProvider = orderProvider; _securityProvider = securityProvider; _account = account; _host = host; _port = port; _clientID = IncrementClientID(); _agentDescription = agentDescription; _client = new IB.IBClient(); // set up event handlers _client.UpdatePortfolio += HandlePortfolioUpdates; _client.OrderStatus += HandleOrderStatusUpdates; _client.UpdateAccountValue += HandleUpdateAccountValue; _client.Error += HandleError; _client.TickPrice += HandleTickPrice; _client.TickSize += HandleTickSize; _client.CurrentTime += HandleBrokerTime; // we need to wait until we receive the next valid id from the server _client.NextValidId += (sender, e) => { // only grab this id when we initialize, and we'll manually increment it here to avoid threading issues if (_nextValidID == 0) { _nextValidID = e.OrderId; _waitForNextValidID.Set(); } Log.Trace("InteractiveBrokersBrokerage.HandleNextValidID(): " + e.OrderId); }; }
protected override IBrokerage CreateBrokerage(IOrderProvider orderProvider, ISecurityProvider securityProvider) { return(new InteractiveBrokersBrokerage(new QCAlgorithm(), orderProvider, securityProvider, new AggregationManager(), new LocalDiskMapFileProvider())); }
/// <summary> /// Gets a new instance of the <see cref="OandaBrokerageModel"/> /// </summary> /// <param name="orderProvider">The order provider</param> public override IBrokerageModel GetBrokerageModel(IOrderProvider orderProvider) => new OandaBrokerageModel();
public Service(IOrderProvider orderProvider) { _orderProvider = orderProvider; }