1
This commit is contained in:
parent
8c91db3f60
commit
0df841c93c
|
|
@ -819,11 +819,11 @@ class ConfigManager:
|
|||
# - 提高最小价格变动百分比(从2%到2.5%),避免止损过紧
|
||||
'STOP_LOSS_PERCENT': eff_get('STOP_LOSS_PERCENT', 0.12), # 默认12%(保证金百分比)
|
||||
'TAKE_PROFIT_PERCENT': eff_get('TAKE_PROFIT_PERCENT', 0.10), # 默认10%(第二目标/单目标止盈)
|
||||
'TAKE_PROFIT_1_PERCENT': eff_get('TAKE_PROFIT_1_PERCENT', 0.15), # 默认15%(分步止盈第一目标,提高整体盈亏比)
|
||||
'TAKE_PROFIT_1_PERCENT': eff_get('TAKE_PROFIT_1_PERCENT', 0.20), # 默认20%(2026-02-12优化:拉高第一目标改善盈亏比)
|
||||
'MIN_STOP_LOSS_PRICE_PCT': eff_get('MIN_STOP_LOSS_PRICE_PCT', 0.025), # 默认2.5%(2026-01-29优化:从2%提高到2.5%,给波动更多空间)
|
||||
'MIN_TAKE_PROFIT_PRICE_PCT': eff_get('MIN_TAKE_PROFIT_PRICE_PCT', 0.02), # 默认2%(防止ATR过小时计算出不切实际的微小止盈距离)
|
||||
'USE_ATR_STOP_LOSS': eff_get('USE_ATR_STOP_LOSS', True), # 是否使用ATR动态止损
|
||||
'ATR_STOP_LOSS_MULTIPLIER': eff_get('ATR_STOP_LOSS_MULTIPLIER', 2.0), # ATR止损倍数2.0(2026-01-29优化:从1.5提高到2.0,减少被正常波动扫出)
|
||||
'ATR_STOP_LOSS_MULTIPLIER': eff_get('ATR_STOP_LOSS_MULTIPLIER', 3.0), # ATR止损倍数3.0(2026-02-12优化:减少噪音止损,配合止盈拉远)
|
||||
'ATR_TAKE_PROFIT_MULTIPLIER': eff_get('ATR_TAKE_PROFIT_MULTIPLIER', 2.0), # ATR止盈倍数2.0(2026-01-27优化:降低止盈目标,更容易触发)
|
||||
'RISK_REWARD_RATIO': eff_get('RISK_REWARD_RATIO', 3.0), # 盈亏比3:1(2026-01-27优化:降低,更容易触发,保证胜率)
|
||||
'ATR_PERIOD': eff_get('ATR_PERIOD', 14), # ATR计算周期
|
||||
|
|
@ -887,7 +887,7 @@ class ConfigManager:
|
|||
'BETA_FILTER_ENABLED': eff_get('BETA_FILTER_ENABLED', True), # 大盘共振过滤:BTC/ETH下跌时屏蔽多单
|
||||
'BETA_FILTER_THRESHOLD': eff_get('BETA_FILTER_THRESHOLD', -0.005), # -0.5%(2026-01-27优化:更敏感地过滤大盘风险,15分钟内跌幅超过0.5%即屏蔽多单)
|
||||
# RSI / 24h 涨跌幅过滤(避免追高杀跌)
|
||||
'MAX_RSI_FOR_LONG': eff_get('MAX_RSI_FOR_LONG', 70), # 做多时 RSI 超过此值则不开多
|
||||
'MAX_RSI_FOR_LONG': eff_get('MAX_RSI_FOR_LONG', 65), # 做多时 RSI 超过此值则不开多(2026-02-12:65 避免追高)
|
||||
'MAX_CHANGE_PERCENT_FOR_LONG': eff_get('MAX_CHANGE_PERCENT_FOR_LONG', 25), # 做多时 24h 涨跌幅超过此值则不开多
|
||||
'MIN_RSI_FOR_SHORT': eff_get('MIN_RSI_FOR_SHORT', 30), # 做空时 RSI 低于此值则不做空
|
||||
'MAX_CHANGE_PERCENT_FOR_SHORT': eff_get('MAX_CHANGE_PERCENT_FOR_SHORT', 10), # 做空时 24h 涨跌幅超过此值则不做空
|
||||
|
|
@ -911,7 +911,8 @@ class ConfigManager:
|
|||
'SYMBOL_LOSS_COOLDOWN_ENABLED': eff_get('SYMBOL_LOSS_COOLDOWN_ENABLED', True),
|
||||
'SYMBOL_MAX_CONSECUTIVE_LOSSES': eff_get('SYMBOL_MAX_CONSECUTIVE_LOSSES', 2),
|
||||
'SYMBOL_LOSS_COOLDOWN_SEC': eff_get('SYMBOL_LOSS_COOLDOWN_SEC', 3600),
|
||||
|
||||
# 第一目标止盈最小盈亏比(相对止损距离)
|
||||
'MIN_RR_FOR_TP1': eff_get('MIN_RR_FOR_TP1', 1.5), # 2026-02-12:保证 TP1 至少 1.5 倍止损距离,改善盈亏比
|
||||
}
|
||||
|
||||
def _sync_to_redis(self):
|
||||
|
|
|
|||
|
|
@ -22,16 +22,18 @@ if str(backend_dir) not in sys.path:
|
|||
|
||||
# 需要同步的缺省项(仅插入数据库中不存在的 key)
|
||||
DEFAULTS_TO_SYNC = [
|
||||
{"config_key": "MAX_RSI_FOR_LONG", "config_value": "70", "config_type": "number", "category": "strategy",
|
||||
"description": "做多时 RSI 超过此值则不开多(避免超买区追多)。2026-01-31新增。"},
|
||||
{"config_key": "MAX_RSI_FOR_LONG", "config_value": "65", "config_type": "number", "category": "strategy",
|
||||
"description": "做多时 RSI 超过此值则不开多(2026-02-12:65 避免追高)。"},
|
||||
{"config_key": "MAX_CHANGE_PERCENT_FOR_LONG", "config_value": "25", "config_type": "number", "category": "strategy",
|
||||
"description": "做多时 24h 涨跌幅超过此值则不开多(避免追大涨)。单位:百分比数值,如 25 表示 25%。2026-01-31新增。"},
|
||||
{"config_key": "MIN_RSI_FOR_SHORT", "config_value": "30", "config_type": "number", "category": "strategy",
|
||||
"description": "做空时 RSI 低于此值则不做空(避免深超卖反弹)。2026-01-31新增。"},
|
||||
{"config_key": "MAX_CHANGE_PERCENT_FOR_SHORT", "config_value": "10", "config_type": "number", "category": "strategy",
|
||||
"description": "做空时 24h 涨跌幅超过此值则不做空(24h 仍大涨时不做空)。单位:百分比数值。2026-01-31新增。"},
|
||||
{"config_key": "TAKE_PROFIT_1_PERCENT", "config_value": "0.15", "config_type": "number", "category": "strategy",
|
||||
"description": "分步止盈第一目标(保证金百分比,如 0.15=15%)。第一目标触发后了结50%仓位,剩余追求第二目标。"},
|
||||
{"config_key": "TAKE_PROFIT_1_PERCENT", "config_value": "0.2", "config_type": "number", "category": "strategy",
|
||||
"description": "分步止盈第一目标(保证金百分比,如 0.2=20%)。2026-02-12 提高以改善盈亏比。"},
|
||||
{"config_key": "MIN_RR_FOR_TP1", "config_value": "1.5", "config_type": "number", "category": "strategy",
|
||||
"description": "第一目标止盈相对止损的最小盈亏比(TP1 至少为止损距离的 1.5 倍)。2026-02-12 新增。"},
|
||||
{"config_key": "SCAN_EXTRA_SYMBOLS_FOR_SUPPLEMENT", "config_value": "8", "config_type": "number", "category": "scan",
|
||||
"description": "智能补单:多返回的候选数量。当前 TOP_N 中部分因冷却等被跳过时,仍会尝试这批额外候选,避免无单可下。"},
|
||||
{"config_key": "BETA_FILTER_ENABLED", "config_value": "true", "config_type": "boolean", "category": "strategy",
|
||||
|
|
|
|||
|
|
@ -8,11 +8,12 @@ import './ConfigPanel.css' // 复用 ConfigPanel 的样式
|
|||
|
||||
// 复用 ConfigPanel 的 ConfigItem 组件
|
||||
// 部分配置项使用“数值原样”(如 RSI 0–100、24h 涨跌幅 25 表示 25%),不做 0–1 比例转换
|
||||
const NUMBER_AS_IS_KEYS = new Set([
|
||||
const NUMBER_AS_IS_KEYS = new Set([
|
||||
'MAX_RSI_FOR_LONG',
|
||||
'MIN_RSI_FOR_SHORT',
|
||||
'MAX_CHANGE_PERCENT_FOR_LONG',
|
||||
'MAX_CHANGE_PERCENT_FOR_SHORT',
|
||||
'MIN_RR_FOR_TP1',
|
||||
])
|
||||
// 配置项中文标签(便于识别)
|
||||
const KEY_LABELS = {
|
||||
|
|
@ -27,6 +28,8 @@ const KEY_LABELS = {
|
|||
SYMBOL_LOSS_COOLDOWN_SEC: '冷却时间(秒)',
|
||||
RSI_EXTREME_REVERSE_ENABLED: 'RSI 极端反向(超买反空/超卖反多)',
|
||||
RSI_EXTREME_REVERSE_ONLY_NEUTRAL_4H: 'RSI 反向仅允许 4H 中性',
|
||||
MIN_RR_FOR_TP1: '第一目标最小盈亏比(相对止损)',
|
||||
AUTO_TRADE_ALLOW_4H_NEUTRAL: '允许 4H 中性时自动交易',
|
||||
}
|
||||
|
||||
const ConfigItem = ({ label, config, onUpdate, disabled }) => {
|
||||
|
|
@ -354,58 +357,61 @@ const GlobalConfig = () => {
|
|||
}
|
||||
},
|
||||
altcoin: {
|
||||
name: '山寨币狙击(高盈亏比)',
|
||||
desc: '专为山寨币设计:宽止损(2.0倍ATR+12%固定)、合理盈亏比(3:1)、移动止损保护利润、严格成交量过滤(≥3000万美元)。2026-01-27优化:让收益率真实,胜率正常化。期望胜率40%+,盈亏比1.5:1+。',
|
||||
name: '山寨币策略(当前推荐)',
|
||||
desc: '与 2026-02-12 策略一致:4H 中性不自动交易、做多 RSI≤65、第一目标止盈 20%、止损 3×ATR、盈亏比 3:1、同品种连亏冷却。',
|
||||
configs: {
|
||||
// 风险控制(最关键)- 2026-01-27优化:让收益率真实,胜率正常化
|
||||
ATR_STOP_LOSS_MULTIPLIER: 1.5, // ATR止损1.5倍(2026-01-27优化:收紧止损,减少单笔亏损)
|
||||
STOP_LOSS_PERCENT: 12.0, // 固定止损12%(收紧止损,减少单笔亏损)
|
||||
RISK_REWARD_RATIO: 3.0, // 盈亏比3:1(降低,更容易触发,保证胜率)
|
||||
ATR_TAKE_PROFIT_MULTIPLIER: 2.0, // ATR止盈2.0倍(2026-01-27优化:降低止盈目标,更容易触发)
|
||||
TAKE_PROFIT_PERCENT: 20.0, // 固定止盈20%(降低止盈目标,更容易触发,提升止盈单比例)
|
||||
MIN_HOLD_TIME_SEC: 0, // 取消持仓锁(山寨币变化快)
|
||||
USE_FIXED_RISK_SIZING: true, // 固定风险
|
||||
FIXED_RISK_PERCENT: 1.0, // 每笔最多亏1%
|
||||
USE_DYNAMIC_ATR_MULTIPLIER: false, // 不使用动态ATR
|
||||
|
||||
// 移动止损(必须开启)- 2026-01-27优化:与第一目标止盈一致
|
||||
USE_TRAILING_STOP: true, // 启用移动止损保护利润
|
||||
TRAILING_STOP_ACTIVATION: 20.0, // 盈利20%后激活(与第一目标止盈一致)
|
||||
TRAILING_STOP_PROTECT: 10.0, // 保护10%利润(给回撤足够空间)
|
||||
|
||||
// 仓位管理
|
||||
MAX_POSITION_PERCENT: 1.5, // 单笔1.5%(山寨币不加仓)
|
||||
MAX_TOTAL_POSITION_PERCENT: 12.0, // 总仓位12%
|
||||
MAX_DAILY_ENTRIES: 8, // 每日最多8笔(增加交易频率)
|
||||
MAX_OPEN_POSITIONS: 4, // 最多4个持仓
|
||||
LEVERAGE: 8, // 基础杠杆8倍
|
||||
MAX_LEVERAGE: 12, // 最大杠杆12倍
|
||||
USE_DYNAMIC_LEVERAGE: false, // 不使用动态杠杆
|
||||
|
||||
// 品种筛选(流动性为王)
|
||||
MIN_VOLUME_24H: 30000000, // 24H成交额≥3000万美元
|
||||
MIN_VOLUME_24H_STRICT: 50000000, // 严格过滤≥5000万
|
||||
MIN_VOLATILITY: 3.0, // 最小波动率3%
|
||||
TOP_N_SYMBOLS: 8, // 选择信号最强的8个(给更多选择余地,避免错过好机会)
|
||||
MAX_SCAN_SYMBOLS: 250, // 扫描前250个(增加覆盖率,从27.6%提升到46.0%)
|
||||
MIN_SIGNAL_STRENGTH: 5, // 信号强度≥5(MACD金叉/死叉已足够,配合其他筛选)
|
||||
EXCLUDE_MAJOR_COINS: true, // 排除主流币(BTC、ETH、BNB等),专注于山寨币
|
||||
|
||||
// 时间框架
|
||||
SCAN_INTERVAL: 1800, // 扫描间隔30分钟(增加交易机会)
|
||||
PRIMARY_INTERVAL: '4h', // 主周期4小时
|
||||
ENTRY_INTERVAL: '1h', // 入场周期1小时
|
||||
CONFIRM_INTERVAL: '1d', // 确认周期日线
|
||||
|
||||
// 智能入场
|
||||
SMART_ENTRY_ENABLED: true, // 开启智能入场
|
||||
ENTRY_SYMBOL_COOLDOWN_SEC: 1800, // 币种冷却30分钟
|
||||
ENTRY_MAX_DRIFT_PCT_TRENDING: 0.8, // 追价偏离0.8%
|
||||
ENTRY_MAX_DRIFT_PCT_RANGING: 0.3, // 震荡偏离0.3%
|
||||
|
||||
// 交易控制
|
||||
AUTO_TRADE_ONLY_TRENDING: true, // 只做趋势市
|
||||
AUTO_TRADE_ALLOW_4H_NEUTRAL: true, // 允许4H中性(提高交易频率,宽止损+高盈亏比已考虑低胜率)
|
||||
// 风险与止盈止损(与当前全局默认一致)
|
||||
ATR_STOP_LOSS_MULTIPLIER: 3.0, // 3×ATR 减少噪音止损
|
||||
STOP_LOSS_PERCENT: 0.12,
|
||||
RISK_REWARD_RATIO: 3.0, // 盈亏比 3:1
|
||||
TAKE_PROFIT_1_PERCENT: 0.2, // 第一目标止盈 20%
|
||||
TAKE_PROFIT_PERCENT: 0.30, // 第二目标 30%
|
||||
MIN_RR_FOR_TP1: 1.5, // 第一目标至少 1.5 倍止损距离
|
||||
MIN_HOLD_TIME_SEC: 1800,
|
||||
USE_FIXED_RISK_SIZING: true,
|
||||
FIXED_RISK_PERCENT: 0.02, // 每笔风险 2%
|
||||
USE_DYNAMIC_ATR_MULTIPLIER: false,
|
||||
|
||||
USE_TRAILING_STOP: true,
|
||||
TRAILING_STOP_ACTIVATION: 0.20,
|
||||
TRAILING_STOP_PROTECT: 0.10,
|
||||
|
||||
MAX_POSITION_PERCENT: 0.08,
|
||||
MAX_TOTAL_POSITION_PERCENT: 0.40,
|
||||
MAX_DAILY_ENTRIES: 8,
|
||||
MAX_OPEN_POSITIONS: 4,
|
||||
LEVERAGE: 10,
|
||||
MAX_LEVERAGE: 15,
|
||||
USE_DYNAMIC_LEVERAGE: true,
|
||||
|
||||
MIN_VOLUME_24H: 10000000,
|
||||
MIN_VOLATILITY: 0.02,
|
||||
TOP_N_SYMBOLS: 20,
|
||||
MAX_SCAN_SYMBOLS: 500,
|
||||
MIN_SIGNAL_STRENGTH: 8,
|
||||
EXCLUDE_MAJOR_COINS: true,
|
||||
SCAN_EXTRA_SYMBOLS_FOR_SUPPLEMENT: 15,
|
||||
|
||||
SCAN_INTERVAL: 1800,
|
||||
PRIMARY_INTERVAL: '1h',
|
||||
ENTRY_INTERVAL: '15m',
|
||||
CONFIRM_INTERVAL: '4h',
|
||||
|
||||
AUTO_TRADE_ONLY_TRENDING: true,
|
||||
AUTO_TRADE_ALLOW_4H_NEUTRAL: false, // 4H 中性不自动交易,提升质量
|
||||
MAX_RSI_FOR_LONG: 65, // 做多不追高
|
||||
MIN_RSI_FOR_SHORT: 30,
|
||||
MAX_CHANGE_PERCENT_FOR_LONG: 25,
|
||||
MAX_CHANGE_PERCENT_FOR_SHORT: 10,
|
||||
|
||||
SYMBOL_LOSS_COOLDOWN_ENABLED: true,
|
||||
SYMBOL_MAX_CONSECUTIVE_LOSSES: 2,
|
||||
SYMBOL_LOSS_COOLDOWN_SEC: 3600,
|
||||
|
||||
BETA_FILTER_ENABLED: true,
|
||||
BETA_FILTER_THRESHOLD: -0.005,
|
||||
ENTRY_SHORT_TREND_FILTER_ENABLED: true,
|
||||
MAX_TREND_MOVE_BEFORE_ENTRY: 0.05,
|
||||
},
|
||||
},
|
||||
aggressive: {
|
||||
|
|
@ -452,15 +458,17 @@ const GlobalConfig = () => {
|
|||
|
||||
// 已知全局配置项默认值(兜底:后端未返回时前端仍能显示,避免看不到新配置项)
|
||||
const KNOWN_GLOBAL_CONFIG_DEFAULTS = {
|
||||
MAX_RSI_FOR_LONG: { value: 70, type: 'number', category: 'strategy', description: '做多时 RSI 超过此值则不开多(避免超买区追多)。2026-01-31新增。' },
|
||||
MAX_RSI_FOR_LONG: { value: 65, type: 'number', category: 'strategy', description: '做多时 RSI 超过此值则不开多(2026-02-12:65 避免追高)。' },
|
||||
MAX_CHANGE_PERCENT_FOR_LONG: { value: 25, type: 'number', category: 'strategy', description: '做多时 24h 涨跌幅超过此值则不开多(避免追大涨)。单位:百分比数值,如 25 表示 25%。' },
|
||||
MIN_RSI_FOR_SHORT: { value: 30, type: 'number', category: 'strategy', description: '做空时 RSI 低于此值则不做空(避免深超卖反弹)。2026-01-31新增。' },
|
||||
MAX_CHANGE_PERCENT_FOR_SHORT: { value: 10, type: 'number', category: 'strategy', description: '做空时 24h 涨跌幅超过此值则不做空(24h 仍大涨时不做空)。单位:百分比数值。' },
|
||||
TAKE_PROFIT_1_PERCENT: { value: 0.15, type: 'number', category: 'strategy', description: '分步止盈第一目标(保证金百分比,如 0.15=15%)。第一目标触发后了结50%仓位。' },
|
||||
TAKE_PROFIT_1_PERCENT: { value: 0.2, type: 'number', category: 'strategy', description: '分步止盈第一目标(保证金百分比,如 0.2=20%)。2026-02-12 提高以改善盈亏比。' },
|
||||
SCAN_EXTRA_SYMBOLS_FOR_SUPPLEMENT: { value: 8, type: 'number', category: 'scan', description: '智能补单:多返回的候选数量,冷却时仍可尝试后续交易对。' },
|
||||
SYMBOL_LOSS_COOLDOWN_ENABLED: { value: true, type: 'boolean', category: 'strategy', description: '是否启用同一交易对连续亏损后的冷却。' },
|
||||
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 新增。' },
|
||||
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%)。' },
|
||||
RSI_EXTREME_REVERSE_ENABLED: { value: false, type: 'boolean', category: 'strategy', description: '开启后:原信号做多但 RSI 超买(≥做多上限)时改为做空;原信号做空但 RSI 超卖(≤做空下限)时改为做多。属均值回归思路,可填补超买超卖时不下单的空置;默认关闭。' },
|
||||
|
|
@ -470,9 +478,9 @@ const GlobalConfig = () => {
|
|||
TRAILING_STOP_ACTIVATION: { value: 0.20, type: 'number', category: 'risk', description: '移动止损激活阈值(盈利达到此比例后激活,如 20.0=20%)。' },
|
||||
TRAILING_STOP_PROTECT: { value: 0.10, type: 'number', category: 'risk', description: '移动止损保护阈值(回撤至此比例时触发止损,如 10.0=10%)。' },
|
||||
LEVERAGE: { value: 5, type: 'number', category: 'risk', description: '基础杠杆倍数。' },
|
||||
RISK_REWARD_RATIO: { value: 1.5, type: 'number', category: 'risk', description: '盈亏比目标(用于计算动态止盈止损)。' },
|
||||
RISK_REWARD_RATIO: { value: 3, type: 'number', category: 'risk', description: '盈亏比目标(用于计算动态止盈止损,建议 3:1)。' },
|
||||
ATR_TAKE_PROFIT_MULTIPLIER: { value: 1.5, type: 'number', category: 'risk', description: 'ATR 止盈倍数。' },
|
||||
ATR_STOP_LOSS_MULTIPLIER: { value: 2.5, type: 'number', category: 'risk', description: 'ATR 止损倍数。' },
|
||||
ATR_STOP_LOSS_MULTIPLIER: { value: 3, type: 'number', category: 'risk', description: 'ATR 止损倍数(2026-02-12:3 减少噪音止损)。' },
|
||||
USE_FIXED_RISK_SIZING: { value: false, type: 'boolean', category: 'risk', description: '是否使用固定风险仓位计算(基于止损距离和账户余额)。' },
|
||||
FIXED_RISK_PERCENT: { value: 0.01, type: 'number', category: 'risk', description: '每笔交易固定风险百分比(如 0.01=1%)。' },
|
||||
MAX_LEVERAGE_SMALL_CAP: { value: 3, type: 'number', category: 'risk', description: '小市值/山寨币最大允许杠杆。' },
|
||||
|
|
@ -971,41 +979,25 @@ const GlobalConfig = () => {
|
|||
}
|
||||
|
||||
const presetUiMeta = {
|
||||
altcoin: { group: 'altcoin', tag: '山寨币专用' },
|
||||
swing: { group: 'limit', tag: '纯限价' },
|
||||
strict: { group: 'limit', tag: '纯限价' },
|
||||
fill: { group: 'smart', tag: '智能入场' },
|
||||
steady: { group: 'smart', tag: '智能入场' },
|
||||
conservative: { group: 'legacy', tag: '传统' },
|
||||
balanced: { group: 'legacy', tag: '传统' },
|
||||
aggressive: { group: 'legacy', tag: '高频实验' },
|
||||
script_v1: { group: 'legacy', tag: '脚本迁移' },
|
||||
altcoin: { group: 'altcoin', tag: '当前推荐' },
|
||||
swing: { group: 'backup', tag: '纯限价' },
|
||||
strict: { group: 'backup', tag: '精选低频' },
|
||||
conservative: { group: 'backup', tag: '保守' },
|
||||
}
|
||||
|
||||
// 快速方案只保留:当前推荐(山寨币)+ 备选(纯限价/保守),其余不展示
|
||||
const presetGroups = [
|
||||
{
|
||||
key: 'altcoin',
|
||||
title: '⭐ 山寨币高盈亏比狙击策略',
|
||||
desc: '专为山寨币设计:宽止损(2.0×ATR)+ 高盈亏比(4:1)+ 移动止损 + 严格流动性筛选。目标胜率35%,期望值+0.75%/笔。',
|
||||
title: '当前推荐 · 山寨币策略',
|
||||
desc: '与当前策略一致:4H 中性不自动交易、做多 RSI≤65、第一目标止盈 20%、止损 3×ATR、盈亏比 3:1、同品种连亏冷却。',
|
||||
presetKeys: ['altcoin'],
|
||||
},
|
||||
{
|
||||
key: 'limit',
|
||||
title: 'A. 纯限价(SMART_ENTRY_ENABLED=false)',
|
||||
desc: '只下 1 次限价单,未在确认时间内成交就撤单跳过。更控频、更接近"波段",但更容易出现 NEW→撤单。',
|
||||
presetKeys: ['swing', 'strict'],
|
||||
},
|
||||
{
|
||||
key: 'smart',
|
||||
title: 'B. 智能入场(SMART_ENTRY_ENABLED=true)',
|
||||
desc: '限价回调 + 受限追价 +(趋势强时)可控市价兜底。更少漏单,但必须限制追价步数与偏离上限,避免回到高频追价。',
|
||||
presetKeys: ['fill', 'steady'],
|
||||
},
|
||||
{
|
||||
key: 'legacy',
|
||||
title: 'C. 传统 / 实验(不建议长期)',
|
||||
desc: '这组更多用于对比或临时实验(频率更高/更容易过度交易),建议在稳定盈利前谨慎使用。',
|
||||
presetKeys: ['conservative', 'balanced', 'aggressive', 'script_v1'],
|
||||
key: 'backup',
|
||||
title: '备选方案(纯限价 / 保守)',
|
||||
desc: '需要更少出单或纯限价时可选:波段回归、精选低频、保守传统。',
|
||||
presetKeys: ['swing', 'strict', 'conservative'],
|
||||
},
|
||||
]
|
||||
|
||||
|
|
@ -1157,16 +1149,16 @@ const GlobalConfig = () => {
|
|||
</div>
|
||||
</div>
|
||||
<div className="preset-guide">
|
||||
<div className="preset-guide-title">怎么选更不迷糊</div>
|
||||
<div className="preset-guide-title">使用说明</div>
|
||||
<ul className="preset-guide-list">
|
||||
<li>
|
||||
<strong>先选入场机制</strong>:纯限价(更控频但可能撤单) vs 智能入场(更少漏单但需限制追价)。
|
||||
<strong>日常使用</strong>:选「山寨币策略(当前推荐)」即可,已与当前策略(4H 中性关闭、RSI/止盈/止损/盈亏比)对齐。
|
||||
</li>
|
||||
<li>
|
||||
<strong>再看"会不会下单"</strong>:如果你发现几乎不出单,优先把 <code>AUTO_TRADE_ONLY_TRENDING</code> 关掉、把 <code>AUTO_TRADE_ALLOW_4H_NEUTRAL</code> 打开。
|
||||
<strong>若几乎不出单</strong>:可临时把 <code>AUTO_TRADE_ALLOW_4H_NEUTRAL</code> 打开(会增加 4H 震荡单,信号质量下降)。
|
||||
</li>
|
||||
<li>
|
||||
<strong>最后再微调</strong>:想更容易成交 → 调小 <code>LIMIT_ORDER_OFFSET_PCT</code>、调大 <code>ENTRY_CONFIRM_TIMEOUT_SEC</code>。
|
||||
<strong>要更少出单</strong>:选备选里的「波段回归」或「精选低频」。
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -206,11 +206,11 @@ def _get_trading_config():
|
|||
'STOP_LOSS_PERCENT': 0.05, # 基础止损5%(配合ATR动态止损,作为保底)
|
||||
'TAKE_PROFIT_PERCENT': 0.80, # 第二目标止盈80%(追求大趋势收益)
|
||||
'TAKE_PROFIT_1_PERCENT': 0.30, # 第一目标止盈30%(确保3:1盈亏比)
|
||||
'MIN_RR_FOR_TP1': 1.2, # 第一目标止盈的最小盈亏比(相对于止损距离)
|
||||
'MIN_RR_FOR_TP1': 1.5, # 第一目标止盈的最小盈亏比(相对于止损距离)(2026-02-12:1.5 改善盈亏比)
|
||||
'MIN_STOP_LOSS_PRICE_PCT': 0.025, # 最小止损价格变动2.5%
|
||||
'MIN_TAKE_PROFIT_PRICE_PCT': 0.02, # 最小止盈价格变动2%
|
||||
'USE_ATR_STOP_LOSS': True, # 使用ATR动态止损
|
||||
'ATR_STOP_LOSS_MULTIPLIER': 2.0, # ATR止损倍数2.0(放宽止损,适应山寨币高波动)
|
||||
'ATR_STOP_LOSS_MULTIPLIER': 3.0, # ATR止损倍数3.0(2026-02-12:减少噪音止损,配合止盈拉远)
|
||||
'ATR_TAKE_PROFIT_MULTIPLIER': 6.0, # ATR止盈倍数6.0(追求更高盈亏比)
|
||||
'RISK_REWARD_RATIO': 3.0, # 盈亏比3:1
|
||||
'ATR_PERIOD': 14, # ATR计算周期14
|
||||
|
|
@ -239,7 +239,7 @@ def _get_trading_config():
|
|||
'BETA_FILTER_ENABLED': True, # 大盘共振过滤:BTC/ETH下跌时屏蔽多单
|
||||
'BETA_FILTER_THRESHOLD': -0.005, # -0.5%(2026-01-27优化:更敏感地过滤大盘风险,15分钟内跌幅超过0.5%即屏蔽多单)
|
||||
# ===== RSI / 24h 涨跌幅过滤(避免追高杀跌)=====
|
||||
'MAX_RSI_FOR_LONG': 70, # 做多时 RSI 超过此值则不开多(避免超买区追多)
|
||||
'MAX_RSI_FOR_LONG': 65, # 做多时 RSI 超过此值则不开多(2026-02-12:65 避免追高)
|
||||
'MAX_CHANGE_PERCENT_FOR_LONG': 25, # 做多时 24h 涨跌幅超过此值则不开多(避免追大涨)
|
||||
'MIN_RSI_FOR_SHORT': 30, # 做空时 RSI 低于此值则不做空(避免深超卖反弹)
|
||||
'MAX_CHANGE_PERCENT_FOR_SHORT': 10, # 做空时 24h 涨跌幅超过此值则不做空(24h 仍大涨时不做空)
|
||||
|
|
|
|||
|
|
@ -614,7 +614,7 @@ class PositionManager:
|
|||
# 分步止盈(基于"实际成交价 + 已计算的止损/止盈")
|
||||
# ⚠️ 第一目标使用 TAKE_PROFIT_1_PERCENT(默认15%),与第二目标 TAKE_PROFIT_PERCENT 分离,提高整体盈亏比
|
||||
# 第一目标和触发条件必须一致,都使用 TAKE_PROFIT_1_PERCENT
|
||||
take_profit_1_pct_margin = config.TRADING_CONFIG.get('TAKE_PROFIT_1_PERCENT', 0.15)
|
||||
take_profit_1_pct_margin = config.TRADING_CONFIG.get('TAKE_PROFIT_1_PERCENT', 0.20)
|
||||
# 兼容百分比形式和比例形式
|
||||
if take_profit_1_pct_margin is not None and take_profit_1_pct_margin > 1:
|
||||
take_profit_1_pct_margin = take_profit_1_pct_margin / 100.0
|
||||
|
|
@ -628,7 +628,7 @@ class PositionManager:
|
|||
# ⚠️ 2026-02-10优化:确保TP1至少有 1.2倍 的盈亏比 (相对于止损距离)
|
||||
# 避免在高波动(宽止损)情况下,固定保证金比例止盈导致盈亏比过低
|
||||
if stop_distance_for_tp is not None and stop_distance_for_tp > 0:
|
||||
min_rr_for_tp1 = config.TRADING_CONFIG.get('MIN_RR_FOR_TP1', 1.2)
|
||||
min_rr_for_tp1 = config.TRADING_CONFIG.get('MIN_RR_FOR_TP1', 1.5)
|
||||
min_tp1_distance = stop_distance_for_tp * min_rr_for_tp1
|
||||
if min_tp1_distance > tp1_distance:
|
||||
logger.info(f"{symbol} [优化] TP1距离 ({tp1_distance:.4f}) 小于 {min_rr_for_tp1}倍止损距离 ({min_tp1_distance:.4f}),已自动调整以保证盈亏比")
|
||||
|
|
@ -1815,7 +1815,7 @@ class PositionManager:
|
|||
# ✅ 已移除时间锁限制,可以立即执行
|
||||
if not partial_profit_taken and take_profit_1 is not None:
|
||||
# 直接使用配置的 TAKE_PROFIT_1_PERCENT,与开仓时计算的第一目标一致
|
||||
take_profit_1_pct_margin_config = config.TRADING_CONFIG.get('TAKE_PROFIT_1_PERCENT', 0.15)
|
||||
take_profit_1_pct_margin_config = config.TRADING_CONFIG.get('TAKE_PROFIT_1_PERCENT', 0.20)
|
||||
# 兼容百分比形式和比例形式
|
||||
if take_profit_1_pct_margin_config > 1:
|
||||
take_profit_1_pct_margin_config = take_profit_1_pct_margin_config / 100.0
|
||||
|
|
@ -3288,7 +3288,7 @@ class PositionManager:
|
|||
# 第一目标:TAKE_PROFIT_1_PERCENT 止盈(默认15%保证金),了结50%仓位
|
||||
if not partial_profit_taken and take_profit_1 is not None:
|
||||
# 直接使用配置的 TAKE_PROFIT_1_PERCENT,与开仓时计算的第一目标一致
|
||||
take_profit_1_pct_margin_config = config.TRADING_CONFIG.get('TAKE_PROFIT_1_PERCENT', 0.15)
|
||||
take_profit_1_pct_margin_config = config.TRADING_CONFIG.get('TAKE_PROFIT_1_PERCENT', 0.20)
|
||||
# 兼容百分比形式和比例形式
|
||||
if take_profit_1_pct_margin_config > 1:
|
||||
take_profit_1_pct_margin_config = take_profit_1_pct_margin_config / 100.0
|
||||
|
|
@ -3300,7 +3300,7 @@ class PositionManager:
|
|||
min_profit_margin = 2.0
|
||||
|
||||
if pnl_percent_margin >= take_profit_1_pct_margin and pnl_percent_margin > min_profit_margin:
|
||||
take_profit_pct_config = config.TRADING_CONFIG.get('TAKE_PROFIT_1_PERCENT', 0.15)
|
||||
take_profit_pct_config = config.TRADING_CONFIG.get('TAKE_PROFIT_1_PERCENT', 0.20)
|
||||
if take_profit_pct_config > 1:
|
||||
take_profit_pct_config = take_profit_pct_config / 100.0
|
||||
take_profit_pct_display = take_profit_pct_config * 100
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user