示例#1
0
 /// <summary>
 /// Function: Retrieve value from time series object.
 /// </summary>
 /// <param name="date">DateTime value representing the date of the value to be retrieved.
 /// </param>
 /// <param name="type">Time series type of time series point.
 /// </param>
 /// <param name="timeSeriesRoll">Roll type of reference time series object.
 /// </param>
 override public double this[DateTime date, TimeSeriesType ttype, TimeSeriesRollType roll]
 {
     get
     {
         return(base[date, ttype, this.DefaultDataProvider, roll, 0]);
     }
 }
示例#2
0
 /// <summary>
 /// Function: Convert a value from the Sell currency denomination to the Buy currency denomination on a given date.
 /// The conversion is dependent on the definition of the inverse of the FX Instrument.
 /// </summary>
 /// <param name="value">Value to be converted.
 /// </param>
 /// <param name="date">Reference date.
 /// </param>
 /// <param name="type">Time series type of time series point.
 /// </param>
 /// <param name="provider">Provider of reference time series object (Standard is AQI).
 /// </param>
 /// <param name="timeSeriesRoll">Roll type of reference time series object.
 /// </param>
 public double ConvertInverse(double value, DateTime date, TimeSeriesType type, DataProvider provider, TimeSeriesRollType timeSeriesRoll)
 {
     return(value / FXInstrument[date, type, provider, timeSeriesRoll]);
 }
示例#3
0
 /// <summary>
 /// Function: Retrieve value from time series object.
 /// </summary>
 /// <param name="date">DateTime value representing the date of the value to be retrieved.
 /// </param>
 /// <param name="type">Time series type of time series point.
 /// </param>
 /// <param name="provider">Provider of reference time series object (Standard is AQI).
 /// </param>
 /// <param name="timeSeriesRoll">Roll type of reference time series object.
 /// </param>
 override public double this[DateTime date, TimeSeriesType type, DataProvider provider, TimeSeriesRollType timeSeriesRoll]
 {
     get
     {
         if (provider.ID == DataProvider.DefaultProvider.ID)
         {
             return(base[date, type, this.DefaultDataProvider, timeSeriesRoll, 0]);
         }
         else
         {
             return(base[date, type, provider, timeSeriesRoll, 0]);
         }
     }
 }
示例#4
0
        /// <summary>
        /// Function: Convert a value from the Sell currency denomination to the Buy currency denomination on a given date.
        /// The conversion is dependent on the definition of the FX Instrument.
        /// </summary>
        /// <param name="value">Value to be converted.
        /// </param>
        /// <param name="date">Reference date.
        /// </param>
        /// <param name="type">Time series type of time series point.
        /// </param>
        /// <param name="provider">Provider of reference time series object (Standard is AQI).
        /// </param>
        /// <param name="timeSeriesRoll">Roll type of reference time series object.
        /// </param>
        public double Convert(double value, DateTime date, TimeSeriesType type, DataProvider provider, TimeSeriesRollType timeSeriesRoll)
        {
            double fxi = FXInstrument[date, type, provider, timeSeriesRoll];

            if (double.IsNaN(fxi))
            {
                CurrencyPair pair_inv = CurrencyPair.FindCurrencyPair(CurrencySell, CurrencyBuy);

                if (pair_inv != null)
                {
                    return(pair_inv.ConvertInverse(value, date, type, provider, timeSeriesRoll));
                }

                return(value);
            }

            return(value * fxi);
        }
示例#5
0
        /// <summary>
        /// Function: Convert a value from the Sell currency denomination to the Buy currency denomination on a given date.
        /// </summary>
        /// <param name="value">Value to be converted.
        /// </param>
        /// <param name="date">Reference date.
        /// </param>
        /// <param name="type">Time series type of time series point.
        /// </param>
        /// <param name="provider">Provider of reference time series object (Standard is AQI).
        /// </param>
        /// <param name="timeSeriesRoll">Roll type of reference time series object.
        /// </param>
        /// <param name="buy">Target currency in the conversion.
        /// </param>
        /// <param name="sell">Initial currency in the conversion.
        /// </param>
        public static double Convert(double value, DateTime date, TimeSeriesType type, DataProvider provider, TimeSeriesRollType timeSeriesRoll, Currency buy, Currency sell)
        {
            if (buy == sell)
            {
                return(value);
            }

            CurrencyPair pair = CurrencyPair.FindCurrencyPair(buy, sell);


            if (pair != null)
            {
                return(pair.Convert(value, date, type, provider, timeSeriesRoll));
            }

            CurrencyPair pair_inv = CurrencyPair.FindCurrencyPair(sell, buy);

            if (pair_inv != null)
            {
                return(pair_inv.ConvertInverse(value, date, type, provider, timeSeriesRoll));
            }

            Console.WriteLine("WARNING: NO CURRENCY PAIR FOUND - " + buy.Name + "/" + sell.Name);
            return(value);
        }
示例#6
0
        public double GetMemorySeriesPoint(Strategy strategy, DateTime date, int memorytype, int memoryclass, TimeSeriesRollType timeSeriesRoll)
        {
            string key = strategy.ID + "_" + memorytype + "_" + memoryclass;

            if (!Instrument.TimeSeriesLoadFromDatabase)
            {
                if (!_memorySeriesDatabase.ContainsKey(key))
                {
                    GetMemorySeries(strategy, memorytype, memoryclass);
                }

                if (timeSeriesRoll == TimeSeriesRollType.Exact)
                {
                    return(_memorySeriesDatabase[key][date]);
                }
                else
                {
                    return(_memorySeriesDatabase[key][date, TimeSeries.DateSearchType.Previous]);
                }
            }

            string tableName = _StrategyMemoryTableName;
            string searchString;
            string targetString = "TOP 1 *";

            if (timeSeriesRoll == TimeSeriesRollType.Exact)
            {
                searchString = string.Format("ID={0} AND MemoryTypeID={1} AND MemoryClassID={2} AND Timestamp='{3:yyyy-MM-dd HH:mm:ss.fff}' ORDER BY Timestamp DESC", strategy.ID, (int)memorytype, (int)memoryclass, date);
            }
            else
            {
                searchString = string.Format("ID={0} AND MemoryTypeID={1} AND MemoryClassID={2} AND Timestamp<='{3:yyyy-MM-dd HH:mm:ss.fff}' ORDER BY Timestamp DESC", strategy.ID, (int)memorytype, (int)memoryclass, date);
            }

            if (Database.DB[strategy.StrategyDB] is QuantApp.Kernel.Adapters.SQL.SQLiteDataSetAdapter || Database.DB[strategy.StrategyDB] is QuantApp.Kernel.Adapters.SQL.PostgresDataSetAdapter)
            {
                searchString += " LIMIT 1";
                targetString  = "*";
            }

            DataTable         _datesTable = Database.DB[strategy.StrategyDB].GetDataTable(tableName, targetString, searchString);
            DataRowCollection rs          = _datesTable.Rows;

            if (rs.Count == 0)
            {
                return(double.NaN);
            }

            DataRow r = rs[0];

            return((double)r["Value"]);
        }
示例#7
0
        /// <summary>
        /// Function: Convert a value from the Sell currency denomination to the Buy currency denomination on a given date.
        /// The conversion is dependent on the definition of the FX Instrument.
        /// </summary>
        /// <param name="value">Value to be converted.
        /// </param>
        /// <param name="date">Reference date.
        /// </param>
        /// <param name="type">Time series type of time series point.
        /// </param>
        /// <param name="provider">Provider of reference time series object (Standard is AQI).
        /// </param>
        /// <param name="timeSeriesRoll">Roll type of reference time series object.
        /// </param>
        public double Convert(double value, DateTime date, TimeSeriesType type, DataProvider provider, TimeSeriesRollType timeSeriesRoll)
        {
            double fxi = FXInstrument[date, type, provider, timeSeriesRoll];

            if (double.IsNaN(fxi))
            {
                return(value);
            }

            return(value * fxi);
        }
示例#8
0
        /// <summary>
        /// Function: Convert a value from the Sell currency denomination to the Buy currency denomination on a given date.
        /// </summary>
        /// <param name="value">Value to be converted.
        /// </param>
        /// <param name="date">Reference date.
        /// </param>
        /// <param name="type">Time series type of time series point.
        /// </param>
        /// <param name="provider">Provider of reference time series object (Standard is AQI).
        /// </param>
        /// <param name="timeSeriesRoll">Roll type of reference time series object.
        /// </param>
        /// <param name="buy">Target currency in the conversion.
        /// </param>
        /// <param name="sell">Initial currency in the conversion.
        /// </param>
        public static double Convert(double value, DateTime date, TimeSeriesType type, DataProvider provider, TimeSeriesRollType timeSeriesRoll, Currency buy, Currency sell)
        {
            if (buy == sell)
            {
                return(value);
            }

            CurrencyPair pair = CurrencyPair.FindCurrencyPair(buy, sell);

            if (pair != null)
            {
                return(pair.Convert(value, date, type, provider, timeSeriesRoll));
            }

            CurrencyPair pair_inv = CurrencyPair.FindCurrencyPair(sell, buy);

            if (pair_inv != null)
            {
                return(pair_inv.ConvertInverse(value, date, type, provider, timeSeriesRoll));
            }

            return(0.0);
        }