/// <summary> /// The control only consumes dataDelivery provider, so that it is not available for sessionless operations too. /// </summary> public NewOrderControl(IQuoteProvider dataProvider, DataSessionInfo session, bool balancedPositionModeVisible, bool balancePositionModeChecked) { InitializeComponent(); _dataProvider = dataProvider; if (_dataProvider != null) { _dataProvider.QuoteUpdateEvent += _dataProvider_OnValuesUpdateEvent; } _balancedPositionModeVisible = balancedPositionModeVisible; _balancePositionModeChecked = balancePositionModeChecked; _session = session; numericUpDownStopLoss.Increment = session.DecimalIncrement; numericUpDownStopLoss.DecimalPlaces = session.DecimalPlaces; numericUpDownSlippage.Increment = session.DecimalIncrement; numericUpDownSlippage.DecimalPlaces = session.DecimalPlaces; numericUpDownTakeProfit.Increment = session.DecimalIncrement; numericUpDownTakeProfit.DecimalPlaces = session.DecimalPlaces; numericUpDownPendingPrice.Increment = session.DecimalIncrement; numericUpDownPendingPrice.DecimalPlaces = session.DecimalPlaces; }
public static string PostUsing(IQuoteProvider quote) { string url = ""; try { string postQueryString = CreateQueryString (quote.Parameters); HttpWebRequest request = (HttpWebRequest) WebRequest.Create (quote.BaseUrl); request.Timeout = 15000; request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.AllowAutoRedirect = quote.ShouldAllowAutoRedirect; UTF8Encoding encoding = new UTF8Encoding (); byte[] data = encoding.GetBytes (postQueryString); request.ContentLength = data.Length; using (Stream newStream = request.GetRequestStream ()) { newStream.Write (data, 0, data.Length); } using (HttpWebResponse response = (HttpWebResponse) request.GetResponse ()) { url = quote.GetQuoteUrlFromResponse (response); } } catch { url = "An error occured while posting quote."; } return url; }
/// <summary> /// Detailed constructor. /// </summary> public ModifyOrderControl(ModeEnum mode, ActiveOrder order) { InitializeComponent(); _provider = order.OrderExecutionProvider; _mode = mode; _order = order; _dataProvider = order.QuoteProvider; _dataProvider.QuoteUpdateEvent += new QuoteProviderUpdateDelegate(_dataProvider_QuoteUpdateEvent); _session = order.SessionInfo.Value; }
public void UnInitialize() { if (_dataProvider != null) { _dataProvider.QuoteUpdateEvent -= new QuoteProviderUpdateDelegate(_dataProvider_QuoteUpdateEvent); _dataProvider = null; } _order = null; }
public StockPricePollingWorker(string id, int pollRateMilliseconds, TriggerController controller, IQuoteProvider quoteProvider) : base(id, pollRateMilliseconds) { if (controller == null) throw new ArgumentNullException("controller"); if (quoteProvider == null) throw new ArgumentNullException("quoteProvider"); _controller = controller; _quoteProvider = quoteProvider; }
/// <summary> /// Constructor, allows direct order initialization. /// </summary> /// <param name="session"></param> /// <param name="initialize">Initialize order on construction. If init fails, exception will occur.</param> public ActiveOrder(ISourceManager manager, ISourceOrderExecution executionProvider, IQuoteProvider quoteProvider, ComponentId dataSourceId, Symbol symbol, bool initialize) { _manager = manager; _symbol = symbol; _dataSourceId = dataSourceId; _executionProvider = executionProvider; _quoteProvider = quoteProvider; State = OrderStateEnum.UnInitialized; if (initialize) { SystemMonitor.CheckThrow(Initialize()); } }
/// <summary> /// /// </summary> /// <param name="provider"></param> protected override void OnQuoteUpdate(IQuoteProvider provider) { lock (this) { if (provider != null) { if (this.AddQuote(provider.CurrentQuote)) { if (this.writer != null) { this.Decide(provider.CurrentQuote); this.writer.WriteLine("{0}, {1}, {2}", provider.Time, this.energyAsk, this.energyBid); } } } } }
/// <summary> /// Constructor, allows direct order initialization. /// </summary> /// <param name="session"></param> /// <param name="initialize">Initialize order on construction. If init fails, exception will occur.</param> public ActiveOrder(ISourceManager manager, ISourceOrderExecution executionProvider, IQuoteProvider quoteProvider, ComponentId dataSourceId, Symbol symbol, bool initialize) { _manager = manager; _symbol = symbol; _dataSourceId = dataSourceId; _executionProvider = executionProvider; _quoteProvider = quoteProvider; State = OrderStateEnum.UnInitialized; if (initialize) { SystemMonitor.CheckThrow(Initialize()); } }
private void toolStripButtonNewOrder_Click(object sender, EventArgs e) { if (_manager == null) { return; } Position position = SelectedPosition; if (position == null) { MessageBox.Show("Select a position to put order to."); return; } if (position.DataDelivery.OperationalState != OperationalStateEnum.Operational || position.OrderExecutionProvider.OperationalState != OperationalStateEnum.Operational) { MessageBox.Show("Position data or order execution provider not operational."); return; } IQuoteProvider quotes = _manager.ObtainQuoteProvider(position.DataDelivery.SourceId, position.Symbol); DataSessionInfo?info = _manager.GetSymbolDataSessionInfo(position.DataDelivery.SourceId, position.Symbol); if (info.HasValue == false) { MessageBox.Show("Failed to establish position session.", Application.ProductName + " - Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } NewOrderControl control = new NewOrderControl(quotes, info.Value, true, true); control.CreatePlaceOrderEvent += new NewOrderControl.CreatePlaceOrderDelegate(SubmitPositionOrder); HostingForm f = new HostingForm("New Order", control); f.FormBorderStyle = FormBorderStyle.FixedSingle; f.MaximizeBox = false; f.ShowDialog(); control.CreatePlaceOrderEvent -= new NewOrderControl.CreatePlaceOrderDelegate(SubmitPositionOrder); }
/// <summary> /// /// </summary> bool GetProviders(Symbol symbol, out IQuoteProvider quotes, out IDataBarHistoryProvider bars) { quotes = _manager.ObtainQuoteProvider(_dataDelivery.SourceId, symbol); RuntimeDataSessionInformation sessionInformation = _dataDelivery.GetSymbolRuntimeSessionInformation(symbol); if (sessionInformation.AvailableDataBarPeriods == null || sessionInformation.AvailableDataBarPeriods.Count == 0) { quotes = null; bars = null; SystemMonitor.OperationError("Can not close order since no suitable data provider sessions found."); return(false); } bars = _manager.ObtainDataBarHistoryProvider(_dataDelivery.SourceId, symbol, sessionInformation.AvailableDataBarPeriods[0]); if (quotes == null || quotes.Ask.HasValue == false || bars == null) { return(false); } return(true); }
/// <summary> /// /// </summary> public virtual bool SetInitialParameters(ISourceManager manager, ComponentId sourceId, ExpertSession session) { _sessionInfo = session.Info; _manager = manager; _sourceId = sourceId; _dataDelivery = manager.ObtainDataDelivery(sourceId); _quote = manager.ObtainQuoteProvider(sourceId, _sessionInfo.Symbol); _tickProvider = manager.ObtainDataTickHistoryProvider(sourceId, _sessionInfo.Symbol); _dataBarProvider = null; bool result = _dataDelivery != null && _quote != null && _tickProvider != null; SystemMonitor.CheckError(result, "Failed to initialize data provider."); return(result); }
protected Subscriber(IAggregateWriter <RequestForQuotes> aggregateWriter, IQuoteProvider quoteProvider) { AggregateWriter = aggregateWriter; QuoteProvider = quoteProvider; }
void _dataProvider_QuoteUpdateEvent(IQuoteProvider provider) { WinFormsHelper.BeginFilteredManagedInvoke(this, TimeSpan.FromMilliseconds(250), UpdateUI); }
/// <summary> /// Update position parameters. /// </summary> /// <param name="symbol"></param> /// <param name="volumeChange">*Directional* volume change, 0 for no change.</param> /// <param name="operationResultMessage"></param> /// <returns></returns> bool UpdatePosition(Symbol symbol, int volumeChange, out string operationResultMessage) { if (_manager == null || _dataDelivery == null || _dataDelivery.SourceId.IsEmpty) { operationResultMessage = "Not initialized properly for operation."; return(false); } // Update the position corresponding to this order. Position position = _tradeEntities.GetPositionBySymbol(symbol, true); if (position == null) { operationResultMessage = "Failed to find corresponding position."; return(false); } IQuoteProvider quotes = position.QuoteProvider; if (quotes == null) { operationResultMessage = "Failed to find corresponding quotation provider."; return(false); } PositionInfo updatedPositionInfo = position.Info; if (updatedPositionInfo.Volume.HasValue == false) { updatedPositionInfo.Volume = 0; } updatedPositionInfo.PendingBuyVolume = 0; updatedPositionInfo.PendingSellVolume = 0; if (volumeChange != 0) { //decimal initialPositionResult = updatedPositionInfo.Result.Value; decimal?operationBasis = quotes.GetOrderOpenQuote(volumeChange > 0); if (operationBasis.HasValue == false) { operationResultMessage = "Failed to establish order operation basis price."; return(false); } else { //SystemMonitor.CheckError(updatedPositionInfo.Basis.HasValue, "Position has no properly assigned basis price."); } if (RecalculatePositionBasis(ref updatedPositionInfo, volumeChange, operationBasis.Value) == false) { operationResultMessage = "Failed to recalculate position parameters."; return(false); } } decimal?pendingPrice = quotes.GetOrderCloseQuote(updatedPositionInfo.Volume > 0); if (updatedPositionInfo.Volume.HasValue && updatedPositionInfo.Volume != 0 && pendingPrice.HasValue && updatedPositionInfo.Basis.HasValue) { updatedPositionInfo.Result = (pendingPrice.Value - updatedPositionInfo.Basis.Value) * updatedPositionInfo.Volume.Value; } else { updatedPositionInfo.Result = 0; } bool positionClosing = (position.Volume > 0 && volumeChange < 0) || (position.Volume < 0 && volumeChange > 0); if (volumeChange != 0 && positionClosing && position.Info.Result.HasValue && updatedPositionInfo.Result.HasValue) {// Update the account upon closing some (or all) of the position volume. _runningAccountBalance += position.Info.Result.Value - updatedPositionInfo.Result.Value; } position.UpdateInfo(updatedPositionInfo); operationResultMessage = string.Empty; return(true); }
/// <summary> /// /// </summary> bool GetProviders(Symbol symbol, out IQuoteProvider quotes, out IDataBarHistoryProvider bars) { quotes = _manager.ObtainQuoteProvider(_dataDelivery.SourceId, symbol); RuntimeDataSessionInformation sessionInformation = _dataDelivery.GetSymbolRuntimeSessionInformation(symbol); if (sessionInformation.AvailableDataBarPeriods == null || sessionInformation.AvailableDataBarPeriods.Count == 0) { quotes = null; bars = null; SystemMonitor.OperationError("Can not close order since no suitable data provider sessions found."); return false; } bars = _manager.ObtainDataBarHistoryProvider(_dataDelivery.SourceId, symbol, sessionInformation.AvailableDataBarPeriods[0]); if (quotes == null || quotes.Ask.HasValue == false || bars == null) { return false; } return true; }
public StockPricePollingWorker(string id, int pollRateMilliseconds, TriggerController controller, IQuoteProvider quoteProvider) : base(id, pollRateMilliseconds) { if (controller == null) { throw new ArgumentNullException("controller"); } if (quoteProvider == null) { throw new ArgumentNullException("quoteProvider"); } _controller = controller; _quoteProvider = quoteProvider; }
void Quote_QuoteUpdateEvent(IQuoteProvider provider) { OnQuoteUpdate(); }
/// <summary> /// /// </summary> protected override string OnExecuteMarket(ISourceOrderExecution provider, OrderTypeEnum orderType, int volume, decimal?price, decimal?slippage, decimal?takeProfit, decimal?stopLoss, TimeSpan timeOut, out PositionExecutionInfo executionInfo, out string operationResultMessage) { SystemMonitor.CheckError(provider.SupportsActiveOrderManagement, "Wrong position type for this provider."); executionInfo = PositionExecutionInfo.Empty; IQuoteProvider quoteProvider = _manager.ObtainQuoteProvider(_dataDelivery.SourceId, Symbol); if (quoteProvider == null) { operationResultMessage = "Failed to establish quote provider for [" + _dataDelivery.SourceId.Name + ", " + Symbol.Name + "]."; SystemMonitor.Error(operationResultMessage); return(string.Empty); } price = ProcessPrice(quoteProvider, orderType, price); // New order shall be created. ActiveOrder order = new ActiveOrder(_manager, provider, quoteProvider, _dataDelivery.SourceId, Symbol, true); OrderInfo?infoReference; // Using the extended operationTimeOut to 40 seconds. bool result = provider.SynchronousExecute(provider.DefaultAccount.Info, order, _info.Symbol, orderType, volume, slippage, price, takeProfit, stopLoss, string.Empty, TimeSpan.FromSeconds(40), out infoReference, out operationResultMessage); if (result && infoReference.HasValue) { OrderInfo infoAssign = infoReference.Value; if (infoAssign.Type == OrderTypeEnum.UNKNOWN) { infoAssign.Type = orderType; } if (infoAssign.Volume == int.MinValue || infoAssign.Volume == int.MaxValue) {// Volume was not retrieved by integration. infoAssign.Volume = volume; } if (infoAssign.OpenPrice.HasValue) { executionInfo = new PositionExecutionInfo(infoReference.Value.Id, _dataDelivery.SourceId, provider.SourceId, Symbol, infoAssign.Type, infoAssign.OpenPrice.Value, volume, volume, infoAssign.OpenTime, PositionExecutionInfo.ExecutionResultEnum.Success); } else { SystemMonitor.Error("Received execution result, but price not assigned."); } order.AdoptInfo(infoAssign); provider.TradeEntities.AddOrder(order); return(infoReference.Value.Id); } return(string.Empty); }
public virtual void Dispose() { UnInitialize(); _manager = null; _dataDelivery = null; _quote = null; _tickProvider = null; _dataBarProvider = null; ChangeOperationalState(OperationalStateEnum.Disposed); }
public QuoteCurrencyService(IQuoteProvider quoteProvider) { this.quoteProvider = quoteProvider; }
void _dataProvider_QuoteUpdateEvent(IQuoteProvider provider) { WinFormsHelper.BeginFilteredManagedInvoke(this, TimeSpan.FromMilliseconds(250), UpdateUI); }
/// <summary> /// /// </summary> public virtual bool SetInitialParameters(ISourceManager manager, ComponentId sourceId, ExpertSession session) { _sessionInfo = session.Info; _manager = manager; _sourceId = sourceId; _dataDelivery = manager.ObtainDataDelivery(sourceId); _quote = manager.ObtainQuoteProvider(sourceId, _sessionInfo.Symbol); _tickProvider = manager.ObtainDataTickHistoryProvider(sourceId, _sessionInfo.Symbol); _dataBarProvider = null; bool result = _dataDelivery != null && _quote != null && _tickProvider != null; SystemMonitor.CheckError(result, "Failed to initialize data provider."); return result; }
void _dataProvider_OnValuesUpdateEvent(IQuoteProvider dataProvider) { WinFormsHelper.BeginFilteredManagedInvoke(this, UpdateUI); }
public override IEnumerable <Item> DynamicModifierItemsForItem(Item item) { IQuoteProvider quoteProvider = QuoteProviderFactory.GetProviderFromPreferences(); return(quoteProvider.SavedTags.Cast <Item> ()); }
void AddUnknownTags(string tags, IQuoteProvider service) { QuoteTagItem tag; foreach (string tagName in tags.Trim ().Split (' ')) { tag = new QuoteTagItem (tagName); if (service.SavedTags.Contains (tag)) continue; service.AddTag (tag); } }
protected override void OnQuoteUpdate(IQuoteProvider provider) { if (provider != null) { } }
/// <summary> /// Register IQuoteProvider. /// </summary> protected bool AddElement(ComponentId id, Symbol symbol, IQuoteProvider provider) { if (id.IsEmpty || symbol.IsEmpty || provider == null) { SystemMonitor.Warning("Invalid Id, Symbol or quote provider instance."); return false; } lock (this) { if (_quoteProviders.ContainsKey(id) && _quoteProviders[id].ContainsKey(symbol)) { SystemMonitor.Warning("Failed to add order execution provider, since already added with this Id."); return false; } if (_quoteProviders.ContainsKey(id) == false) { _quoteProviders.Add(id, new Dictionary<Symbol, IQuoteProvider>()); } _quoteProviders[id].Add(symbol, provider); } return true; }
/// <summary> /// /// </summary> public virtual void Dispose() { _manager = null; _executionProvider = null; _quoteProvider = null; _dataSourceId = ComponentId.Empty; }
/// <summary> /// /// </summary> public override void Dispose() { _manager = null; _quoteProvider = null; _executionProvider = null; }
public HistoricalQuoteController(IQuoteProvider provider, IHistoricalQuotesStorage storageClient) { _provider = provider; _storageClient = storageClient; }
/// <summary> /// Handle dataDelivery updates; used by children types to implement placement strategies. /// </summary> protected virtual void Quote_QuoteUpdateEvent(IQuoteProvider provider) { }
/// <summary> /// /// </summary> public override void Dispose() { _manager = null; _quoteProvider = null; _executionProvider = null; }
public void UnInitializeControl() { if (DataProvider != null) { DataProvider.QuoteUpdateEvent -= _dataProvider_OnValuesUpdateEvent; } _dataProvider = null; }
/// <summary> /// Handle dataDelivery updates; used by children types to implement placement strategies. /// </summary> protected virtual void Quote_QuoteUpdateEvent(IQuoteProvider provider) { }
void Quotes_QuoteUpdateEvent(IQuoteProvider provider) { // Changing the name of the trade chart series is done in the PlatformExpertSessionControl, // since it requires the session status. RaiseSeriesValuesUpdated(true); }
/// <summary> /// /// </summary> decimal? ProcessPrice(IQuoteProvider quoteProvider, OrderTypeEnum orderType, decimal? price) { if (price.HasValue == false && quoteProvider.Ask.HasValue && quoteProvider.Bid.HasValue) { if (OrderInfo.TypeIsBuy(orderType)) { return quoteProvider.Ask; } else { return quoteProvider.Bid; } } return price; }
/// <summary> /// NON UI Thread. /// </summary> void Quote_QuoteUpdateEvent(IQuoteProvider provider) { WinFormsHelper.BeginFilteredManagedInvoke(this, UpdateUI); }
public RFQController(IQuoteProvider quoteProvider) { _quoteProvider = quoteProvider; }
protected virtual void OnQuoteUpdate(IQuoteProvider provider) { }
public RaiseRFQSubscriber(IAggregateWriter <RequestForQuotes> aggregateWriter, IQuoteProvider quoteProvider) : base(aggregateWriter, quoteProvider) { }
public BuySpreadFactory(IEnumerable <StrategyHeader> leftLeg, IEnumerable <StrategyHeader> rightLeg, IQuoteProvider quoteProvider) { this.quoteProvider = quoteProvider; this.leftLeg = leftLeg; this.rightLeg = rightLeg; }
public CancelRFQRequestSubscriber(IAggregateWriter <RequestForQuotes> aggregateWriter, IQuoteProvider quoteProvider) : base(aggregateWriter, quoteProvider) { }
/// <summary> /// Will calculate the result of this execution up until now, against the values of the provider. /// </summary> /// <param name="provider"></param> /// <returns></returns> public decimal? GetPendingResult(IQuoteProvider provider, Order.ResultModeEnum mode, DataSessionInfo info) { if (this.IsEmpty || _executedPrice.HasValue == false || this._executedPrice == 0 || provider == null) { return null; } return Order.GetResult(mode, _executedPrice, null, _volumeExecuted, Symbol, OrderStateEnum.Executed, OrderType, null, Symbol.Empty, info.LotSize, info.DecimalPlaces, provider.Ask, provider.Bid); }
/// <summary> /// NON UI Thread. /// </summary> void Quote_QuoteUpdateEvent(IQuoteProvider provider) { WinFormsHelper.BeginFilteredManagedInvoke(this, UpdateUI); }
void _dataProvider_OnValuesUpdateEvent(IQuoteProvider dataProvider) { WinFormsHelper.BeginFilteredManagedInvoke(this, UpdateUI); }
void Quote_QuoteUpdateEvent(IQuoteProvider provider) { OnQuoteUpdate(); }
public HomeController(IQuoteProvider quoteProvider) { _quoteProvider = quoteProvider; }