コード例 #1
0
ファイル: MainWindow.xaml.cs プロジェクト: w1r2p1/crux
 private void StopTrading()
 {
     Strategy?.Stop();
     Strategy = null;
     MarketTerminal?.Close();
     MarketTerminal          = null;
     MarketListBox.IsEnabled = true;
 }
コード例 #2
0
ファイル: Account.cs プロジェクト: dennynewegg/item
        public void AddDaily(StockEntity daily)
        {
            if (daily.Percent < -11)
            {
                return;
            }

            _percent = _percent * (1 + daily.Percent.GetValueOrDefault() / 100);

            var vector = TradeStrategy.AddDaily(daily);

            Trader.Trade(this, daily, vector);
        }
コード例 #3
0
ファイル: MainWindow.xaml.cs プロジェクト: w1r2p1/crux
        private void StartTrading()
        {
            // Setup Market API
            OpenFileDialog fileDialog = new OpenFileDialog();

            fileDialog.DefaultExt = ".txt";
            fileDialog.Filter     = "Text documents (.txt)|*.txt";

            var result = fileDialog.ShowDialog();

            if (result == true)
            {
                MarketKeyFile = fileDialog.FileName;
            }
            else
            {
                StartButton.IsChecked = false;
                return;
            }
            MarketTerminal = CreateMarketAPI();
            if (MarketTerminal == null)
            {
                StartButton.IsChecked = false;
                return;
            }
            StartButton.IsEnabled = false;
            new Thread(new ThreadStart(delegate
            {
                while (!MarketTerminal.IsReady())
                {
                    ;
                }
                // Setup Trade Strategy
                Strategy = new ModifiedMR(MarketTerminal, TimeSpan.FromMinutes(15), TimePeriod.ONE_HOUR, 48, StrategyStatistics);
                Strategy.Start(true);
                App.Current.Dispatcher.Invoke(delegate
                {
                    StartButton.IsEnabled = true;
                });
            })).Start();

            MarketListBox.IsEnabled = false;
        }
コード例 #4
0
 public TradeStrategyCreatedDomainEvent(TradeStrategy tradeStrategy)
 {
     TradeStrategy = tradeStrategy;
 }
コード例 #5
0
        public async Task <IEnumerable <TradeAccount> > GetTradeAccounts(int pId)
        {
            try
            {
                using (MySqlConnection connection = Connection)
                {
                    string sQuery = "SELECT ta.Id, ta.Title, ta.Description, ta.Amount, ta.Profit, ta.Loss, ta.Net, ta.NumTrades, ta.NumSTrades, ta.NumFTrades, ta.Invested, ta.Cash, ta.DateCreated, ta.DateModified FROM TradeAccount ta, Portfolio p WHERE p.Id = ta.Portfolio and p.Id = @id";
                    var    @param = new { id = pId };
                    connection.Open();
                    var tas = await connection.QueryAsync <TradeAccount>(sQuery, @param);

                    // Assign prefferences for each trade account
                    foreach (TradeAccount t in tas)
                    {
                        // get preference Id
                        var prefIdQ      = "SELECT Preference FROM TradeAccount WHERE Id = @id";
                        var @prefIdParam = new { id = t.Id };
                        int prefID       = await connection.QueryFirstOrDefaultAsync <int>(prefIdQ, @prefIdParam);

                        // get risk level id
                        var riskIdQ      = "SELECT RiskLevel FROM Preference WHERE Id = @pId";
                        var @riskIdParam = new { pId = prefID };
                        int riskId       = await connection.QueryFirstOrDefaultAsync <int>(riskIdQ, @riskIdParam);

                        // get risk level
                        var       riskQ      = "SELECT Id, Risk, DateAdded FROM RiskLevels WHERE Id = @rId";
                        var       @riskParam = new { rId = riskId };
                        RiskLevel riskLevel  = await connection.QueryFirstOrDefaultAsync <RiskLevel>(riskQ, @riskParam);

                        // get strat id
                        var stratIdQ      = "SELECT TradeStrategy FROM Preference WHERE Id = @pId";
                        var @stratIdParam = new { pId = prefID };
                        int stratId       = await connection.QueryFirstOrDefaultAsync <int>(stratIdQ, @stratIdParam);

                        // get trade strat
                        var           stratQ      = "SELECT Id, BlueChip, LongTerm, Swing, Scalp, Day FROM TradeStrategies WHERE Id = @sId";
                        var           @stratParam = new { sId = stratId };
                        TradeStrategy strategy    = await connection.QueryFirstOrDefaultAsync <TradeStrategy>(stratQ, @stratParam);

                        // get sector id
                        var secIdQ      = "SELECT Sector FROM Preference WHERE Id = @pId";
                        var @secIdParam = new { pId = prefID };
                        int secId       = await connection.QueryFirstOrDefaultAsync <int>(secIdQ, @secIdParam);

                        // get sector
                        var    secQ      = "SELECT Id, InformationTechnology, HealthCare, Financials, ConsumerDiscretionary, Communication, Industrials, ConsumerStaples, Energy, Utilities, RealEstate, Materials FROM Sectors WHERE Id = @secId";
                        var    @secParam = new { secId = secId };
                        Sector sector    = await connection.QueryFirstOrDefaultAsync <Sector>(secQ, @secParam);

                        // get preference
                        var prefQ      = "SELECT Id, CapitalToRisk FROM Preference WHERE Id = @pId";
                        var @prefParam = new { pId = prefID };
                        t.Preference = await connection.QueryFirstOrDefaultAsync <Preference>(prefQ, @prefParam);

                        t.Preference.RiskLevel     = riskLevel;
                        t.Preference.TradeStrategy = strategy;
                        t.Preference.Sector        = sector;
                    }
                    return(tas.ToList());
                }
            }
            catch (Exception err)
            {
                Console.WriteLine(TAG + err);
                return(null);
            }
        }
コード例 #6
0
        public async Task <TradeAccount> GetTradeAccount(int?tId)
        {
            try
            {
                using (MySqlConnection connection = Connection)
                {
                    string sQuery = "SELECT Id, Title, Description, Amount, Profit, Loss, Net, NumTrades, NumSTrades, NumFTrades, Invested, Cash, DateCreated, DateModified FROM TradeAccount ta WHERE ta.Id = @id";
                    var    @param = new { id = tId };
                    connection.Open();
                    TradeAccount ta = await connection.QueryFirstOrDefaultAsync <TradeAccount>(sQuery, @param);

                    // get preference Id
                    var prefIdQ      = "SELECT Preference FROM TradeAccount WHERE Id = @id";
                    var @prefIdParam = new { id = tId };
                    int prefID       = await connection.QueryFirstOrDefaultAsync <int>(prefIdQ, @prefIdParam);

                    // get risk level id
                    var riskIdQ      = "SELECT RiskLevel FROM Preference WHERE Id = @pId";
                    var @riskIdParam = new { pId = prefID };
                    int riskId       = await connection.QueryFirstOrDefaultAsync <int>(riskIdQ, @riskIdParam);

                    // get risk level
                    var       riskQ      = "SELECT Id, Risk, DateAdded FROM RiskLevels WHERE Id = @rId";
                    var       @riskParam = new { rId = riskId };
                    RiskLevel riskLevel  = await connection.QueryFirstOrDefaultAsync <RiskLevel>(riskQ, @riskParam);

                    // get strat id
                    var stratIdQ      = "SELECT TradeStrategy FROM Preference WHERE Id = @pId";
                    var @stratIdParam = new { pId = prefID };
                    int stratId       = await connection.QueryFirstOrDefaultAsync <int>(stratIdQ, @stratIdParam);

                    // get trade strat
                    var           stratQ      = "SELECT Id, BlueChip, LongTerm, Swing, Scalp, Day FROM TradeStrategies WHERE Id = @sId";
                    var           @stratParam = new { sId = stratId };
                    TradeStrategy strategy    = await connection.QueryFirstOrDefaultAsync <TradeStrategy>(stratQ, @stratParam);

                    // get sector id
                    var secIdQ      = "SELECT Sector FROM Preference WHERE Id = @pId";
                    var @secIdParam = new { pId = prefID };
                    int secId       = await connection.QueryFirstOrDefaultAsync <int>(secIdQ, @secIdParam);

                    // get sector
                    var    secQ      = "SELECT Id, InformationTechnology, HealthCare, Financials, ConsumerDiscretionary, Communication, Industrials, ConsumerStaples, Energy, Utilities, RealEstate, Materials FROM Sectors WHERE Id = @secId";
                    var    @secParam = new { secId = secId };
                    Sector sector    = await connection.QueryFirstOrDefaultAsync <Sector>(secQ, @secParam);

                    // get preference
                    var prefQ      = "SELECT Id, CapitalToRisk FROM Preference WHERE Id = @pId";
                    var @prefParam = new { pId = prefID };
                    ta.Preference = await connection.QueryFirstOrDefaultAsync <Preference>(prefQ, @prefParam);

                    ta.Preference.RiskLevel     = riskLevel;
                    ta.Preference.TradeStrategy = strategy;
                    ta.Preference.Sector        = sector;
                    // get portfolio id
                    var portIdQ      = "SELECT Portfolio FROM TradeAccount WHERE Id = @tId";
                    var @portIdParam = new { tId = ta.Id };
                    int _portId      = await connection.QueryFirstOrDefaultAsync <int>(portIdQ, @portIdParam);

                    // get portfolio
                    var       portQ      = "SELECT Id, Amount, Profit, Loss, Net, Invested, Cash FROM Portfolio WHERE Id = @portId";
                    var       @portParam = new { portId = _portId };
                    Portfolio port       = await connection.QueryFirstOrDefaultAsync <Portfolio>(portQ, @portParam);

                    ta.Portfolio = port;

                    return(ta);
                }
            }
            catch (Exception err)
            {
                Console.WriteLine(TAG + err);
                return(null);
            }
        }