币安量化交易
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.4 KiB

using Binance.Net.Clients;
using Binance.Net.Objects;
using Binance.TradeRobot.Model.Base;
using CryptoExchange.Net.Authentication;
using Microsoft.Extensions.Caching.Memory;
using SDKAdapter.APIClient;
using System;
using Yitter.IdGenerator;
namespace Binance.TradeRobot.Business
{
public class BaseBusiness
{
protected IFreeSql fsql;
protected NLogManager logManager;
protected IIdGenerator idGenerator;
protected IMemoryCache memoryCache;
private TimeSpan expirationTimeSpan;
public BaseBusiness(IFreeSql fsql, NLogManager logManager, IIdGenerator idGenerator, IMemoryCache memoryCache)
{
this.fsql = fsql;
this.logManager = logManager;
this.idGenerator = idGenerator;
this.memoryCache = memoryCache;
expirationTimeSpan = TimeSpan.FromDays(1);
}
protected BaseAPIClient GetBaseAPIClient(Enums.Exchange exchange, long accountId, string apiKey, string secret)
{
var cacheKey = exchange == Enums.Exchange.Binance ? accountId.ToString() : apiKey;
if (!memoryCache.TryGetValue(cacheKey, out BaseAPIClient baseAPIClient))
{
baseAPIClient = BaseAPIClient.Create(exchange, accountId, apiKey, secret);
memoryCache.Set(cacheKey, baseAPIClient, expirationTimeSpan);
}
return baseAPIClient;
}
}
}