public StrategyInterpreter(FXEntities.FXEntities fxEntities, CurrencyDataSource currencyDataSource)
 {
     _currencyDataSource = currencyDataSource;
     _positionSetTable = new Dictionary<string, PositionSetRuntime>();
     _currencyTable = new Dictionary<string, Currency>();
     _currencyDataSource.GetAllAvailableCurrencies().ToList().ForEach(c => _currencyTable.Add(c.CurrencyCode, new Currency(c.CurrencyCode)));
 }
Ejemplo n.º 2
0
        protected void UpdateCurrency()
        {
            if (Page.IsValid)
            {
                Currency currency = CurrencyDataSource.Load(this.CurrencyId);
                currency.Name             = Name.Text;
                currency.ExchangeRate     = AlwaysConvert.ToDecimal(ExchangeRate.Text, 1M);
                currency.AutoUpdate       = AutoUpdate.Checked;
                currency.ISOCode          = ISOCode.Text;
                currency.ISOCodePattern   = (byte)ISOCodePattern.SelectedIndex;
                currency.CurrencySymbol   = CurrencySymbol.Text;
                currency.PositivePattern  = (byte)PositivePattern.SelectedIndex;
                currency.NegativePattern  = (byte)NegativePattern.SelectedIndex;
                currency.NegativeSign     = NegativeSign.Text;
                currency.DecimalSeparator = DecimalSeparator.Text;
                currency.DecimalDigits    = AlwaysConvert.ToInt(DecimalDigits.Text);
                currency.GroupSeparator   = GroupSeparator.Text;
                currency.GroupSizes       = GroupSizes.Text;
                currency.Save();
                if (currency.AutoUpdate)
                {
                    currency.UpdateExchangeRate(false);
                }
                if (ItemUpdated != null)
                {
                    ItemUpdated(this, new PersistentItemEventArgs(this.CurrencyId, currency.Name));
                }

                // RESET CURRENCY ID
                this.CurrencyId = 0;
            }
        }
        public void GetTransformedPositionRecordsTest()
        {
            FXEntities.FXEntities fxEntities = new FXEntities.FXEntities();
            CurrencyDataSource currencyDataSource = new CurrencyDataSource(fxEntities);
           
            var startDate = new DateTime(2000, 1, 4);
            var endDate = new DateTime(2003, 1, 4);
            var periodicTimeDef = new PeriodicTimeDefinition(3, PeriodicType.Month);
            periodicTimeDef.Initialize(startDate, endDate);
            ProfitCalculationEngine_Accessor target = new ProfitCalculationEngine_Accessor(currencyDataSource);

            PositionRuntime positionRuntime = new PositionRuntime(FXStrategy.Interpreter.PositionType.Long);
            positionRuntime.PositionRecords.Add(new PositionRecord(
                new DateTime(2000, 1, 4), new Currency("USD"), new Currency("EUR"),
                 FXStrategy.Interpreter.PositionType.Long, positionRuntime)
                 {
                     EndDate = new DateTime(2001,3,2)
                 });

            //var actual = target.GetTransformedPositionRecords(positionRuntime, periodicTimeDef);

            //Assert.AreEqual(actual.Count, 6);
            //Assert.IsTrue(actual.ElementAt(5).Type == FXStrategy.Interpreter.PositionType.Short);
            //Assert.IsTrue(actual.Take(5).All(t => t.Type == FXStrategy.Interpreter.PositionType.Long));
        }
Ejemplo n.º 4
0
 public Context(CurrencyDataSource currencyDataSource, PredefinedDataContainer collectionDataContainer, ValuesTable valuesTable, DateTime startTime)
 {
     _predefinedDataContainer = collectionDataContainer;
     _valuesTable = valuesTable;
     _currentTime = startTime;
     _currencyDataSource = currencyDataSource;
 }
Ejemplo n.º 5
0
        protected void CurrencyGrid_RowEditing(object sender, GridViewEditEventArgs e)
        {
            int      currencyId = (int)CurrencyGrid.DataKeys[e.NewEditIndex].Value;
            Currency currency   = CurrencyDataSource.Load(currencyId);

            if (currency != null)
            {
                AbleCommerce.Admin._Store.Currencies.EditCurrencyDialog editDialog = CurrencyAjax.FindControl("EditCurrencyDialog1") as AbleCommerce.Admin._Store.Currencies.EditCurrencyDialog;
                if (editDialog != null)
                {
                    editDialog.CurrencyId = currencyId;
                }
            }
        }
 public void GetCurrencyNamesSortByInRateTest()
 {
     FXEntities.FXEntities fxEntities = new FXEntities.FXEntities();
     Currency baseCurrency = new Currency("EUR"); // TODO: Initialize to an appropriate value
     CurrencyDataSource target = new CurrencyDataSource(fxEntities); // TODO: Initialize to an appropriate value
     IEnumerable<string> actual;
     actual = target.GetCurrencyNameOrderByInterestRate(new DateTime(2000,1,7)).Reverse();
     Assert.IsTrue(actual.ElementAt(0) == "GBP");
     Assert.IsTrue(actual.ElementAt(1) == "USD");
     Assert.IsTrue(actual.ElementAt(2) == "NOK");
     Assert.IsTrue(actual.ElementAt(3) == "NZD");
     Assert.IsTrue(actual.ElementAt(4) == "AUD");
     Assert.IsTrue(actual.ElementAt(5) == "CAD");
     Assert.IsTrue(actual.ElementAt(6) == "SEK");
     Assert.IsTrue(actual.ElementAt(7) == "EUR");
     Assert.IsTrue(actual.ElementAt(8) == "CHF");
     Assert.IsTrue(actual.ElementAt(9) == "JPY");
 }
Ejemplo n.º 7
0
 protected void CurrencyGrid_RowCommand(object sender, GridViewCommandEventArgs e)
 {
     if (e.CommandName == "UpdateRate")
     {
         Currency currency = CurrencyDataSource.Load(AlwaysConvert.ToInt(e.CommandArgument));
         if (currency != null)
         {
             try
             {
                 currency.UpdateExchangeRate(true);
                 CurrencyGrid.DataBind();
                 CurrencyAjax.Update();
             }
             catch (Exception ex)
             {
                 // Throw the exception with proper error message
                 throw new Exception("Unable to update the exchange rate.  The rate provider may be experiencing technical difficulties, please try again later.  Exception message: " + ex.Message, ex);
             }
         }
     }
 }
Ejemplo n.º 8
0
        protected void Page_PreRender(object sender, EventArgs e)
        {
            Currency currency = CurrencyDataSource.Load(this.CurrencyId);

            if (currency != null)
            {
                //LOAD FORM
                Name.Text                     = currency.Name;
                AutoUpdate.Checked            = currency.AutoUpdate;
                ManualUpdate.Checked          = !AutoUpdate.Checked;
                ExchangeRate.Text             = currency.ExchangeRate.ToString("#.####");
                ISOCode.Text                  = currency.ISOCode;
                ISOCodePattern.SelectedIndex  = (int)currency.ISOCodePattern;
                CurrencySymbol.Text           = currency.CurrencySymbol;
                PositivePattern.SelectedIndex = (int)currency.PositivePattern;
                NegativePattern.SelectedIndex = (int)currency.NegativePattern;
                NegativeSign.Text             = currency.NegativeSign;
                DecimalSeparator.Text         = currency.DecimalSeparator;
                DecimalDigits.Text            = currency.DecimalDigits.ToString();
                GroupSeparator.Text           = currency.GroupSeparator;
                GroupSizes.Text               = currency.GroupSizes;
                trExchangeRate1.Visible       = !currency.IsBaseCurrency;
                trExchangeRate2.Visible       = trExchangeRate1.Visible;
                if (trExchangeRate1.Visible)
                {
                    ExchangeRateHelpText.Text = string.Format(ExchangeRateHelpText.Text, AbleContext.Current.Store.BaseCurrency.Name);
                }


                EditCaption.Text         = string.Format(EditCaption.Text, currency.Name);
                EditPopup.OnCancelScript = String.Format("__doPostBack('{0}','{1}')", CancelButton.UniqueID, "");
                EditPopup.Show();
            }
            else
            {
                this.Controls.Clear();
            }
        }
 public StrategyAnalyzer()
 {
     var fxEntities = new FXEntities.FXEntities();
     _currencyDataSource = new CurrencyDataSource(fxEntities);
     _currencyDataSource.PreLoad();
 }
 public void Top3CurrenciesConstructorTest()
 {
     FXEntities.FXEntities fxEntities = new FXEntities.FXEntities();
     Currency baseCurrency = new Currency("EUR");; // TODO: Initialize to an appropriate value
     CurrencyDataSource currencyDataSource = new CurrencyDataSource(fxEntities);
     
     Top3Currencies target = new Top3Currencies(currencyDataSource, baseCurrency);
     var result = target.GetCurrencies(new DateTime(2000, 1, 7));
     Assert.IsTrue(result.Any(r => r == "USD"));
     Assert.IsTrue(result.Any(r => r == "GBP"));
     Assert.IsTrue(result.Any(r => r == "NOK"));
 }
        public void ExchangeRateAccessorTest()
        {

            TradingStrategy tradingStrategy = new TradingStrategy()
            {
                ConstantVariableDefinitions = new System.Collections.Generic.List<GlobalIdentifier>(){
                     new GlobalIdentifier(){ 
                         Variable = new Variable("reEntryExRatePercent", typeof(int)),
                         Constant = new Constant(typeof(decimal),0.05)},
                    new GlobalIdentifier(){ 
                         Variable = new Variable("noOfLongPosition",typeof(int)),
                         Constant = new Constant(typeof(int),3)},
                    new GlobalIdentifier(){ 
                         Variable = new Variable("noOfShortPosition",typeof(int)),
                         Constant = new Constant(typeof(int),3)}
                 },
                Portfolio = new Portfolio()
                {
                    HomeCurrency = "EUR",
                    PositionSets = new List<PositionSet>()
                    {
                        new PositionSet(){
                             Name = "LongPositions", Number = new Variable("noOfLongPosition",typeof(int)), PositionType = FXStrategy.MetaModel.PositionType.Long
                        },
                        new PositionSet(){
                            Name = "ShortPositions", Number = new Variable("noOfShortPosition", typeof(int)), PositionType = FXStrategy.MetaModel.PositionType.Short
                        }
                    }
                },

                TradingRules = new System.Collections.Generic.List<TradingRule>()
                {
                    new TradingRule("test", new ConcreteTimeDefinition(){
                         ExecuteTime = new DateTime(2006,1,30)
                    },
                     new Assignment(
                        new Variable("exRateMVG", typeof(decimal)),
                        new AtTime(
                        new ExchangeRateAccessor(
                            new Constant(typeof(string), "EUR"),
                            new Constant(typeof(string), "USD"))
                            ,
                            new Constant(typeof(DateTime), new DateTime(2006,1,30)))))
                }
            };

            FXEntities.FXEntities fxEntities = new FXEntities.FXEntities();
             CurrencyDataSource currencyDataSource = new CurrencyDataSource(fxEntities);
            StrategyInterpreter target = new StrategyInterpreter(fxEntities, currencyDataSource);
             DateTime startDate = new DateTime(2006, 1, 29);
            DateTime endDate = new DateTime(2006, 1, 31);
            target.Execute(tradingStrategy, startDate, endDate);


        }
        public void ExecutionTimeTest()
        {
            TradingStrategy tradingStratgy = ConstructTradingStrategy();

            FXEntities.FXEntities fxEntities = new FXEntities.FXEntities();
            CurrencyDataSource currencyDataSource = new CurrencyDataSource(fxEntities);
            currencyDataSource.PreLoad();
            StrategyInterpreter target = new StrategyInterpreter(fxEntities, currencyDataSource);
            DateTime startExecutionTime;
            DateTime endExecutionTime;
            DateTime startDate = new DateTime(2000, 1, 1);
            List<List<double>> results = new List<List<double>>();
            StringBuilder output = new StringBuilder();
            for (int j = 0; j < 10; j++)
            {
                results.Add(new List<double>());
                output.AppendLine("Run no.: " + j);
                for (int i = 0; i < 11; i++)
                {
                    startExecutionTime = DateTime.Now;
                    target.Execute(tradingStratgy, startDate, startDate.AddYears(i + 1));
                    endExecutionTime = DateTime.Now;
                    results[j].Add((endExecutionTime - startExecutionTime).TotalMilliseconds);
                    output.AppendLine(String.Format("Execution time: {0}ms, Number of positionRecord: {1} ",
                        (endExecutionTime - startExecutionTime).TotalMilliseconds,
                        target.PositionSetTable.Sum(p => p.Value.Positions.SelectMany(pos => pos.PositionRecords).Count()
                        )
                        ));
                    target.Clear();

                    //results.Add(endExecutionTime - startExecutionTime);
                }
                output.AppendLine();
            }

            output.AppendLine("Average: ");
            for (int i = 0; i < 10; i++)
            {
                output.AppendLine( (i+1) + " Year: \t" + results.Select(r => r.ElementAt(i)).Average());
            }


            using (StreamWriter writer = new StreamWriter(@"D:\Documents\Study Materials\Master Thesis\Main Thesis\executionTime.txt"))
            {
                
                //for (int i = 1; i <= 10; i++)
                //{
                //    output += String.Format(results[i - 1].Milliseconds + " ms \n");
                //}

                writer.WriteLine(output);
            }

            
        }
        public void CalculationTest()
        {
            FXEntities.FXEntities fxEntities = new FXEntities.FXEntities();
            CurrencyDataSource currencyDataSource = new CurrencyDataSource(fxEntities);
            StrategyInterpreter target = new StrategyInterpreter(fxEntities, currencyDataSource);
            TradingStrategy tradingStrategy = ConstructTradingStrategy();

            DateTime startDate = new DateTime(2000, 1, 4);
            DateTime endDate = new DateTime(2002, 1, 1);
            target.Execute(tradingStrategy, startDate, endDate);

            ProfitCalculationEngine calEngine = new ProfitCalculationEngine(
                currencyDataSource
                );

            calEngine.Evaluate(target.PositionSetTable["ShortPositions"].Positions,
                startDate,
                endDate, new PeriodicTimeDefinition(3, PeriodicType.Month)
                );
            //calEngine.Analyze(target.PositionSetTable["LongPositions"].Positions
            //    .Union(target.PositionSetTable["ShortPositions"].Positions).ToList(),
            //    startDate, 
            //    endDate, new PeriodicTimeDefinition(3, PeriodicType.Month)
            //    );

            List<TimeSeriesData> returnOverTime = calEngine.ReturnOverTime;
            string dest = @"C:\temp\ReturnOverTime.txt";

            WriteToFile(returnOverTime, dest);

            WriteToFile(calEngine.IndexOverTime, @"C:\temp\IndexOverTime.txt");
        }
 public void GetCurrenciesTest1()
 {
     Currency baseCurrency = new Currency("EUR");
     FXEntities.FXEntities fxEntities = new FXEntities.FXEntities();
     CurrencyDataSource currencyDataSource = new CurrencyDataSource(fxEntities); // TODO: Initialize to an appropriate value
     Bottom3Currencies target = new Bottom3Currencies(currencyDataSource, baseCurrency); // TODO: Initialize to an appropriate value
     DateTime time = new DateTime(2000, 1, 7); // TODO: Initialize to an appropriate value
     IEnumerable<string> expected = new string[]{"JPY","CHF"};
     IEnumerable<string> actual;
     actual = target.GetCurrencies(time);
     Assert.IsTrue(expected.All(a => actual.Contains(a)));
 }
 public StrategyInterpreter(CurrencyDataSource currencyDataSource) : this(new FXEntities.FXEntities(),currencyDataSource)
 { }
 public ProfitCalculationEngine(CurrencyDataSource currencyDataSource)
 {
     _currencyDataSource = currencyDataSource;
    
 }