Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 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);
 }
Пример #4
0
        public ITradeHandlerInterface GetTradeHandler()
        {
            if (m_oTradeHandler == null)
            {
                m_oTradeHandler = ImperaturGlobal.Kernel.Get <ITradeHandlerInterface>();
            }

            return(m_oTradeHandler);
        }
Пример #5
0
 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();
 }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        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
            }
                );
        }