韭菜收割项目
最近在玩股票,被人当成韭菜收割了一顿。高点追涨,第二天直接跌停。以为是低点,想抄底,结果别人直接抄家,血亏!!!
作为一个程序员,还是好好敲代码赚钱好了,一步一步。想不劳而获是不可能的。
我写了个实时监控我购买的股票涨跌的小页面,用于上班在电脑上可以实时关注【毕竟一直拿着手机总是不太好,会被抓典型,很恐怖】
这个小页面我前端用了个vue3构建,后端使用python flask框架,总共耗时20分钟,效果还行,丑就丑点吧,后面慢慢改进。
前端

长这个鸟样,毕竟是韭菜收割表,这样很形象。每隔5s刷新一次,涨了标红,跌了标绿。
前端代码
Stock.vue
<template><div><h2>韭菜收割表</h2><table><thead><tr><th>代号</th><th>名称</th><th>总收益</th><th>收益率%</th><th>当前价格</th><th>买入价格</th><th>数量</th><th>佣金</th></tr></thead><tbody><trv-for="(stock, index) in stocks":key="index":class="{'positive-profit': stock.total_income > 0, 'negative-profit': stock.total_income <= 0}"><td>{{ stock.symbol }}</td><td>{{ stock.stock_name }}</td><td>{{ stock.total_income }}</td><td>{{ stock.return_rate }}</td><td>{{ stock.current_price }}</td><td>{{ stock.buy_price }}</td><td>{{ stock.quantity }}</td><td>{{ stock.commission }}</td></tr></tbody></table></div>
</template><script>
import axios from 'axios';export default {data() {return {stocks: []};},created() {this.fetchStocks();// 每隔 10 秒刷新股票数据setInterval(this.fetchStocks, 5000);},methods: {async fetchStocks() {try {const response = await axios.get('http://127.0.0.1:5000/stock');this.stocks = response.data;} catch (error) {console.error('Failed to fetch stocks:', error);}}}
};
</script><style scoped>
table {width: 100%;border-collapse: collapse;margin: 20px 0;
}
th, td {padding: 10px;border: 1px solid #ddd;text-align: left;
}
th {background-color: #f4f4f4;
}
.positive-profit {background-color: #ffcccc; /* 红色背景 */
}
.negative-profit {background-color: #ccffcc; /* 绿色背景 */
}
</style>
App.vue
<template>
<!-- <img alt="Vue logo" src="./assets/logo.png" />-->
<!-- <HelloWorld msg="Hello Vue 3.0 + Vite" />--><Stock />
</template><script>
import HelloWorld from './components/HelloWorld.vue'
import Stock from './components/Stock.vue';
export default {name: 'App',components: {HelloWorld,Stock}
}
</script>
后端
目录结构

结构如上,spiders内使用的是爬虫获取每个股票对应的实时价格。
main.py
main.py 这个是接口服务文件,使用flask构建
# coding=utf-8'''
股票实时收益服务
'''from flask import Flask, request, jsonify
from spiders.stock_price_detail import income_statement
from spiders.config import stock_list
from flask_cors import CORS
app = Flask(__name__)
CORS(app)# @app.route('/stock', methods=['GET','POST'])
@app.route('/stock', methods=['GET'])
def stock():result = []for stock in stock_list:print("===================================================================================")current_data = income_statement(**stock)print(current_data)result.append(current_data)return jsonify(result)if __name__ == '__main__':app.run(debug=True,use_reloader=False)
config.py
这个是配置文件,你可以自己修改为自己购买的
cookies自己复制粘贴,我这里不提供了
# coding=utf-8cookies = {}headers = {'accept': '*/*','accept-language': 'zh-CN,zh;q=0.9,en;q=0.8','origin': 'https://xueqiu.com','priority': 'u=1, i','referer': 'https://xueqiu.com/S/SZ002074','sec-ch-ua': '"Google Chrome";v="125", "Chromium";v="125", "Not.A/Brand";v="24"','sec-ch-ua-mobile': '?0','sec-ch-ua-platform': '"Windows"','sec-fetch-dest': 'empty','sec-fetch-mode': 'cors','sec-fetch-site': 'same-site','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36',
}stock_list = [{"symbol": "SZ002074","buy_price": 21.850,"quantity": 100,"commission": 10,"stock_name": "国轩高科"},{"symbol": "SH603220","buy_price": 28.8503,"quantity": 100,"commission": 10,"stock_name": "中贝通信"},{"symbol": "SZ002889","buy_price": 23.03,"quantity": 100,"commission": 10,"stock_name": "东方嘉盛"},{"symbol": "SZ300637","buy_price": 9.79,"quantity": 200,"commission": 10,"stock_name": "扬帆新材"}
]
stock_price_detail
这个文件是用于获取实时价格以及收益计算的
# coding=utf-8import requests
import json
from .config import cookies, headers
import timedef request_for_stock_info(symbol):'''获取股票价格信息:param symbol: 股票代号:return: 响应结果'''params = {'symbol': symbol,'extend': 'detail',}response = requests.get('https://stock.xueqiu.com/v5/stock/quote.json', params=params, cookies=cookies,headers=headers)if response.status_code == 200:return response.json()else:return Nonedef get_current_price(symbol):'''获取股票实时价格:param symbol: 股票代号:return: 实时价格'''data = request_for_stock_info(symbol)if data is None:print("请求失败!", symbol)return Nonequote = data['data']['quote']current_price = quote["current"]print("get_current_price", symbol, current_price)return current_price# 计算收益
def income_statement(symbol, buy_price, quantity, commission=10, **kwargs):# 获取当前价格current_price = get_current_price(symbol)stock_name = kwargs.get('stock_name', 'Unknown')# 检查是否成功获取当前价格if current_price is None:print(f"无法获取股票 {symbol} 的当前价格")return# 计算差价并保留三位小数price_difference = round(current_price - buy_price, 3)# 计算总的收益数total_income = round(price_difference * quantity, 3)# 输出收益率,收益/买入总成本+佣金# 计算总成本(买入价格 * 股数 + 佣金)total_cost = round(buy_price * quantity + commission, 3)# 计算收益率(总收益 / 总成本)return_rate = round((total_income / total_cost) * 100, 3)# 输出差价、总收益和收益率print(f"股票 {symbol} 当前价格: {current_price:.3f}")print(f"买入价格: {buy_price:.3f}")print(f"差价: {price_difference:.3f}")print(f"总收益: {total_income:.3f}")print(f"总成本: {total_cost:.3f}")print(f"收益率: {return_rate:.3f}%")current_stock_info = {"symbol": symbol,"stock_name": stock_name,"total_income": total_income,"return_rate": return_rate,"buy_price": buy_price,"quantity": quantity,"commission": commission,"current_price": current_price,}return current_stock_info# if __name__ == '__main__':
# for stock in stock_list:
# print("===================================================================================")
# current_data = income_statement(
# **stock
# )
# print(current_data)
# print("===================================================================================")
# print()
总结
这个暂时这么搞吧,以后每天更新一点点内容,稍微完善美观一点。
相关文章:
韭菜收割项目
最近在玩股票,被人当成韭菜收割了一顿。高点追涨,第二天直接跌停。以为是低点,想抄底,结果别人直接抄家,血亏!!! 作为一个程序员,还是好好敲代码赚钱好了,一步一步。想不劳而获是不可能的。 我写…...
Unity3D输入事件
文章目录 前言一、全局事件二、射线三、点选3D模型四、点击地面控制人物移动总结 前言 Unity输入事件分为两类,全局触发和监听式触发。全局触发通常是运行在update在每帧进行检测,而监听式触发是被动的输入事件。 一、全局事件 在最新的unity中有新和旧…...
c++ thread detach
#include <thread> #include <iostream>using namespace std;void func() {cout << "子线程func开始执行!" << endl;//do somethingcout << "子线程func执行结束!" << endl; }int main() {cout…...
入门四认识HTML
目录 一、HTML介绍 1、Web前端三大核心技术 2、什么是HTML 3、Html标签 4、标签属性 二、HTML骨架标签 三、编写HTML工具 四、常用标签 1、注释 2、标题标签 3、段落标签 4、超链接标签 5、图片标签 6、换行与空格 7、布局标签 8、列表标签 9、表单…...
js怎么生成验证码?js生成指定长度的随机字符串
在项目中经常有生成随机字符串的需求,比如验证接口签名、验证码(Node.js发送短信或邮箱验证码、生成图片验证码),我们可以使用Javascript生成随机字符。 使用随机数从给出的可能字符中抽取合并字符串 优点是可以自定义结果中字符的取值,比如…...
Python魔法之旅-魔法方法(01)
目录 一、概述 1、定义 2、作用 二、主要应用场景 1、构造和析构 2、操作符重载 3、字符串和表示 4、容器管理 5、可调用对象 6、上下文管理 7、属性访问和描述符 8、迭代器和生成器 9、数值类型 10、复制和序列化 11、自定义元类行为 12、自定义类行为 13、类…...
介绍下 npm 模块安装机制,为什么输入 npm install 就可以自动安装对应的模块
npm(Node Package Manager)模块安装机制是Node.js生态系统中非常重要的一部分,它允许开发者轻松管理和安装Node.js项目的依赖项。下面我将详细介绍npm模块的安装机制,以及为什么输入npm install就可以自动安装对应的模块。 npm模…...
vue2如何父组件 对象 双向绑定子组件
对于Vue 2,你不能直接用v-model绑定对象,但可以通过在子组件内部处理value prop的变化并触发input事件来模拟这一行为。 父组件A 1<template> 2 <ComponentB v-model"item" prop-names"addressId,date,startTime,endTime&quo…...
[Android]在后台线程执行耗时操作,然后在主线程更新UI
1.Coroutines(官方推荐) Coroutines 提供了一种轻量级的线程管理方式,使得在后台线程执行任务和在主线程更新 UI 变得简单。以下是如何在 Kotlin 中使用 Coroutines 来处理耗时逻辑并更新 UI 的步骤: 添加 Coroutines 依赖: 首…...
平方回文数-第13届蓝桥杯选拔赛Python真题精选
[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第73讲。 平方回文数&#…...
位置编码(三) 2D旋转位置编码
Rotary Position Embedding for Vision Transformer https://arxiv.org/abs/2403.13298 Transformer升级之路:4、二维位置的旋转式位置编码 https://kexue.fm/archives/8397 Transformer升级之路:17、多模态位置编码的简单思考 https://kexue.fm/archive…...
1、pikachu靶场之xss钓鱼复现
一、复现过程 1、payload <script src"http://127.0.0.1/pkxss/xfish/fish.php"></script> 将这段代码插入到含有储存xss的网页上,如下留言板 2、此时恶意代码已经存入数据库,并存在网页中,当另一个用户打开这个网页…...
弘君资本炒股技巧:股票定向增发是什么意思?是好是坏?
股票定向增发是指已上市的公司向指定的组织或者个人投资者额外发行股份募集资金的融资方法,发行价格为发行前某一阶段的平均价的必定比例,增发的价格不得低于前二十个买卖日股票均价的80%。 例如,个股定增前二十个买卖股票平均价为…...
vue3项目使用pinia状态管理器----通俗易懂
1、首先安装pinia yarn add pinia # 或使用npm npm install pinia 2、在项目的src目录下新建store文件夹,然后store目录下新建index.js / index.ts : 我这里是index,js import { createPinia } from "pinia"// 创建 Pinia 实例 const pinia …...
零基础学Java第二十五天之Lambda表达式
Lambda表达式 简介 Lambda是一个匿名函数(方法), 允许把函数作为一个方法的参数 。利用Lambda表达式可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。一般都是优化匿名内部类 基础语法 无参数、无返回值的抽…...
VSCode配置Lua5.4安装
参考:VSCode 配置 Lua 开发环境(清晰明了)_lua vscode-CSDN博客 1.下载 Lua Binaries Download (sourceforge.net) 2.配置环境变量 解压放到某文件夹: 环境变量: 3.VSCode安装插件 4.配置 5.测试...
CI/CD:持续集成/持续部署
1. 安装docker、docker-compose # 安装Docker yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sed -i sdownload.docker.commirrors.aliyun.com/docker-ce /…...
ComfyUI工作流网站
https://openart.ai/home https://comfyworkflows.com/ https://civitai.com/...
【机器学习】机器学习基础概念与初步探索
❀机器学习 📒1. 引言📒2. 机器学习概述📒3. 机器学习基础概念🎉2.1 机器学习的分类🎉2.2 数据预处理🌈数据清洗与整合🌈 特征选择和特征工程🌈数据标准化与归一化 📒4. …...
学英语材料:单口喜剧、讲故事、短剧喜剧以及广播剧和播客节目
学习英语节目 有名的单口喜剧、讲故事、短剧喜剧以及广播剧和播客节目: 单口喜剧(Stand-up Comedy) 描述:这是最接近相声的形式,表演者独自一人站在舞台上,用幽默的方式讲述个人经历、观察到的社会现象或…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
