

数据是个宝,研究少烦恼
挖的深,看的远,找规律
做笔记,练盘感,多总结

★★★★★博文原创不易,源码使用过程中,如有疑问的地方,欢迎大家指正留言交流。喜欢的老铁可以点赞+收藏分享+置顶,小红牛在此表示感谢。★★★★★
股票热点数据分类统计系统3.0(padans+matplotlib+sqlite3)
股票精简节点记事本 3.0(tkinter+json+reportlab)
量化教程: 教你快速上车,通达信量化平台(TdxQuant太强了,真香啊)
Python处理复盘系统中,sqlite3数据库中的json热点和行业字段
通达信指标公式34:避雷参考,选股前,必须优先排除有垃圾属性的股。
通达信指标公式33:严重异动提醒,计算10/30日的涨跌幅偏离值
股票亏损幅度与回本涨幅对照表
1. 软件概述:本工具是一款实时交互式计算器,用于直观展示股票在不同下跌幅度下,未来需要上涨多少百分比才能回本。它能帮助投资者量化风险,深刻理解“亏易赚难”的复利逻辑。
| 亏损幅度 | |
| 跌停价 | |
| 回本涨幅 | |
| 回本目标价 |
计算逻辑:回本涨幅 = 亏损幅度 ÷ (100% - 亏损幅度) × 100%(例:跌20%,需涨25%才能回本)。

5.总结:
问:为什么亏损的幅度和涨幅幅度相同不能等效回本?
答:因为亏损的之前的持仓总市值高,亏损10%后的市值低(市值=股价*股数,股价变低,市值变低),因为市值变低,所以再涨幅10%也不能回本,在不补仓的情况。
永远满仓:市场的不确定性太多了,不满仓的话,可以等到合适的机会,如果补仓做对了,可以增加回本的可能性,补仓的时候一定要理性分析后,再做决策,不要盲目随性交易。满仓后回本所需的涨幅,容易让自己陷入被动性,永远大于之前的亏损幅度,且亏损越大,这种非对称性越夸张。
“亏 10% 等个反弹,亏 20% 盼个主升,亏 30% 以上可能需要一轮大牛市,亏 50% 以上必须靠超级风口,亏超 80% 基本只能等待奇迹。” 这也是所有成熟交易者严格设置止损位的底层数学逻辑,他们会在买股前,有严谨的逻辑市场分析能力+防范于未然,深察可能的风险和危机及应对策略,评估不同的条件,发生的概率,如同用兵之法,兵者国之大事,死生之地,存亡之道,不可不察也。
完整源码如下
# -*- coding: utf-8 -*-# @Author : 小红牛# 微信公众号:gxzfp888import tkinter as tkfrom tkinter import ttkclass StockTableApp:def __init__(self, root):self.root = rootself.root.title("股票亏损幅度与回本涨幅对照表")self.root.geometry("650x500")# ---------- 顶部:初始股价输入 ----------top_frame = ttk.Frame(root, padding=(10, 10))top_frame.pack(fill="x")ttk.Label(top_frame, text="初始股价 (元):", font=("微软雅黑", 10)).pack(side="left", padx=(0, 5))self.price_var = tk.StringVar(value="100")self.entry_price = ttk.Entry(top_frame, textvariable=self.price_var, width=15, font=("微软雅黑", 10))self.entry_price.pack(side="left")# 绑定事件,实时更新self.entry_price.bind("<KeyRelease>", lambda e: self.update_table())self.entry_price.bind("<FocusOut>", lambda e: self.update_table())self.entry_price.bind("<Return>", lambda e: self.update_table())ttk.Label(top_frame, text="(修改价格自动更新)", foreground="gray", font=("微软雅黑", 9)).pack(side="left", padx=10)# ---------- 表格使用 Canvas + 滚动条 ----------# 创建一个框架用于容纳 Canvas 和滚动条,以便布局更灵活table_frame = ttk.Frame(root)table_frame.pack(fill="both", expand=True, padx=10, pady=(0, 10))# Canvas 用于绘制表格self.canvas = tk.Canvas(table_frame, bg="white", highlightthickness=0)# 垂直滚动条scrollbar = ttk.Scrollbar(table_frame, orient="vertical", command=self.canvas.yview)self.canvas.configure(yscrollcommand=scrollbar.set)# 布局:Canvas 填充左侧,滚动条靠右self.canvas.pack(side="left", fill="both", expand=True)scrollbar.pack(side="right", fill="y")# 定义列宽度(像素)和行高self.col_widths = [150, 150, 150, 150] # 对应四列self.row_height = 35self.header_height = 40# 底部说明note = ttk.Label(root, text="回本涨幅 = 跌幅 / (100% - 跌幅) × 100% | 跌幅100%时价值归零,无法回本",foreground="gray", font=("微软雅黑", 9))note.pack(pady=(0, 10))# 初始填充self.update_table()def update_table(self):"""根据当前输入的股价,重新计算并绘制表格"""# 解析股价try:price = float(self.price_var.get().strip())if price <= 0:raise ValueErrorexcept ValueError:# 清空画布并显示提示self.canvas.delete("all")self.canvas.create_text(10, 20, text="输入无效,请输入正数", anchor="nw",font=("微软雅黑", 12), fill="red")self.canvas.configure(scrollregion=(0, 0, 400, 50))return# 清空画布self.canvas.delete("all")# 列标题(顺序与之前一致)headers = ("亏损幅度", "跌停价", "回本涨幅", "回本目标价")x_start = 10 # 左边距y_pos = 10 # 顶部起始 y 坐标# ---------- 绘制表头 ----------x = x_startfor i, text in enumerate(headers):self.canvas.create_text(x + self.col_widths[i] // 2, y_pos + self.header_height // 2,text=text, font=("微软雅黑", 15, "bold"), anchor="center")x += self.col_widths[i]# 绘制表头下方分割线line_y = y_pos + self.header_heightself.canvas.create_line(x_start, line_y, x_start + sum(self.col_widths), line_y, fill="gray")# 数据起始 yy_pos = line_y + 5# ---------- 生成数据并绘制每行 ----------for drop_pct in range(10, 101, 10):drop_ratio = drop_pct / 100.0drop_price = price * (1 - drop_ratio)if drop_pct == 100:recover_pct = "∞"recover_price = "无法回本"drop_price_str = "0.00"else:recover_pct = f"{(drop_pct / (100 - drop_pct) * 100):.2f}%"recover_price = f"{drop_price * (1 + (drop_pct / (100 - drop_pct))):.2f}"drop_price_str = f"{drop_price:.2f}"# 行数据列表(顺序与列一致)row_values = [f"{drop_pct}%",drop_price_str,recover_pct,recover_price]x = x_startfor col_idx, value in enumerate(row_values):# 决定字体和颜色if col_idx == 0: # 亏损幅度列 -> 绿色加粗font = ("微软雅黑", 15, "bold")color = "green"elif col_idx == 2: # 回本涨幅列 -> 红色加粗font = ("微软雅黑", 15, "bold")color = "red"else: # 其他列 -> 普通黑色font = ("微软雅黑", 15, "normal")color = "black"# 在画布上绘制单元格文本(居中)self.canvas.create_text(x + self.col_widths[col_idx] // 2,y_pos + self.row_height // 2,text=value,font=font,fill=color,anchor="center")x += self.col_widths[col_idx]# 绘制行分隔线(浅灰色虚线或实线)line_y = y_pos + self.row_heightself.canvas.create_line(x_start, line_y, x_start + sum(self.col_widths), line_y,fill="#e0e0e0", dash=(2, 2))y_pos = line_y# ---------- 设置滚动区域 ----------total_height = y_pos + 10total_width = x_start + sum(self.col_widths) + 10self.canvas.configure(scrollregion=(0, 0, total_width, total_height))if __name__ == "__main__":root = tk.Tk()app = StockTableApp(root)root.mainloop()
温馨提示:股市有风险,投资需谨慎。本文所写内容仅供粉丝们参考使用,仅为个人研究观点表述,股友们须自己思考与分析股市。
-!! 完毕 ,感谢您的收看!!-
-------★★历史博文集合★★------
