Пример #1
0
        private static void UpdateStockBase(HtmlNode targetRow, StockBase stockBase, int column)
        {
            switch (column)
            {
            case (int)StockBasePosition.NoAndName:
                var noAndName = targetRow.ChildNodes[column].InnerText.Trim().Split(' ');
                int no;
                if (int.TryParse(noAndName[0], out no))
                {
                    stockBase.No   = no;
                    stockBase.Name = noAndName[1];
                }
                break;

            case (int)StockBasePosition.ListedDate:
                var      date = targetRow.ChildNodes[column].InnerText.Trim();
                DateTime listedDate;
                if (DateTime.TryParse(date, out listedDate))
                {
                    stockBase.ListedDate = listedDate;
                }
                break;

            case (int)StockBasePosition.Industry:
                stockBase.Industry = targetRow.ChildNodes[column].InnerText.Trim();
                break;

            default:
                break;
            }
        }
Пример #2
0
        private void DoDbInsert(StockBase stockBase)
        {
            string        sql = "INSERT INTO TRADETAB VALUES (NULL, @TRADEDATE, @SYMBOL, @OPEN, @HIGH, @LOW, @CLOSE, @VOLUME, @VALUE, @NFB, @MKTPCT, @SECTORID)";
            SqliteCommand cmd = new SqliteCommand(sql, DbConnection, DbTransaction);

            cmd.Parameters.Add("@TRADEDATE", DbType.String).Value = stockBase.OwnerDocument.TradeDate.ToString("yyyy-MM-dd");
            cmd.Parameters.Add("@SYMBOL", DbType.String).Value    = stockBase.Symbol;
            cmd.Parameters.Add("@OPEN", DbType.Double).Value      = stockBase.Open;
            cmd.Parameters.Add("@HIGH", DbType.Double).Value      = stockBase.High;
            cmd.Parameters.Add("@LOW", DbType.Double).Value       = stockBase.Low;
            cmd.Parameters.Add("@CLOSE", DbType.Double).Value     = stockBase.Close;
            cmd.Parameters.Add("@VOLUME", DbType.Double).Value    = stockBase.Volume;
            cmd.Parameters.Add("@VALUE", DbType.Double).Value     = stockBase.Value;
            cmd.Parameters.Add("@NFB", DbType.Double).Value       = stockBase.NetForeignBuy;
            cmd.Parameters.Add("@MKTPCT", DbType.Double).Value    = (stockBase.Value / pseiValue) * 100;

            if (stockBase is StockItem)
            {
                cmd.Parameters.Add("@SECTORID", DbType.Int32).Value = this.getSectorId(((StockItem)stockBase).OwnerSector.Symbol);
                this.UpdateOrInsertStockData(stockBase as StockItem);
            }
            else
            {
                cmd.Parameters.Add("@SECTORID", DbType.Object).Value = this.getSectorId(stockBase.Symbol);
            }
            cmd.ExecuteNonQuery();
        }
Пример #3
0
        private string getCSVLine(string csvFormat, StockBase stockBase, CSVOutputSettings csvOutputSettings)
        {
            csvFormat = csvFormat.Replace(CSVOutputSettings.STOCK_SYMBOL, stockBase.Symbol);
            csvFormat = csvFormat.Replace(CSVOutputSettings.DESCRIPTION_SYMBOL, stockBase.Description);
            csvFormat = csvFormat.Replace(CSVOutputSettings.OPEN_SYMBOL, stockBase.Open.ToString());
            csvFormat = csvFormat.Replace(CSVOutputSettings.HIGH_SYMBOL, stockBase.High.ToString());
            csvFormat = csvFormat.Replace(CSVOutputSettings.LOW_SYMBOL, stockBase.Low.ToString());
            csvFormat = csvFormat.Replace(CSVOutputSettings.CLOSE_SYMBOL, stockBase.Close.ToString());
            csvFormat = csvFormat.Replace(CSVOutputSettings.NFBS_SYMBOL, stockBase.NetForeignBuy.ToString());

            if (stockBase is SectorItem)
            {
                string volume;
                if (csvOutputSettings.UseSectorValueAsVolume)
                {
                    volume = stockBase.Value.ToString(CultureInfo.CreateSpecificCulture("en-US"));
                }
                else
                {
                    volume = stockBase.Volume.ToString(CultureInfo.CreateSpecificCulture("en-US"));
                }
                csvFormat = csvFormat.Replace(CSVOutputSettings.VOLUME_SYMBOL, volume);
            }
            else
            {
                csvFormat = csvFormat.Replace(CSVOutputSettings.VOLUME_SYMBOL, stockBase.Volume.ToString(CultureInfo.CreateSpecificCulture("en-US")));
            }

            //Debug.WriteLine(csvFormat);

            return(csvFormat);
        }
Пример #4
0
        private void SetAmibrokerData(IOperationInvoker amiInvoker, PSEDocument pseDocument,
                                      StockBase stockData, AmiOutputSettings amiOutputSettings)
        {
            int version = Convert.ToInt32(amiInvoker.Property("Version").Get <string>().Replace(".", string.Empty));

            // stocks collection
            IOperationInvoker stocks = amiInvoker.Property("Stocks").Get <IOperationInvoker>();

            // add stock item to collection
            IOperationInvoker stock = stocks.Method("Add").AddParameter(stockData.Symbol).Invoke <IOperationInvoker>();

            // quotations collection
            IOperationInvoker quotations = stock.Property("Quotations").Get <IOperationInvoker>();

            // add a quoatation item to collection
            IOperationInvoker quotation = quotations.Method("Add").AddParameter(pseDocument.TradeDate).Invoke <IOperationInvoker>();

            if (version >= 5400)
            {
                // new 5.4 and up properties
                stock.Property("FullName").Set(stockData.Description);
            }
            quotation.Property("Open").Set(stockData.Open);
            quotation.Property("High").Set(stockData.High);
            quotation.Property("Low").Set(stockData.Low);
            quotation.Property("Close").Set(stockData.Close);

            if (stockData.Symbol.StartsWith("^"))
            {
                double volume;
                double nfb;
                if (amiOutputSettings.UseSectorValueAsVolume)
                {
                    volume = Math.Truncate(stockData.Value) / amiOutputSettings.SectorVolumeDivider;
                }
                else
                {
                    volume = stockData.Volume / amiOutputSettings.SectorVolumeDivider;
                }

                if (stockData.Symbol == "^PSEi")
                {
                    nfb = pseDocument.NetForeignBuying / amiOutputSettings.SectorVolumeDivider;
                }
                else
                {
                    nfb = stockData.NetForeignBuy / amiOutputSettings.SectorVolumeDivider;
                }

                quotation.Property("Volume").Set(Math.Truncate(volume));
                quotation.Property("OpenInt").Set(Math.Truncate(nfb));
            }
            else
            {
                quotation.Property("Volume").Set(stockData.Volume);
                quotation.Property("OpenInt").Set(stockData.NetForeignBuy);
            }
        }
Пример #5
0
        private string getCSVLine(string csvFormat, StockBase stockBase, CSVOutputSettings csvOutputSettings)
        {
            //double stockValue = stockBase.Value;

            // remove decimals
            double netForeignBuy = Math.Truncate(stockBase.NetForeignBuy);

            if (stockBase is SectorItem)
            {
                // scale down nfb and volume for sectors
                // stockValue = Math.Truncate(stockBase.Value / this._outputSettings.SectorVolumeDivider);
                netForeignBuy = Math.Truncate(stockBase.NetForeignBuy / this.OutputSettings.SectorVolumeDivider);

                // index value as volume
                double volume;
                if (csvOutputSettings.UseSectorValueAsVolume)
                {
                    volume = stockBase.Value;
                }
                else
                {
                    volume = stockBase.Volume;
                }

                // index divisor
                volume    = Math.Truncate(volume / csvOutputSettings.SectorVolumeDivider);
                csvFormat = csvFormat.Replace(CSVOutputSettings.VOLUME_SYMBOL, volume.ToString(CultureInfo.CreateSpecificCulture("en-US")));
            }
            else
            {
                csvFormat = csvFormat.Replace(CSVOutputSettings.VOLUME_SYMBOL, stockBase.Volume.ToString(CultureInfo.CreateSpecificCulture("en-US")));
            }

            csvFormat = csvFormat.Replace(CSVOutputSettings.STOCK_SYMBOL, stockBase.Symbol);
            csvFormat = csvFormat.Replace(CSVOutputSettings.DESCRIPTION_SYMBOL, stockBase.Description);
            csvFormat = csvFormat.Replace(CSVOutputSettings.OPEN_SYMBOL, stockBase.Open.ToString(CultureInfo.CreateSpecificCulture("en-US")));
            csvFormat = csvFormat.Replace(CSVOutputSettings.HIGH_SYMBOL, stockBase.High.ToString(CultureInfo.CreateSpecificCulture("en-US")));
            csvFormat = csvFormat.Replace(CSVOutputSettings.LOW_SYMBOL, stockBase.Low.ToString(CultureInfo.CreateSpecificCulture("en-US")));
            csvFormat = csvFormat.Replace(CSVOutputSettings.CLOSE_SYMBOL, stockBase.Close.ToString(CultureInfo.CreateSpecificCulture("en-US")));
            csvFormat = csvFormat.Replace(CSVOutputSettings.NFBS_SYMBOL, netForeignBuy.ToString(CultureInfo.CreateSpecificCulture("en-US")));
            csvFormat = csvFormat.Replace(CSVOutputSettings.VALUE_SYMBOL, stockBase.Value.ToString(CultureInfo.CreateSpecificCulture("en-US")));

            //Debug.WriteLine(csvFormat);

            return(csvFormat);
        }
Пример #6
0
 public bool Read()
 {
     try
     {
         StringBuilder sb = new StringBuilder();
         sb.Append(string.Format("select * from tipo_stock where CODIGO_P = '{0}' and centro_costo = '{1}' and ubicacion = '{2}';", _codigo, _centro_costos, _ubicacion));
         Conexion  con = new Conexion();
         StockBase pd  = con.ObtenerStock(sb.ToString());
         this._id            = pd.Id;
         this._codigo        = pd.Codigo;
         this._stock         = pd.Stock;
         this._ubicacion     = pd.Ubicaciones;
         this._centro_costos = pd.Centro_costo;
         return(true);
     }
     catch
     {
         return(false);
     }
 }
Пример #7
0
        private static List <StockBase> GetStockBases(HtmlNodeCollection nodes)
        {
            var result = new List <StockBase>();

            for (int row = 0; row < nodes.Count; row++)
            {
                if (nodes[row].ChildNodes.Count > 5 && nodes[row].ChildNodes[5].InnerText.Trim() == "ESVUFR")
                {
                    var stockBase = new StockBase()
                    {
                        Enabled = true
                    };
                    var targetRow = nodes[row];
                    for (int column = 0; column < targetRow.ChildNodes.Count; column++)
                    {
                        UpdateStockBase(targetRow, stockBase, column);
                    }
                    result.Add(stockBase);
                }
            }

            return(result);
        }
Пример #8
0
 /// <summary>Register service method with a service binder with or without implementation. Useful when customizing the  service binding logic.
 /// Note: this method is part of an experimental API that can change or be removed without any prior notice.</summary>
 /// <param name="serviceBinder">Service methods will be bound by calling <c>AddMethod</c> on this object.</param>
 /// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
 public static void BindService(grpc::ServiceBinderBase serviceBinder, StockBase serviceImpl)
 {
     serviceBinder.AddMethod(__Method_GetAllProducts, serviceImpl == null ? null : new grpc::ServerStreamingServerMethod <global::StockServices.Protos.Empty, global::StockServices.Protos.Product>(serviceImpl.GetAllProducts));
     serviceBinder.AddMethod(__Method_AddProduct, serviceImpl == null ? null : new grpc::UnaryServerMethod <global::StockServices.Protos.Product, global::StockServices.Protos.Result>(serviceImpl.AddProduct));
 }
Пример #9
0
 /// <summary>Creates service definition that can be registered with a server</summary>
 /// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
 public static grpc::ServerServiceDefinition BindService(StockBase serviceImpl)
 {
     return(grpc::ServerServiceDefinition.CreateBuilder()
            .AddMethod(__Method_GetAllProducts, serviceImpl.GetAllProducts)
            .AddMethod(__Method_AddProduct, serviceImpl.AddProduct).Build());
 }
 public StockEventArgs(StockBase stockItem)
 {
     StockItem = stockItem;
 }