using Binance.TradeRobot.Model.Base;
using System;
namespace Binance.TradeRobot.Model.Dto
{
public class RobotResponse
{
public RobotResponse()
{
}
public long Id { get; set; }
public DateTime CreateTime { get; set; }
public Enums.TradePolicy TradePolicy { get; set; }
///
/// 运行时长(s)
///
public long RunningTime { get; set; } = 0;
public Enums.RobotState State { get; set; }
public string Symbol { get; set; }
public Enums.BusinessType BusinessType { get; set; }
public Enums.Exchange ExchangeId { get; set; }
///
/// 订单推送日志Key
///
//public virtual string OrderPublishLogKey
//{
// get
// {
// return $"OrderPublish-{ExchangeId}-{BusinessType}-{Symbol}";
// }
//}
public SymbolInfoResponse SymbolInfo { get; set; }
///
/// 机器人账户对象
///
public RobotAccountResponse RobotAccount { get; set; }
///
/// 机器人绑定的交易所APIKey对象
///
public SimpleExchangeAPIKeyResponse ExchangeAPIKey { get; set; }
public string ExecuteKey { get { return $"Execute-{ExchangeId}-{TradePolicy}-{Symbol}"; } }
public string KLineKey { get { return $"KLine-{ExchangeId}-{BusinessType}-{Symbol}"; } }
///
/// 订单推送监听实例Key
/// 币安逐仓杠杆需要单独的运行实例
///
public string OrderPublishKey
{
get
{
if (State == Enums.RobotState.Runing && ExchangeAPIKey != null)
{
string key = $"{BusinessType}-{ExchangeAPIKey.AccountId}"; //币安现货,币安合约,同一个账户内不区分websocket实例
if (ExchangeId == Enums.Exchange.Binance && BusinessType == Enums.BusinessType.IsolateMargin)
key = $"{BusinessType}-{ExchangeAPIKey.AccountId}-{Symbol}"; //币安逐仓杠杆,同一个账户内的每个交易对需要区分websocket实例
return $"OrderPublish-{ExchangeId}-{key}";
}
return string.Empty;
}
}
}
}