增加激进控制可放大仓位
This commit is contained in:
parent
0df841c93c
commit
68f028f0fc
|
|
@ -834,7 +834,9 @@ class ConfigManager:
|
|||
# 固定风险百分比仓位计算(凯利公式)
|
||||
'USE_FIXED_RISK_SIZING': eff_get('USE_FIXED_RISK_SIZING', True), # 使用固定风险百分比计算仓位
|
||||
'FIXED_RISK_PERCENT': eff_get('FIXED_RISK_PERCENT', 0.02), # 每笔单子承受的风险(2%)
|
||||
|
||||
# 仓位放大系数:1.0=正常,1.2=+20% 仓位,上限 2.0,仍受 MAX_POSITION_PERCENT 约束(盈利时适度放大用)
|
||||
'POSITION_SCALE_FACTOR': eff_get('POSITION_SCALE_FACTOR', 1.0),
|
||||
|
||||
# 市场扫描(30分钟主周期)
|
||||
'SCAN_INTERVAL': eff_get('SCAN_INTERVAL', scan_interval_default), # 30分钟(增加交易机会)
|
||||
'TOP_N_SYMBOLS': eff_get('TOP_N_SYMBOLS', 20), # 每次扫描后优先处理的交易对数量
|
||||
|
|
|
|||
|
|
@ -40,6 +40,8 @@ DEFAULTS_TO_SYNC = [
|
|||
"description": "大盘共振过滤:BTC/ETH 下跌时屏蔽多单。"},
|
||||
{"config_key": "BETA_FILTER_THRESHOLD", "config_value": "-0.005", "config_type": "number", "category": "strategy",
|
||||
"description": "大盘共振阈值(比例,如 -0.005 表示 -0.5%)。"},
|
||||
{"config_key": "POSITION_SCALE_FACTOR", "config_value": "1.0", "config_type": "number", "category": "risk",
|
||||
"description": "仓位放大系数:1.0=正常,1.2=+20%,上限2.0。盈利时适度调高可扩大收益。"},
|
||||
]
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import './ConfigPanel.css' // 复用 ConfigPanel 的样式
|
|||
'MAX_CHANGE_PERCENT_FOR_LONG',
|
||||
'MAX_CHANGE_PERCENT_FOR_SHORT',
|
||||
'MIN_RR_FOR_TP1',
|
||||
'POSITION_SCALE_FACTOR',
|
||||
])
|
||||
// 配置项中文标签(便于识别)
|
||||
const KEY_LABELS = {
|
||||
|
|
@ -30,6 +31,7 @@ const KEY_LABELS = {
|
|||
RSI_EXTREME_REVERSE_ONLY_NEUTRAL_4H: 'RSI 反向仅允许 4H 中性',
|
||||
MIN_RR_FOR_TP1: '第一目标最小盈亏比(相对止损)',
|
||||
AUTO_TRADE_ALLOW_4H_NEUTRAL: '允许 4H 中性时自动交易',
|
||||
POSITION_SCALE_FACTOR: '仓位放大系数',
|
||||
}
|
||||
|
||||
const ConfigItem = ({ label, config, onUpdate, disabled }) => {
|
||||
|
|
@ -414,6 +416,31 @@ const GlobalConfig = () => {
|
|||
MAX_TREND_MOVE_BEFORE_ENTRY: 0.05,
|
||||
},
|
||||
},
|
||||
profit_scale: {
|
||||
name: '盈利放大(适度激进)',
|
||||
desc: '在推荐策略基础上:仓位放大 1.25 倍、单笔上限 10%、每笔风险 2.5%、最多 5 仓。盈利阶段可一键放大收益,仍受单笔上限约束。',
|
||||
configs: {
|
||||
POSITION_SCALE_FACTOR: 1.25,
|
||||
MAX_POSITION_PERCENT: 0.10,
|
||||
MAX_TOTAL_POSITION_PERCENT: 0.45,
|
||||
FIXED_RISK_PERCENT: 0.025,
|
||||
MAX_OPEN_POSITIONS: 5,
|
||||
MAX_DAILY_ENTRIES: 10,
|
||||
ATR_STOP_LOSS_MULTIPLIER: 3.0,
|
||||
RISK_REWARD_RATIO: 3.0,
|
||||
TAKE_PROFIT_1_PERCENT: 0.2,
|
||||
TAKE_PROFIT_PERCENT: 0.30,
|
||||
MIN_RR_FOR_TP1: 1.5,
|
||||
AUTO_TRADE_ALLOW_4H_NEUTRAL: false,
|
||||
MAX_RSI_FOR_LONG: 65,
|
||||
MIN_RSI_FOR_SHORT: 30,
|
||||
SYMBOL_LOSS_COOLDOWN_ENABLED: true,
|
||||
SYMBOL_MAX_CONSECUTIVE_LOSSES: 2,
|
||||
SYMBOL_LOSS_COOLDOWN_SEC: 3600,
|
||||
BETA_FILTER_ENABLED: true,
|
||||
MIN_SIGNAL_STRENGTH: 8,
|
||||
},
|
||||
},
|
||||
aggressive: {
|
||||
name: '激进高频',
|
||||
desc: '晚间波动大时使用,交易频率高,止损较紧但止盈合理(盈亏比1.5:1)',
|
||||
|
|
@ -468,6 +495,7 @@ const GlobalConfig = () => {
|
|||
SYMBOL_MAX_CONSECUTIVE_LOSSES: { value: 2, type: 'number', category: 'strategy', description: '最大允许连续亏损次数(超过则禁止交易该交易对一段时间)。' },
|
||||
SYMBOL_LOSS_COOLDOWN_SEC: { value: 3600, type: 'number', category: 'strategy', description: '连续亏损后的冷却时间(秒),默认1小时。' },
|
||||
MIN_RR_FOR_TP1: { value: 1.5, type: 'number', category: 'strategy', description: '第一目标止盈相对止损的最小盈亏比(如 1.5 表示 TP1 至少为止损距离的 1.5 倍)。2026-02-12 新增。' },
|
||||
POSITION_SCALE_FACTOR: { value: 1.0, type: 'number', category: 'risk', description: '仓位放大系数:1.0=正常,1.2=+20% 仓位,1.5=+50%,上限 2.0。盈利时适度调高可扩大收益,仍受单笔上限约束。' },
|
||||
AUTO_TRADE_ALLOW_4H_NEUTRAL: { value: false, type: 'boolean', category: 'strategy', description: '是否允许 4H 趋势为中性时自动交易。关闭可减少震荡扫损、提升质量(建议关闭)。' },
|
||||
BETA_FILTER_ENABLED: { value: true, type: 'boolean', category: 'strategy', description: '大盘共振过滤:BTC/ETH 下跌时屏蔽多单。' },
|
||||
BETA_FILTER_THRESHOLD: { value: -0.005, type: 'number', category: 'strategy', description: '大盘共振阈值(比例,如 -0.005 表示 -0.5%)。' },
|
||||
|
|
@ -980,18 +1008,19 @@ const GlobalConfig = () => {
|
|||
|
||||
const presetUiMeta = {
|
||||
altcoin: { group: 'altcoin', tag: '当前推荐' },
|
||||
profit_scale: { group: 'altcoin', tag: '盈利放大' },
|
||||
swing: { group: 'backup', tag: '纯限价' },
|
||||
strict: { group: 'backup', tag: '精选低频' },
|
||||
conservative: { group: 'backup', tag: '保守' },
|
||||
}
|
||||
|
||||
// 快速方案只保留:当前推荐(山寨币)+ 备选(纯限价/保守),其余不展示
|
||||
// 快速方案:当前推荐(含盈利放大)+ 备选
|
||||
const presetGroups = [
|
||||
{
|
||||
key: 'altcoin',
|
||||
title: '当前推荐 · 山寨币策略',
|
||||
desc: '与当前策略一致:4H 中性不自动交易、做多 RSI≤65、第一目标止盈 20%、止损 3×ATR、盈亏比 3:1、同品种连亏冷却。',
|
||||
presetKeys: ['altcoin'],
|
||||
desc: '与当前策略一致。盈利阶段想扩大收益可点「盈利放大」:仓位 1.25 倍、单笔上限 10%、最多 5 仓。',
|
||||
presetKeys: ['altcoin', 'profit_scale'],
|
||||
},
|
||||
{
|
||||
key: 'backup',
|
||||
|
|
|
|||
|
|
@ -651,7 +651,26 @@ class RiskManager:
|
|||
# 计算最终的名义价值与保证金
|
||||
final_notional_value = quantity * current_price
|
||||
final_margin = final_notional_value / actual_leverage if actual_leverage > 0 else final_notional_value
|
||||
|
||||
|
||||
# 仓位放大系数(盈利时适当放大仓位,1.0=正常,1.2=+20%,上限2.0,仍受 MAX_POSITION_PERCENT 约束)
|
||||
position_scale = config.TRADING_CONFIG.get('POSITION_SCALE_FACTOR', 1.0)
|
||||
try:
|
||||
position_scale = float(position_scale or 1.0)
|
||||
position_scale = max(1.0, min(position_scale, 2.0))
|
||||
except (TypeError, ValueError):
|
||||
position_scale = 1.0
|
||||
if position_scale > 1.0:
|
||||
quantity = quantity * position_scale
|
||||
final_notional_value = quantity * current_price
|
||||
final_margin = final_notional_value / actual_leverage if actual_leverage > 0 else final_notional_value
|
||||
max_margin_cap = available_balance * config.TRADING_CONFIG.get('MAX_POSITION_PERCENT', 0.08)
|
||||
if final_margin > max_margin_cap:
|
||||
final_margin = max_margin_cap
|
||||
final_notional_value = final_margin * actual_leverage
|
||||
quantity = final_notional_value / current_price if current_price and current_price > 0 else quantity
|
||||
logger.info(f" 仓位放大后超过单笔上限,已截断至 MAX_POSITION_PERCENT 对应保证金")
|
||||
logger.info(f" 仓位放大系数: {position_scale:.2f} -> 最终数量: {quantity:.4f}")
|
||||
|
||||
# 添加最小名义价值检查(0.2 USDT),避免下无意义的小单子
|
||||
MIN_NOTIONAL_VALUE = 0.2 # 最小名义价值0.2 USDT
|
||||
if final_notional_value < MIN_NOTIONAL_VALUE:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user