public bool SellHoldingFromAccount(int Quantity, string Ticker, ITradeHandlerInterface TradeHandler, string ProcessCode = "Manual") { //first check that the quantity does not exceed the quantity of the security on the account IMoney GAA = GetGAAFromHolding(Quantity, Ticker); //calculate revenue from the current ticker Quote HoldingTicker = ImperaturGlobal.Quotes.Where(q => q.Symbol.Equals(Ticker)).First(); IMoney oRevenue = GetRevenueFromHoldingSell(Quantity, Ticker); ITradeInterface Trade = TradeHandler.GetTrade(Ticker, Quantity, DateTime.Now, oRevenue); //minus for sell try { AddTransaction( CreateTransaction( Trade.TradeAmount, GetHouseAccountFromCache().First(), this.Identifier, TransactionType.Sell, Trade, ProcessCode ) ); } catch (Exception ex) { ImperaturGlobal.GetLog().Error(string.Format("Couldn't create transaction for sell on account {0}", this.Identifier), ex); LastErrorMessage = ex.Message; return(false); } return(true); }
public bool AddHoldingToAccount(int Quantity, string Symbol, ITradeHandlerInterface TradeHandler, string ProcessCode = "Manual") { ITradeInterface Trade = TradeHandler.GetTrade(Symbol, Quantity); try { AddTransaction( CreateTransaction( Trade.TradeAmount, this.Identifier, GetHouseAccountFromCache().First(), TransactionType.Buy, Trade, ProcessCode ) ); } catch (Exception ex) { ImperaturGlobal.GetLog().Error(string.Format("Couldn't add transaction to account {0}", this.Identifier), ex); LastErrorMessage = ex.Message; return(false); } return(true); }
public AccountTab(IAccountHandlerInterface AccountHandler, ITradeHandlerInterface TradeHandler, IOrderQueue OrderQueueHandler) { InitializeComponent(); m_AccountHandler = AccountHandler; m_oTradeHandler = TradeHandler; m_oOrderQueueHandler = OrderQueueHandler; //this.KeyDown += AccountTab_KeyDown; typeof(TableLayoutPanel).GetProperty("DoubleBuffered", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).SetValue(tlp_Account, true, null); }
public ITradeHandlerInterface GetTradeHandler() { if (m_oTradeHandler == null) { m_oTradeHandler = ImperaturGlobal.Kernel.Get <ITradeHandlerInterface>(); } return(m_oTradeHandler); }
public OrderQueue(IAccountHandlerInterface AccountHandler, ITradeHandlerInterface TradeHandler) { TryLoadFromStorage = false; m_oLastErrorMessage = ""; m_oOrders = new ObservableRangeCollection <IOrder>(); m_oNewOrders = new List <Guid>(); m_oAccountHandler = AccountHandler; m_oTradeHandler = TradeHandler; InitOrders(); }
public bool ExecuteOrder(IAccountHandlerInterface AccountHandler, ITradeHandlerInterface TradeHandler, out IOrder StopLossOrder) { StopLossOrder = this; if (EvaluateTriggerOnOrder()) { try { IAccountInterface oA = AccountHandler.GetAccount(m_oAccountIdentifier); switch (m_oOrderType) { case OrderType.Buy: oA.AddHoldingToAccount(m_oQuantity, m_oSymbol, TradeHandler); StopLossOrder = this; return(true); case OrderType.Sell: oA.SellHoldingFromAccount(m_oQuantity, m_oSymbol, TradeHandler); return(true); case OrderType.StopLoss: oA.AddHoldingToAccount(m_oQuantity, m_oSymbol, TradeHandler); StopLossOrder = CreateStopLossOrder(ImperaturGlobal.Quotes.Where(q => q.Symbol.Equals(m_oSymbol)).First().LastTradePrice.Amount); return(true); default: break; } } catch (Exception ex) { m_oLastErrorMessage = "OrderExecute error: " + ex.Message; return(false); } } return(false); }
public Account_Trade(IAccountHandlerInterface AccountHandler, ITradeHandlerInterface TradeHandler, IOrderQueue OrderHandler) { InitializeComponent(); this.Dock = DockStyle.Fill; m_oAh = AccountHandler; m_oTradeHandler = TradeHandler; m_oOrderQueueHandler = OrderHandler; //comboBox_Symbols AutoCompleteStringCollection list = new AutoCompleteStringCollection(); list.AddRange(ImperaturGlobal.Instruments.Select(i => i.Symbol).ToArray()); comboBox_Symbols.AutoCompleteMode = AutoCompleteMode.Suggest; comboBox_Symbols.AutoCompleteSource = AutoCompleteSource.CustomSource; comboBox_Symbols.AutoCompleteCustomSource = list; comboBox_Symbols.DataSource = ImperaturGlobal.Instruments.Select(i => i.Symbol).ToList(); comboBox_Symbols.Text = ""; comboBox_Symbols.SelectedIndexChanged += ComboBox_Symbols_SelectedIndexChanged; this.textBox_Quantity.KeyDown += TextBox_Quantity_KeyDown; tableLayoutPanel_Graph.Visible = false; m_oGraphSettingDays = 7; m_oDateRanges = new List <Tuple <int, string, bool> >(); m_oIndicator = new List <Tuple <TA_Indicator, string, bool> >(); m_oGraphSettings = new List <Tuple <TA_Settings, string, bool> >(); //DateRanges m_oDateRanges.Add(new Tuple <int, string, bool>(1, "1 day", false)); m_oDateRanges.Add(new Tuple <int, string, bool>(3, "3 days", false)); m_oDateRanges.Add(new Tuple <int, string, bool>(7, "7 days", false)); m_oDateRanges.Add(new Tuple <int, string, bool>(90, "3 months", false)); m_oDateRanges.Add(new Tuple <int, string, bool>(365, "1 year", false)); //Indicators foreach (TA_Indicator indicator in Enum.GetValues(typeof(TA_Indicator))) { m_oIndicator.Add(new Tuple <TA_Indicator, string, bool>(indicator, indicator.ToString(), false)); } foreach (TA_Settings setting in Enum.GetValues(typeof(TA_Settings))) { m_oGraphSettings.Add(new Tuple <TA_Settings, string, bool>(setting, setting.ToString(), false)); } foreach (var dr in m_oDateRanges) { comboBox_daterange.Items.Add(dr.Item2); } comboBox_daterange.SelectedIndexChanged += ComboBox_daterange_SelectedIndexChanged; foreach (var dr in m_oIndicator) { checkBoxComboBox_TA.Items.Add(dr.Item2); } checkBoxComboBox_TA.CheckBoxCheckedChanged += CheckBoxComboBox_TA_CheckBoxCheckedChanged; //checkBoxComboBox_TA.DropDownClosed += CheckBoxComboBox_TA_DropDownClosed; foreach (var dr in m_oGraphSettings) { checkBoxComboBox_Settings.Items.Add(dr.Item2); } checkBoxComboBox_Settings.CheckBoxCheckedChanged += CheckBoxComboBox_Settings_CheckBoxCheckedChanged; SetDateRangeToNumber(7); }
public Account_Holdings(IAccountHandlerInterface AccountHandler, ITradeHandlerInterface TradeHandler) { InitializeComponent(); this.Dock = DockStyle.Fill; m_oAh = AccountHandler; m_oTradeHandler = TradeHandler; listView_holdings.View = View.Details; listView_holdings.Columns.Add("Name"); listView_holdings.Columns.Add("Quantity"); listView_holdings.Columns.Add("PurchaseAmount"); listView_holdings.Columns.Add("Change"); listView_holdings.Columns.Add("CurrentValue"); listView_holdings.Columns.Add("AAC"); //average acquisition cost listView_holdings.Columns.Add("Action"); listView_holdings.Columns.Add("Info"); ListViewExtender extender = new ListViewExtender(listView_holdings); ListViewButtonColumn buttonAction = new ListViewButtonColumn(listView_holdings.Columns.Count - 2); buttonAction.Click += ButtonAction_Click; buttonAction.FixedWidth = true; extender.AddColumn(buttonAction); ListViewButtonColumn buttonActionInfo = new ListViewButtonColumn(listView_holdings.Columns.Count - 1); buttonActionInfo.Click += ButtonActionInfo_Click; buttonActionInfo.FixedWidth = true; extender.AddColumn(buttonActionInfo); listView_holdings.Click += ListView_holdings_Click; TotalAvilableFundsGrid = new DataGridView(); TotalAvilableFundsGrid.AutoGenerateColumns = false; TotalAvilableFundsGrid.AllowUserToAddRows = false; TotalAvilableFundsGrid.RowHeadersVisible = false; TotalAvilableFundsGrid.Columns.Add( new DataGridViewTextBoxColumn() { CellTemplate = new DataGridViewTextBoxCell(), Name = "Deposit", HeaderText = "Deposit", DataPropertyName = "Deposit", ReadOnly = true } ); TotalAvilableFundsGrid.Columns.Add( new DataGridViewTextBoxColumn() { CellTemplate = new DataGridViewTextBoxCell(), Name = "Amount", HeaderText = "Amount", DataPropertyName = "Amount", ReadOnly = true } ); TotalAvilableFundsGrid.Columns.Add( new DataGridViewTextBoxColumn() { CellTemplate = new DataGridViewTextBoxCell(), Name = "Change", HeaderText = "Change", DataPropertyName = "Change", ReadOnly = true } ); }