股票止盈止损
价位/百分比/风险比
策略说明 · 风险须知
凯利公式:f* = (bp − q) / b,b 为盈亏比,p 为胜率。建议实战用 半凯利 以降低破产风险。负值表示当前胜率/赔率组合不应下单。
盈亏比 R:R:业内共识 ≥ 2:1(赚的钱至少是亏的钱的 2 倍)才有正期望。低于 1:1 即使胜率 60% 长期仍亏。
ATR 止损:跟随个股波动率自适应,强势股 3×ATR,弱势/震荡 2×ATR。避免在窄震荡区被噪音洗出。
阶梯减仓:避免"涨到目标位却没出,回落腰斩"——分 5 档锁定加权出场价,留 20% 跟趋势博更大空间。
所有计算在浏览器本地完成,不上传任何持仓数据。本工具仅供研究学习,不构成投资建议。
关于本工具
了解工具定位 · 使用场景 · 对比优势
输入持仓成本价和当前价,按固定价位、百分比或风险比(投入资金×预设亏损比例)自动算出止盈止损线。适合短线交易者、网格策略用户、以及需要纪律性离场的新手。所有计算在浏览器内完成,数据不上传服务器。
使用场景
短线止盈锁定
日内交易者或短线波段客,在股价急拉 8% 后犹豫是否卖出。本工具输入买入价 10 元、现价 10.80 元、目标止盈位 15%,自动计算出若回撤 3% 即触发卖出,锁定 5% 利润。避免因贪婪坐过山车,将浮动盈利转化为实际收益。
长线止损保护
价值投资者持有某蓝筹股 1 年,成本 50 元,现价 65 元。担心黑天鹅事件导致利润回吐,本工具设置 8% 回撤止损线,自动计算若股价跌至 59.8 元时卖出,保住 19.6% 的浮盈。防止单次暴跌吞噬全年收益。
风险比优化
量化交易者计划买入某 ETF,预期收益 20%,但不确定该设多少止损。本工具输入预期收益 20%、可接受最大亏损 10%,自动算出风险回报比 2:1。若当前股价波动率显示回撤超 12%,则提示降低仓位或调整止损宽度,使策略符合风控纪律。
分批止盈规划
持有某成长股翻倍后,想分三次卖出锁定利润。本工具输入总持仓 10000 股、成本 20 元、现价 40 元,设置三档止盈:40 元卖 3000 股、45 元卖 3000 股、50 元卖 4000 股。自动计算每档触发时的实际盈利额与剩余仓位成本,辅助制定阶梯式退出计划。
网格交易辅助
震荡市中做网格交易的散户,需频繁设置买卖点。本工具输入基准价 30 元、网格间距 2%,自动生成 5 档止盈止损价位(28.8/29.4/30.6/31.2/31.8 元)及对应盈亏比例。配合交易软件条件单,实现自动化低吸高抛,减少盯盘时间。
对比矩阵本工具 vs 竞品 vs 传统方法
| 维度 | 本工具 | 竞品 A (同花顺) | 传统方法 |
|---|---|---|---|
| 数据隐私 | 纯浏览器计算,数据不上传服务器 | 需上传持仓数据到云端 | 依赖券商或投顾人工处理,数据经手多人 |
| 处理速度 | 输入即出结果,约 0.5 秒 | 需加载页面、点击功能,约 3-5 秒 | 人工计算或查询表格,数分钟至数小时 |
| 离线可用 | 完全离线,断网可用 | 必须联网 | 依赖纸质单据或本地文件,可离线 |
| 计算方式 | 支持价位、百分比、风险比三种模式一键切换 | 通常只提供固定止盈止损点设置 | 手动计算或查表,易出错 |
| 学习成本 | 无,打开即用,无复杂设置 | 需熟悉软件界面和功能入口 | 需理解计算公式和财务概念 |
| 适用场景 | 快速决策、盘中临时调整、多策略对比 | 长期持仓、自动化交易策略绑定 | 非实时、复盘分析或教学演示 |
使用指南
上手步骤 · 输入输出 · 避坑提示
使用步骤
- 在「买入价」输入框填写股票买入时的单价(元),支持两位小数
- 在「当前价」输入框填写股票当前市价(元),数值需与买入价同货币单位
- 在「数量」输入框填写持有股数(整数),不支持小数或负数
- 选择止盈止损模式:按「价位」输入目标价,或按「百分比」输入涨跌幅(如 +10% / -5%)
- 点击「计算」按钮,工具自动显示止盈线、止损线及对应的盈亏金额与风险比
- 查看结果区域:绿色数值为盈利,红色数值为亏损,风险比 = 潜在亏损 ÷ 潜在盈利
输入输出示例8 个典型场景,覆盖常规、边界与易错
| 输入 | 输出 | 说明 |
|---|---|---|
| 买入价 10.00 元,止损价 9.50 元,持股数量 1000 股 | 止损幅度:-5.00% | 止损金额:-500.00 元 | 典型场景:按价位设置固定止损 |
| 买入价 50.00 元,止损百分比 -8%,持股数量 200 股 | 止损价位:46.00 元 | 止损金额:-800.00 元 | 典型场景:按百分比设置止损 |
| 买入价 100.00 元,止盈价 120.00 元,止损价 95.00 元,持股数量 500 股 | 止盈幅度:+20.00% | 止损幅度:-5.00% | 风险比:4.00 | 典型场景:同时设置止盈止损并计算风险比 |
| 买入价 0.01 元,止损价 0.009 元,持股数量 100000 股 | 止损幅度:-10.00% | 止损金额:-100.00 元 | 边界 case:低价股(如仙股)的精确计算 |
| 买入价 999999.99 元,止损价 900000.00 元,持股数量 1 股 | 止损幅度:-10.00% | 止损金额:-99999.99 元 | 边界 case:极高单价股票(如伯克希尔A类股) |
| 买入价 50.00 元,止损百分比 0%,持股数量 100 股 | 止损价位:50.00 元 | 止损金额:0.00 元 | 边界 case:止损百分比为 0%(不设止损) |
| 买入价 20.00 元,止盈价 20.00 元,止损价 19.00 元,持股数量 300 股 | 止盈幅度:0.00% | 止损幅度:-5.00% | 风险比:0.00 | 易错 case:止盈价等于买入价,风险比为零 |
| 买入价 15.00 元,止损价 16.00 元(高于买入价),持股数量 400 股 | 止损幅度:+6.67% | 止损金额:+400.00 元 | 易错 case:止损价高于买入价,实际为盈利 |
常见错误对照8 个常踩的坑 · 错误 → 修复
1. 把“止盈止损价位”和“当前持仓成本”搞混
买入价 10 元,设止盈价 10.5 元,但输入时把“当前价”填成了 10 元当前价填实时市价(如 12.5 元),止盈价填目标卖出价(如 14 元)止盈止损计算的是“从当前价到目标价的涨跌幅”,不是“从成本价到目标价”。填错当前价会导致百分比完全错误。
2. 百分比模式下输入了小数而非整数百分比
想止盈 5%,输入 0.05输入 5(代表 5%)工具百分比字段预期的是整数或小数形式的百分比值(如 5 代表 5%),不是小数比例(0.05 代表 5% 但会被解析为 0.05%)。
3. 风险比模式下的“盈亏比”和“胜率”填反
预期盈利 10 元,预期亏损 5 元,盈亏比填 0.5盈亏比填 2(10 ÷ 5 = 2)盈亏比 = 预期盈利 ÷ 预期亏损,不是反过来。填反会导致凯利公式计算出的仓位比例完全错误。
4. 价位模式里把“止盈价”和“止损价”填反
当前价 100,止盈价填 95,止损价填 105止盈价填 105(高于当前价),止损价填 95(低于当前价)止盈价必须高于当前价,止损价必须低于当前价。填反工具会提示“止盈价应高于当前价”,但用户常误以为工具出错。
5. 在百分比模式里输入了带百分号的字符串
输入 "5%"输入 5工具只接受纯数字,带百分号会被当作非法字符导致无法计算。浏览器端无后端校验,输入框直接报 NaN。
6. 风险比模式里盈亏比填了 1:2 这种冒号格式
输入 "1:2"输入 0.5(1÷2=0.5)工具要求输入数值型盈亏比(盈利/亏损),不是比例字符串。冒号格式是交易社区的习惯写法,但工具输入框只解析数字。
7. 把“当前价”填成了“买入价”导致计算结果无意义
成本 8 元,现价 15 元,但当前价填 8当前价填 15止盈止损计算的是“从当前持仓市值出发”的决策,不是“从成本出发”的盈亏计算。填买入价算出的百分比是历史收益率,不是止盈止损参考值。
8. 忽略工具提示的“输入范围”直接提交
当前价填 0.001(低于最小精度)或 999999(超出合理范围)当前价填 1.00 到 10000.00 之间的值工具对价格字段有精度和范围限制(通常小数点后两位,最大 5 位数),超出范围会无响应或显示 NaN,不是工具坏了。
工作原理
公式推导 · 流程图解 · 依据出处
核心公式
止盈价 = 买入价 × (1 + 止盈百分比);止损价 = 买入价 × (1 - 止损百分比);风险比 = (止盈价 - 买入价) / (买入价 - 止损价)
变量说明
买入价— 股票买入时的每股价格(元)止盈百分比— 预期盈利幅度(如 10% 即 0.10)止损百分比— 可接受最大亏损幅度(如 5% 即 0.05)止盈价— 达到此价格时卖出获利止损价— 跌破此价格时卖出止损风险比— 潜在盈利与潜在亏损的比值
示例
买入某股票 10 元/股,设止盈 20%(0.20),止损 8%(0.08)。止盈价 = 10 × (1 + 0.20) = 12 元;止损价 = 10 × (1 - 0.08) = 9.2 元;风险比 = (12 - 10) / (10 - 9.2) = 2 / 0.8 = 2.5。即每承担 1 元亏损风险,预期可获 2.5 元盈利。
适用范围
适用于单笔股票交易的静态止盈止损设置,不适用于分批建仓、网格交易或含分红/送转的复权场景。基于经典交易风险管理理论(Van Tharp, 1998),需用户自行设定百分比,工具不提供推荐值。
原理图
开发者集成
3 种主流语言 · 复制即用
import math
def calculate_stop_profit_loss(entry_price, stop_loss_price, take_profit_price, position_size):
"""
计算止盈止损的盈亏金额和百分比
entry_price: 入场价
stop_loss_price: 止损价
take_profit_price: 止盈价
position_size: 持仓数量(股/手)
"""
# 止损亏损
loss_per_share = entry_price - stop_loss_price
total_loss = loss_per_share * position_size
loss_percent = (loss_per_share / entry_price) * 100
# 止盈盈利
profit_per_share = take_profit_price - entry_price
total_profit = profit_per_share * position_size
profit_percent = (profit_per_share / entry_price) * 100
# 风险回报比
risk_reward_ratio = abs(profit_per_share / loss_per_share) if loss_per_share != 0 else float('inf')
return {
'loss_amount': round(total_loss, 2),
'loss_percent': round(loss_percent, 2),
'profit_amount': round(total_profit, 2),
'profit_percent': round(profit_percent, 2),
'risk_reward_ratio': round(risk_reward_ratio, 2)
}
# 示例:买入价10元,止损9.5元,止盈11元,持有1000股
result = calculate_stop_profit_loss(10.0, 9.5, 11.0, 1000)
print(result)
# {'loss_amount': -500.0, 'loss_percent': -5.0, 'profit_amount': 1000.0, 'profit_percent': 10.0, 'risk_reward_ratio': 2.0}package main
import (
"fmt"
"math"
)
type StopResult struct {
LossAmount float64
LossPercent float64
ProfitAmount float64
ProfitPercent float64
RiskRewardRatio float64
}
func calculateStopProfitLoss(entry, stopLoss, takeProfit float64, shares int) StopResult {
lossPerShare := entry - stopLoss
totalLoss := lossPerShare * float64(shares)
lossPercent := (lossPerShare / entry) * 100
profitPerShare := takeProfit - entry
totalProfit := profitPerShare * float64(shares)
profitPercent := (profitPerShare / entry) * 100
ratio := math.Abs(profitPerShare / lossPerShare)
return StopResult{
LossAmount: math.Round(totalLoss*100) / 100,
LossPercent: math.Round(lossPercent*100) / 100,
ProfitAmount: math.Round(totalProfit*100) / 100,
ProfitPercent: math.Round(profitPercent*100) / 100,
RiskRewardRatio: math.Round(ratio*100) / 100,
}
}
func main() {
result := calculateStopProfitLoss(10.0, 9.5, 11.0, 1000)
fmt.Printf("%+v\n", result)
// {LossAmount:-500 LossPercent:-5 ProfitAmount:1000 ProfitPercent:10 RiskRewardRatio:2}
}function calculateStopProfitLoss(entryPrice, stopLossPrice, takeProfitPrice, positionSize) {
// 计算每股盈亏
const lossPerShare = entryPrice - stopLossPrice;
const totalLoss = lossPerShare * positionSize;
const lossPercent = (lossPerShare / entryPrice) * 100;
const profitPerShare = takeProfitPrice - entryPrice;
const totalProfit = profitPerShare * positionSize;
const profitPercent = (profitPerShare / entryPrice) * 100;
// 风险回报比(正值)
const riskRewardRatio = lossPerShare !== 0
? Math.abs(profitPerShare / lossPerShare)
: Infinity;
return {
lossAmount: Math.round(totalLoss * 100) / 100,
lossPercent: Math.round(lossPercent * 100) / 100,
profitAmount: Math.round(totalProfit * 100) / 100,
profitPercent: Math.round(profitPercent * 100) / 100,
riskRewardRatio: Math.round(riskRewardRatio * 100) / 100
};
}
// 示例:买入10元,止损9.5元,止盈11元,1000股
const result = calculateStopProfitLoss(10.0, 9.5, 11.0, 1000);
console.log(result);
// { lossAmount: -500, lossPercent: -5, profitAmount: 1000, profitPercent: 10, riskRewardRatio: 2 }常见问题
8 个高频疑问