Files
2026-07-13 13:02:50 +08:00

53 lines
1.8 KiB
C#

using NodaTime;
using NUnit.Framework;
using QuantConnect.Securities;
using QuantConnect.Securities.Crypto;
using System;
namespace QuantConnect.Tests.Common.Securities.Cryptos
{
[TestFixture]
public class CryptoTests
{
private static TimeKeeper TimeKeeper
{
get { return new TimeKeeper(DateTime.Now, new[] { TimeZones.NewYork }); }
}
[Test]
[TestCase("BTCUSD", "USD")]
[TestCase("BTCEUR", "EUR")]
[TestCase("ETHBTC", "BTC")]
[TestCase("ETHUSDT", "USDT")]
public void ConstructorParseBaseCurrencyBySymbolProps(string ticker, string quote)
{
var securities = new SecurityManager(TimeKeeper);
var transactions = new SecurityTransactionManager(null, securities);
var portfolio = new SecurityPortfolioManager(securities, transactions, new AlgorithmSettings());
if (portfolio.CashBook.ContainsKey(quote))
{
portfolio.CashBook[quote].SetAmount(1000);
}
else
{
portfolio.CashBook.Add(quote, 0, 1000);
}
var cash = portfolio.CashBook[quote];
var symbol = Symbol.Create(ticker, SecurityType.Crypto, Market.Coinbase);
var crypto = new Crypto(
symbol,
SecurityExchangeHours.AlwaysOpen(DateTimeZone.Utc),
cash,
new Cash(ticker.StartsWith("BTC", StringComparison.InvariantCultureIgnoreCase) ? "BTC" : "ETH", 0, 0),
SymbolProperties.GetDefault(quote),
portfolio.CashBook,
RegisteredSecurityDataTypesProvider.Null,
new SecurityCache()
);
Assert.AreEqual(symbol.Value.RemoveFromEnd(quote), crypto.BaseCurrency.Symbol);
}
}
}