|
|
|
|
@ -221,86 +221,78 @@ const Dashboard = () => {
|
|
|
|
|
hoverable
|
|
|
|
|
onClick={() => handleFutureClick(item)}
|
|
|
|
|
>
|
|
|
|
|
<div className="future-header">
|
|
|
|
|
<div className="future-name">
|
|
|
|
|
<h4>{item.name}</h4>
|
|
|
|
|
<Tag size="small">{item.code}</Tag>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="future-change" style={{ color: getChangeColor(item.changePercent) }}>
|
|
|
|
|
{getChangeIcon(item.changePercent)} {Math.abs(item.changePercent)}%
|
|
|
|
|
{/* 品种名称和胜率 */}
|
|
|
|
|
<div className="future-header-new">
|
|
|
|
|
<div className="future-name-new">
|
|
|
|
|
<h3>{item.name}-{item.code}</h3>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="future-winrate-new">
|
|
|
|
|
胜率: {item.winRate}%
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className="future-price">
|
|
|
|
|
¥{item.currentPrice.toFixed(2)}
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{/* 整体预判 */}
|
|
|
|
|
<div className="future-overview">
|
|
|
|
|
<Tag color={item.overallView === '多头排列' ? 'green' : item.overallView === '空头排列' ? 'red' : 'blue'}>
|
|
|
|
|
{item.overallView}
|
|
|
|
|
</Tag>
|
|
|
|
|
{/* ATR/ADX和涨跌幅 */}
|
|
|
|
|
<div className="future-info-new">
|
|
|
|
|
<div className="future-indicators-new">
|
|
|
|
|
ATR: {item.atr} | ADX: {item.adx}
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className="future-metrics">
|
|
|
|
|
<div className="metric-item">
|
|
|
|
|
<span className="metric-label">胜率</span>
|
|
|
|
|
<span className="metric-value">{item.winRate}%</span>
|
|
|
|
|
<div className="future-change-new" style={{ color: getChangeColor(item.changePercent) }}>
|
|
|
|
|
● {Math.abs(item.changePercent)}%
|
|
|
|
|
</div>
|
|
|
|
|
<div className="metric-item">
|
|
|
|
|
<span className="metric-label">ATR</span>
|
|
|
|
|
<span className="metric-value">{item.atr}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="metric-item">
|
|
|
|
|
<span className="metric-label">ADX</span>
|
|
|
|
|
<span className="metric-value">{item.adx}</span>
|
|
|
|
|
|
|
|
|
|
{/* 当前价格和支撑压力位 */}
|
|
|
|
|
<div className="future-price-new" style={{ color: getChangeColor(item.changePercent) }}>
|
|
|
|
|
{item.currentPrice.toFixed(2)}
|
|
|
|
|
</div>
|
|
|
|
|
<div className="future-levels-new">
|
|
|
|
|
<span className="level-label-new">支撑: {item.tradingAdvice?.support?.toFixed(2) || '-'}</span>
|
|
|
|
|
<span className="level-label-new">压力: {item.tradingAdvice?.resistance?.toFixed(2) || '-'}</span>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{/* 压力支撑位 */}
|
|
|
|
|
<div className="future-levels">
|
|
|
|
|
<div className="level-item">
|
|
|
|
|
<span className="level-label">压力</span>
|
|
|
|
|
<span className="level-value">¥{item.tradingAdvice?.resistance?.toFixed(2) || '-'}</span>
|
|
|
|
|
{/* 多周期趋势 */}
|
|
|
|
|
<div className="future-trend-title-new">
|
|
|
|
|
多周期趋势:
|
|
|
|
|
</div>
|
|
|
|
|
<div className="level-item">
|
|
|
|
|
<span className="level-label">支撑</span>
|
|
|
|
|
<span className="level-value">¥{item.tradingAdvice?.support?.toFixed(2) || '-'}</span>
|
|
|
|
|
<div className="future-trends-new">
|
|
|
|
|
{Object.entries(item.trends).map(([period, trend]) => (
|
|
|
|
|
<div key={period} className="trend-item-new">
|
|
|
|
|
<div className="trend-period-new">{period.replace('MIN', 'min').replace('HOUR', 'min')}</div>
|
|
|
|
|
<div className="trend-direction-new" style={{ color: getTrendColor(trend.direction) }}>
|
|
|
|
|
{trend.direction}
|
|
|
|
|
</div>
|
|
|
|
|
<div className="trend-status-new">
|
|
|
|
|
{trend.status}
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{/* AI分析 */}
|
|
|
|
|
<div className="future-ai-analysis">
|
|
|
|
|
<span className="ai-label">AI分析:</span>
|
|
|
|
|
<span className="ai-content">{item.aiAnalysis || '-'}</span>
|
|
|
|
|
<div className="trend-rsi-new">
|
|
|
|
|
RSI: {trend.rsi}
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className="future-trends">
|
|
|
|
|
<div className="trend-item">
|
|
|
|
|
<span className="trend-period">5MIN</span>
|
|
|
|
|
<Tag size="small" color={getTrendColor(item.trends['5MIN'].direction)}>
|
|
|
|
|
{item.trends['5MIN'].direction}
|
|
|
|
|
</Tag>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="trend-item">
|
|
|
|
|
<span className="trend-period">30MIN</span>
|
|
|
|
|
<Tag size="small" color={getTrendColor(item.trends['30MIN'].direction)}>
|
|
|
|
|
{item.trends['30MIN'].direction}
|
|
|
|
|
</Tag>
|
|
|
|
|
))}
|
|
|
|
|
</div>
|
|
|
|
|
<div className="trend-item">
|
|
|
|
|
<span className="trend-period">1HOUR</span>
|
|
|
|
|
<Tag size="small" color={getTrendColor(item.trends['1HOUR'].direction)}>
|
|
|
|
|
{item.trends['1HOUR'].direction}
|
|
|
|
|
|
|
|
|
|
{/* 整体预判 */}
|
|
|
|
|
<div className="future-overview-new">
|
|
|
|
|
<span className="overview-label-new">整体预判:</span>
|
|
|
|
|
<Tag color={item.overallView === '多头排列' ? 'green' : item.overallView === '空头排列' ? 'red' : 'orange'}>
|
|
|
|
|
{item.overallView}
|
|
|
|
|
</Tag>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="trend-item">
|
|
|
|
|
<span className="trend-period">1DAY</span>
|
|
|
|
|
<Tag size="small" color={getTrendColor(item.trends['1DAY'].direction)}>
|
|
|
|
|
{item.trends['1DAY'].direction}
|
|
|
|
|
</Tag>
|
|
|
|
|
|
|
|
|
|
{/* AI分析 */}
|
|
|
|
|
<div className="future-ai-analysis-new">
|
|
|
|
|
<h4 className="ai-title-new">AI分析:</h4>
|
|
|
|
|
<div className="ai-content-new">
|
|
|
|
|
{item.aiAnalysis?.split(' | ').map((item, index) => (
|
|
|
|
|
<div key={index}>{item}</div>
|
|
|
|
|
))}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{/* 查看详细分析按钮 */}
|
|
|
|
|
<Button type="primary" className="detail-button-new" onClick={() => handleFutureClick(item)}>
|
|
|
|
|
查看详细分析
|
|
|
|
|
</Button>
|
|
|
|
|
</Card>
|
|
|
|
|
</Col>
|
|
|
|
|
))}
|
|
|
|
|
|