internal static IList <ITrade> GetOpenTradesByAssetClass(AssetClass ac)
        {
            var trades = new List <ITrade>();

            try
            {
                using var connection = new SqlConnection(Builder.ConnectionString);
                connection.Open();

                const string sql = "SELECT * From Trade INNER JOIN Market ON Trade.MarketId=Market.Id" +
                                   " INNER JOIN Strategy ON Trade.StrategyId=Strategy.Id WHERE CloseLevel IS NULL AND Market.AssetClass = @assetClass;";

                using (var cmd = new SqlCommand(sql, connection))
                {
                    cmd.Parameters.AddWithValue("@assetClass", ac.ToString());
                    var results = cmd.ExecuteReader();

                    if (results.HasRows)
                    {
                        while (results.Read())
                        {
                            trades.Add(ReadTradeIn(results));
                        }
                    }
                }

                connection.Close();
            }
            catch (SqlException e)
            {
                Debug.WriteLine(e.ToString());
            }

            return(trades);
        }
Exemple #2
0
 /// <summary>
 /// Returns the class UClass if it is loaded. It is not possible to load the class if it is unloaded since we only have the short name.
 /// </summary>
 /// <returns></returns>
 public UClass GetClass()
 {
     if (!IsValid)
     {
         return(null);
     }
     return(UClass.GetClass(AssetClass.ToString()));
 }
        public AssetBase CreateAsset(AssetClass assetClass, string ticker, OptionClass?optionClass = null, string underlyingTicker = null, DateTime?expiration = null, double?strike = null)
        {
            switch (assetClass)
            {
            case AssetClass.Stock:
                Stock stock = new Stock(ticker);
                SaveAsset(stock);
                return(stock);

            case AssetClass.ETF:
                ETF etf = new ETF(ticker);
                SaveAsset(etf);
                return(etf);

            case AssetClass.Bond:
                Bond bond = new Bond(ticker);
                SaveAsset(bond);
                return(bond);

            case AssetClass.Option:
                if (optionClass.HasValue)
                {
                    Option option          = new Option(optionClass.Value, ticker);
                    Stock  unserlyingAsset = (Stock)GetAssetyBy(AssetClass.Stock, underlyingTicker);
                    if (unserlyingAsset == null)
                    {
                        unserlyingAsset = new Stock(underlyingTicker);
                        SaveAsset(unserlyingAsset);
                    }
                    option.UnderlyingAsset = unserlyingAsset;
                    option.ExpirationDate  = expiration.Value;
                    option.Strike          = strike.Value;
                    SaveAsset(option);
                    return(option);
                }
                else
                {
                    throw new ArgumentException("Must provide option class (call other put), underlying asset, strike and expiration when asset is an option");
                }

            case AssetClass.Cash:
                Cash cash = new Cash(ticker);
                SaveAsset(cash);
                return(cash);

            default:
                throw new NotImplementedException($"There is no DBSet AssetClass={assetClass.ToString()}");
            }
        }
        private IEnumerable <AssetBase> GetDBSetFor(AssetClass assetClass)
        {
            switch (assetClass)
            {
            case AssetClass.Stock:
                return(Stocks);

            case AssetClass.ETF:
                return(ETFs);

            case AssetClass.Bond:
                return(Bonds);

            case AssetClass.Option:
                return(Options);

            case AssetClass.Cash:
                return(Cash);

            default:
                throw new NotImplementedException($"There is no DBSet AssetClass={assetClass.ToString()}");
            }
        }
Exemple #5
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            JObject    jo         = JObject.Load(reader);
            AssetClass assetClass = (AssetClass)jo["assetClass"].Value <int>();

            switch (assetClass)
            {
            case AssetClass.Stock:
                return(jo.ToObject <Stock>(serializer));

            case AssetClass.ETF:
                return(jo.ToObject <ETF>(serializer));

            case AssetClass.Option:
                return(jo.ToObject <Option>(serializer));

            case AssetClass.Cash:
                return(jo.ToObject <Cash>(serializer));

            case AssetClass.Bond:
                return(jo.ToObject <Bond>(serializer));

            default:
                throw new NotImplementedException($"There is no convertion for asset class='{assetClass.ToString()}'");
            }
        }
 public AssetType(AssetClass assetClass) : base(assetClass.ToString())
 {
 }