public List <OpenOrder> GetOpenOrders(CurrencyPair CurPair)
        {
            FXMarket fxmkt = FXMH.GetArtificialFXMarket(DateTime.UtcNow);
            Dictionary <string, PnLElement> pnlInfo = APnL.ToTable(FXMH, DateTime.UtcNow);

            return(DataProvider.GetOpenOrders(fxmkt, pnlInfo, CurPair));
        }
 public void UpdateHistory(Currency ccyChek, FXMarketHistory fxmh)
 {
     if (!TxLoaded)
     {
         throw new Exception("Load Transactions First!");
     }
     if (ccyChek != CcyRefLoaded)
     {
         throw new Exception("Load Transactions First with correct Fiat!");
     }
     if (fxmh.Freq != FreqLoaded)
     {
         FreqLoaded = fxmh.Freq;
         this.PublishInfo($"Recalculating Chart Data {CcyRefLoaded} - {FreqLoaded} ...");
         foreach (DateTime date in fxmh.GetAllDates())
         {
             if (date >= StartDate)
             {
                 FXMarket fx = fxmh.GetArtificialFXMarket(date);
                 if (!History.Keys.Contains(date))
                 {
                     AddAllocationToHistory(GetClosestAllocation(date), fx);
                 }
                 History[date].CalculateTotal(fx, CcyRefLoaded);
             }
         }
     }
 }
예제 #3
0
        public void FXMktHist_GetArtificialFXMarket()
        {
            FXMarketHistory fxMH  = MarketTestTools.CreateMktHistory();
            FXMarket        fxArt = fxMH.GetArtificialFXMarket(MarketTestTools.dateArt, new CurrencyPair(Currency.EUR, Currency.USD));
            XChangeRate     xr    = fxArt.GetQuote(Currency.EUR, Currency.USD, true);

            Assert.AreEqual(MarketTestTools.EurUsdArtRate.Rate, xr.Rate, Math.Pow(10, -6));
        }
예제 #4
0
        public void FXMktHist_GetAllDates()
        {
            FXMarketHistory fxmh   = MarketTestTools.CreateMktHistory();
            FXMarket        artMkt = fxmh.GetArtificialFXMarket(MarketTestTools.dateArt);

            TestTools <DateTime> .ListComparisonTest(fxmh.GetAllDates().ToList(),
                                                     new List <DateTime> {
                MarketTestTools.date1, MarketTestTools.dateArt, MarketTestTools.date2
            });
        }
        private void AddTransaction(Transaction tx, DateTime nextTxDate, FXMarketHistory fxmh)
        {
            Allocation alloc = GetClosestAllocation(tx.Date, true);
            FXMarket   FX    = fxmh.GetArtificialFXMarket(tx.Date);

            alloc = alloc.AddTransaction(tx, FX);
            alloc.CalculateTotal(FX);
            if (History.ContainsKey(tx.Date))
            {
                tx.Date = tx.Date.AddSeconds(1);
            }
            History.Add(tx.Date, alloc);

            // update the same allocation for the following days
            List <DateTime> datesList = fxmh.ArtificialFXMarkets
                                        .Keys
                                        .Where(x => x > tx.Date && x < nextTxDate)
                                        .Select(x => x).ToList();

            foreach (DateTime date in datesList)
            {
                AddAllocationToHistory(alloc, fxmh.GetArtificialFXMarket(tx.Date));
            }
        }