a
This commit is contained in:
parent
f7c68efb3e
commit
81c73eb9cd
|
|
@ -203,39 +203,39 @@ def _get_trading_config():
|
||||||
return _config_manager.get_trading_config()
|
return _config_manager.get_trading_config()
|
||||||
# 回退到默认配置
|
# 回退到默认配置
|
||||||
return {
|
return {
|
||||||
# ===== 用户风险旋钮(傻瓜化)=====
|
# ===== 用户风险旋钮(山寨币专属策略)=====
|
||||||
'AUTO_TRADE_ENABLED': True, # 自动交易总开关
|
'AUTO_TRADE_ENABLED': True, # 自动交易总开关
|
||||||
'MAX_OPEN_POSITIONS': 3, # 同时持仓数量上限
|
'MAX_OPEN_POSITIONS': 4, # 同时持仓数量上限(总仓位12% / 单笔1.5% = 最多4个)
|
||||||
'MAX_DAILY_ENTRIES': 8, # 每日最多开仓次数
|
'MAX_DAILY_ENTRIES': 5, # 每日最多5笔,山寨币少做多看
|
||||||
|
|
||||||
'MAX_POSITION_PERCENT': 0.08, # 提高单笔仓位到8%(原来5%),增加收益
|
'MAX_POSITION_PERCENT': 0.015, # 单笔仓位1.5%(山寨币风险高,不加仓)
|
||||||
'MAX_TOTAL_POSITION_PERCENT': 0.40, # 提高总仓位到40%(原来30%),允许更多持仓
|
'MAX_TOTAL_POSITION_PERCENT': 0.12, # 总仓位12%(保守控制总风险)
|
||||||
'MIN_POSITION_PERCENT': 0.02, # 提高最小仓位到2%(原来1%),避免过小仓位
|
'MIN_POSITION_PERCENT': 0.01, # 最小仓位1%
|
||||||
'MIN_MARGIN_USDT': 5.0, # 提高最小保证金到5美元(原来0.5U),确保收益可观
|
'MIN_MARGIN_USDT': 5.0, # 最小保证金5美元
|
||||||
'MIN_CHANGE_PERCENT': 0.5, # 降低到0.5%以获取更多推荐(推荐系统可以更宽松)
|
'MIN_CHANGE_PERCENT': 0.5, # 最小价格变动0.5%
|
||||||
'TOP_N_SYMBOLS': 50, # 每次扫描后处理的交易对数量(增加到50以获取更多推荐)
|
'TOP_N_SYMBOLS': 5, # 只做信号最强的5个,专注优质机会
|
||||||
'MAX_SCAN_SYMBOLS': 500, # 扫描的最大交易对数量(0表示扫描所有)
|
'MAX_SCAN_SYMBOLS': 150, # 扫描前150个,覆盖主流山寨
|
||||||
'STOP_LOSS_PERCENT': 0.10, # 止损百分比(相对于保证金),默认10%
|
'STOP_LOSS_PERCENT': 0.15, # 止损15%(山寨币波动大,止损要宽)
|
||||||
'TAKE_PROFIT_PERCENT': 0.25, # 止盈百分比(相对于保证金),默认25%(从30%放宽,配合ATR止盈放大盈亏比)
|
'TAKE_PROFIT_PERCENT': 0.60, # 止盈60%(4:1盈亏比,追求大赢家)
|
||||||
'MIN_STOP_LOSS_PRICE_PCT': 0.02, # 最小止损价格变动百分比(如0.02表示2%),防止止损过紧,默认2%
|
'MIN_STOP_LOSS_PRICE_PCT': 0.02, # 最小止损价格变动2%
|
||||||
'MIN_TAKE_PROFIT_PRICE_PCT': 0.02, # 最小止盈价格变动百分比(如0.02表示2%),防止ATR过小时计算出不切实际的微小止盈距离,默认2%
|
'MIN_TAKE_PROFIT_PRICE_PCT': 0.02, # 最小止盈价格变动2%
|
||||||
'USE_ATR_STOP_LOSS': True, # 是否使用ATR动态止损(优先于固定百分比)
|
'USE_ATR_STOP_LOSS': True, # 使用ATR动态止损
|
||||||
'ATR_STOP_LOSS_MULTIPLIER': 2.5, # ATR止损倍数(放宽至2.5,配合固定风险2%,提升胜率)
|
'ATR_STOP_LOSS_MULTIPLIER': 2.0, # ATR止损倍数2.0(容忍山寨币高波动)
|
||||||
'ATR_TAKE_PROFIT_MULTIPLIER': 1.5, # ATR止盈倍数(1.5:1盈亏比,更容易达成)
|
'ATR_TAKE_PROFIT_MULTIPLIER': 8.0, # ATR止盈倍数8.0(盈亏比4:1)
|
||||||
'RISK_REWARD_RATIO': 1.5, # 盈亏比(配合止盈倍数)
|
'RISK_REWARD_RATIO': 4.0, # 盈亏比4:1(山寨币必须追求大赢家)
|
||||||
'ATR_PERIOD': 14, # ATR计算周期(默认14)
|
'ATR_PERIOD': 14, # ATR计算周期14
|
||||||
'USE_DYNAMIC_ATR_MULTIPLIER': False, # 是否根据波动率动态调整ATR倍数
|
'USE_DYNAMIC_ATR_MULTIPLIER': False, # 不使用动态ATR
|
||||||
'ATR_MULTIPLIER_MIN': 1.5, # 动态ATR倍数最小值
|
'ATR_MULTIPLIER_MIN': 1.5, # 动态ATR倍数最小值
|
||||||
'ATR_MULTIPLIER_MAX': 2.5, # 动态ATR倍数最大值
|
'ATR_MULTIPLIER_MAX': 2.5, # 动态ATR倍数最大值
|
||||||
'SCAN_INTERVAL': 1800,
|
'SCAN_INTERVAL': 3600, # 扫描间隔1小时(3600秒),不要太频繁
|
||||||
'KLINE_INTERVAL': '1h',
|
'KLINE_INTERVAL': '1h',
|
||||||
'PRIMARY_INTERVAL': '1h',
|
'PRIMARY_INTERVAL': '4h', # 主周期4小时,过滤噪音
|
||||||
'CONFIRM_INTERVAL': '4h',
|
'CONFIRM_INTERVAL': '1d', # 确认周期日线,看大趋势
|
||||||
'ENTRY_INTERVAL': '15m',
|
'ENTRY_INTERVAL': '1h', # 入场周期1小时,避免太小的时间框架
|
||||||
'MIN_VOLUME_24H': 5000000, # 降低到500万以获取更多推荐(推荐系统可以更宽松)
|
'MIN_VOLUME_24H': 30000000, # 24小时成交额≥3000万美元,过滤垃圾币
|
||||||
'MIN_VOLUME_24H_STRICT': 10000000, # ⚠️ 优化:严格成交量过滤,24H Volume低于1000万美金直接剔除
|
'MIN_VOLUME_24H_STRICT': 50000000, # 严格过滤≥5000万美元
|
||||||
'MIN_VOLATILITY': 0.02,
|
'MIN_VOLATILITY': 0.03, # 最小波动率3%,过滤死币
|
||||||
'MIN_SIGNAL_STRENGTH': 8, # 提高至8,只交易高质量信号(低频波段)
|
'MIN_SIGNAL_STRENGTH': 7, # 信号强度≥7,保持较高门槛
|
||||||
|
|
||||||
# ===== 动态过滤优化 =====
|
# ===== 动态过滤优化 =====
|
||||||
'BETA_FILTER_ENABLED': True, # 大盘共振过滤:BTC/ETH下跌时屏蔽多单
|
'BETA_FILTER_ENABLED': True, # 大盘共振过滤:BTC/ETH下跌时屏蔽多单
|
||||||
|
|
@ -243,22 +243,22 @@ def _get_trading_config():
|
||||||
'ATR_SPIKE_THRESHOLD': 2.0, # ATR异常激增阈值(当前ATR / 平均ATR)
|
'ATR_SPIKE_THRESHOLD': 2.0, # ATR异常激增阈值(当前ATR / 平均ATR)
|
||||||
'SIGNAL_STRENGTH_POSITION_MULTIPLIER': {8: 0.5, 9: 1.0, 10: 1.0}, # 信号强度分级:8分50%仓位,9-10分100%仓位
|
'SIGNAL_STRENGTH_POSITION_MULTIPLIER': {8: 0.5, 9: 1.0, 10: 1.0}, # 信号强度分级:8分50%仓位,9-10分100%仓位
|
||||||
|
|
||||||
# ===== 仓位管理优化 =====
|
# ===== 仓位管理优化(山寨币专属)=====
|
||||||
'USE_FIXED_RISK_SIZING': True, # 使用固定风险百分比计算仓位(凯利公式)
|
'USE_FIXED_RISK_SIZING': True, # 固定每笔风险,避免亏损扩大
|
||||||
'FIXED_RISK_PERCENT': 0.02, # 每笔单子承受的风险(2%)
|
'FIXED_RISK_PERCENT': 0.01, # 每笔最多亏总资金1%(山寨币风险高)
|
||||||
'MAX_LEVERAGE_SMALL_CAP': 5, # 小众币最大杠杆限制
|
'MAX_LEVERAGE_SMALL_CAP': 8, # 小众币最大杠杆8倍
|
||||||
'ATR_LEVERAGE_REDUCTION_THRESHOLD': 0.05, # ATR超过5%时降低杠杆
|
'ATR_LEVERAGE_REDUCTION_THRESHOLD': 0.05, # ATR超过5%时降低杠杆
|
||||||
'LEVERAGE': 10, # 基础杠杆倍数
|
'LEVERAGE': 8, # 基础杠杆降到8倍(山寨币波动大)
|
||||||
'USE_DYNAMIC_LEVERAGE': True, # 是否启用动态杠杆(根据信号强度调整)
|
'USE_DYNAMIC_LEVERAGE': False, # 不使用动态杠杆(保持简单)
|
||||||
'MAX_LEVERAGE': 15, # 最大杠杆倍数(降低到15,更保守,配合更大的保证金)
|
'MAX_LEVERAGE': 12, # 最大杠杆12倍,不要超过
|
||||||
# 移动止损:默认关闭(避免过早截断利润,让利润奔跑)
|
# 移动止损:必须开启!山寨币利润要保护
|
||||||
'USE_TRAILING_STOP': False,
|
'USE_TRAILING_STOP': True,
|
||||||
'TRAILING_STOP_ACTIVATION': 0.10, # 移动止损激活提高到10%(盈利10%后激活,给趋势更多空间)
|
'TRAILING_STOP_ACTIVATION': 0.30, # 盈利30%后激活(山寨币波动大)
|
||||||
'TRAILING_STOP_PROTECT': 0.05, # 保护利润提高到5%(保护5%利润,更合理)
|
'TRAILING_STOP_PROTECT': 0.15, # 保护15%利润(给回撤足够空间)
|
||||||
|
|
||||||
# 最小持仓时间锁(强制波段持仓纪律,避免分钟级平仓)
|
# 最小持仓时间锁:立即取消!山寨币30分钟可能暴涨暴跌50%
|
||||||
'MIN_HOLD_TIME_SEC': 1800, # 默认30分钟(1800秒),强制延长持仓时间
|
'MIN_HOLD_TIME_SEC': 0, # 取消持仓时间锁
|
||||||
'POSITION_SYNC_INTERVAL': 60, # 持仓状态同步间隔(秒),缩短到1分钟,确保状态及时同步
|
'POSITION_SYNC_INTERVAL': 60, # 持仓状态同步间隔60秒
|
||||||
|
|
||||||
# ===== 自动交易过滤(用于提升胜率/控频)=====
|
# ===== 自动交易过滤(用于提升胜率/控频)=====
|
||||||
# 是否仅在 marketRegime=trending 时才自动交易;否则只生成推荐
|
# 是否仅在 marketRegime=trending 时才自动交易;否则只生成推荐
|
||||||
|
|
@ -268,15 +268,15 @@ def _get_trading_config():
|
||||||
|
|
||||||
# ===== 智能入场(方案C)=====
|
# ===== 智能入场(方案C)=====
|
||||||
# 根治方案:默认关闭。关闭后回归“纯限价单模式”(不追价/不市价兜底/未成交撤单跳过)
|
# 根治方案:默认关闭。关闭后回归“纯限价单模式”(不追价/不市价兜底/未成交撤单跳过)
|
||||||
'SMART_ENTRY_ENABLED': False,
|
'SMART_ENTRY_ENABLED': True, # 开启智能入场,提高成交率
|
||||||
'SMART_ENTRY_STRONG_SIGNAL': 8, # 强信号阈值:≥8 更倾向趋势模式(允许市价兜底)
|
'SMART_ENTRY_STRONG_SIGNAL': 7, # 强信号阈值≥7
|
||||||
'ENTRY_SYMBOL_COOLDOWN_SEC': 120, # 同一symbol两次入场尝试的冷却时间(避免反复挂单/重入)
|
'ENTRY_SYMBOL_COOLDOWN_SEC': 1800, # 同一币种冷却30分钟(1800秒),避免频繁操作
|
||||||
'ENTRY_TIMEOUT_SEC': 180, # 智能入场总预算(秒)(限价/追价逻辑内部使用)
|
'ENTRY_TIMEOUT_SEC': 180, # 智能入场总预算(秒)(限价/追价逻辑内部使用)
|
||||||
'ENTRY_STEP_WAIT_SEC': 15, # 每步等待成交时间(秒)
|
'ENTRY_STEP_WAIT_SEC': 15, # 每步等待成交时间(秒)
|
||||||
'ENTRY_CHASE_MAX_STEPS': 4, # 最多追价步数(逐步减少 offset)
|
'ENTRY_CHASE_MAX_STEPS': 4, # 最多追价步数(逐步减少 offset)
|
||||||
'ENTRY_MARKET_FALLBACK_AFTER_SEC': 45, # 趋势强时:超过该秒数仍未成交 -> 评估是否市价兜底
|
'ENTRY_MARKET_FALLBACK_AFTER_SEC': 45, # 趋势强时:超过该秒数仍未成交 -> 评估是否市价兜底
|
||||||
'ENTRY_CONFIRM_TIMEOUT_SEC': 30, # 下单后最终确认成交的等待时间(秒)
|
'ENTRY_CONFIRM_TIMEOUT_SEC': 30, # 下单后最终确认成交的等待时间(秒)
|
||||||
'ENTRY_MAX_DRIFT_PCT_TRENDING': 0.6, # 趋势强时允许的最大追价偏离(相对初始限价)
|
'ENTRY_MAX_DRIFT_PCT_TRENDING': 0.8, # 追价偏离放宽到0.8%(山寨币跳空大)
|
||||||
'ENTRY_MAX_DRIFT_PCT_RANGING': 0.3, # 震荡/弱趋势时允许的最大追价偏离
|
'ENTRY_MAX_DRIFT_PCT_RANGING': 0.3, # 震荡/弱趋势时允许的最大追价偏离
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2793,12 +2793,12 @@ class PositionManager:
|
||||||
position_info['stopLoss'] = entry_price
|
position_info['stopLoss'] = entry_price
|
||||||
logger.info(
|
logger.info(
|
||||||
f"{symbol} [实时监控] 部分止盈后:剩余仓位止损移至成本价 {entry_price:.4f}(保本),"
|
f"{symbol} [实时监控] 部分止盈后:剩余仓位止损移至成本价 {entry_price:.4f}(保本),"
|
||||||
f"剩余50%仓位追求2.0:1止盈目标"
|
f"剩余50%仓位追求4.0:1止盈目标(山寨币策略:追求大赢家)"
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"{symbol} [实时监控] 部分止盈失败: {e}")
|
logger.error(f"{symbol} [实时监控] 部分止盈失败: {e}")
|
||||||
|
|
||||||
# 第二目标:2.0:1止盈,平掉剩余仓位
|
# 第二目标:4.0:1止盈,平掉剩余仓位(山寨币策略)
|
||||||
if partial_profit_taken and take_profit_2 is not None and not should_close:
|
if partial_profit_taken and take_profit_2 is not None and not should_close:
|
||||||
# 计算第二目标对应的保证金百分比(基于剩余仓位)
|
# 计算第二目标对应的保证金百分比(基于剩余仓位)
|
||||||
if position_info['side'] == 'BUY':
|
if position_info['side'] == 'BUY':
|
||||||
|
|
@ -2819,7 +2819,7 @@ class PositionManager:
|
||||||
should_close = True
|
should_close = True
|
||||||
exit_reason = 'take_profit'
|
exit_reason = 'take_profit'
|
||||||
logger.info(
|
logger.info(
|
||||||
f"{symbol} [实时监控] 触发第二目标止盈(2.0:1,基于保证金): "
|
f"{symbol} [实时监控] 触发第二目标止盈(4.0:1,山寨币策略): "
|
||||||
f"剩余仓位盈亏={remaining_pnl_pct_margin:.2f}% of margin >= 目标={take_profit_2_pct_margin:.2f}% of margin | "
|
f"剩余仓位盈亏={remaining_pnl_pct_margin:.2f}% of margin >= 目标={take_profit_2_pct_margin:.2f}% of margin | "
|
||||||
f"当前价={current_price_float:.4f}, 目标价={take_profit_2:.4f}, "
|
f"当前价={current_price_float:.4f}, 目标价={take_profit_2:.4f}, "
|
||||||
f"剩余数量={remaining_quantity:.4f}"
|
f"剩余数量={remaining_quantity:.4f}"
|
||||||
|
|
|
||||||
|
|
@ -452,15 +452,15 @@ class TradeRecommender:
|
||||||
else:
|
else:
|
||||||
stop_loss_pct = (stop_loss_price - entry_price) / entry_price
|
stop_loss_pct = (stop_loss_price - entry_price) / entry_price
|
||||||
|
|
||||||
# 第一目标:盈亏比1:1(锁定利润并设置保本损建议)
|
# 第一目标:盈亏比1:1(快速锁定利润,设置保本损)
|
||||||
take_profit_1_pct_margin = stop_loss_pct_margin * 1.0
|
take_profit_1_pct_margin = stop_loss_pct_margin * 1.0
|
||||||
take_profit_1 = self.risk_manager.get_take_profit_price(
|
take_profit_1 = self.risk_manager.get_take_profit_price(
|
||||||
entry_price, direction, estimated_quantity, leverage,
|
entry_price, direction, estimated_quantity, leverage,
|
||||||
take_profit_pct=take_profit_1_pct_margin
|
take_profit_pct=take_profit_1_pct_margin
|
||||||
)
|
)
|
||||||
|
|
||||||
# 第二目标:盈亏比2.0:1(追求核心波段收益)
|
# 第二目标:盈亏比4.0:1(山寨币策略:追求大赢家)
|
||||||
take_profit_2_pct_margin = stop_loss_pct_margin * 2.0
|
take_profit_2_pct_margin = stop_loss_pct_margin * 4.0
|
||||||
take_profit_2 = self.risk_manager.get_take_profit_price(
|
take_profit_2 = self.risk_manager.get_take_profit_price(
|
||||||
entry_price, direction, estimated_quantity, leverage,
|
entry_price, direction, estimated_quantity, leverage,
|
||||||
take_profit_pct=take_profit_2_pct_margin
|
take_profit_pct=take_profit_2_pct_margin
|
||||||
|
|
@ -835,16 +835,17 @@ class TradeRecommender:
|
||||||
【具体点位】
|
【具体点位】
|
||||||
• 建议挂单价: {limit_price:.4f} USDT
|
• 建议挂单价: {limit_price:.4f} USDT
|
||||||
• 止损价: {stop_loss:.4f} USDT
|
• 止损价: {stop_loss:.4f} USDT
|
||||||
• 第一目标: {tp1:.4f} USDT(盈亏比1:1,建议平仓50%并将止损移至入场价)
|
• 第一目标: {tp1:.4f} USDT(盈亏比1:1,快速锁定利润)
|
||||||
• 第二目标: {tp2:.4f} USDT(盈亏比2.0:1,剩余仓位离场点)
|
• 第二目标: {tp2:.4f} USDT(盈亏比4.0:1,追求大赢家)
|
||||||
|
|
||||||
【持仓周期】{expected_hold_time}
|
【持仓周期】{expected_hold_time}
|
||||||
|
|
||||||
【退出逻辑】
|
【退出逻辑(山寨币策略)】
|
||||||
• 触及止损:立即离场,严格止损。
|
• 触及止损:立即离场,绝不扛单。山寨币止损必须坚决。
|
||||||
• 触及第一目标:强烈建议平仓 50% 利润,并立即将剩余 50% 仓位的止损价调整为您的入场价(保本)。
|
• 触及第一目标:强烈建议平仓 30-50% 利润,并立即将剩余仓位的止损价调整为入场价(保本)。
|
||||||
• 触及第二目标:剩余仓位全部离场,锁定波段收益。
|
• 触及第二目标:剩余仓位全部离场,锁定大赢家收益。
|
||||||
• 时间止损:若持仓超过 48 小时仍未触及第一目标,建议择机平仓。
|
• 移动止损:盈利30%后自动激活,保护15%利润,让利润奔跑。
|
||||||
|
• 绝不恋战:山寨币可能暴涨100%+,也可能瞬间反转。有利润就分批走。
|
||||||
|
|
||||||
【订单失效条件】
|
【订单失效条件】
|
||||||
此限价单建议当日有效。若价格未触及挂单价,但价格直接{reverse_direction}超过2%({reverse_threshold:.4f} USDT),则建议取消订单,等待新信号。
|
此限价单建议当日有效。若价格未触及挂单价,但价格直接{reverse_direction}超过2%({reverse_threshold:.4f} USDT),则建议取消订单,等待新信号。
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user