PYTHON写代码 连接MYSQL host='localhost', user='root', password='123456', database='STOCK_CODES', port=3306, charset='utf8mb4' 读取MYSQL表格“stock_k_data” 里面包含的字段有date, time, code, open, high, low, close, volume, amount,price,status price 用来记录成交价格 status 来记录状态“买入”或“卖出”或“保持买入”或“空仓”或“保持卖入” 第一行price=close,status=“买入” 从第二行开始,当股票从最高点冲高回踩5%,(status=“卖出,price=high*0.95),否则是“保持”, 循环直到卖出, 当状态=“空仓”时 从第二行开始,价格=close,当股票从最低点涨5%,(status=买入,price=low*1.05)否则是“空仓” 循环直到买入
时间: 2024-01-21 18:18:34 浏览: 115
zip-codes-database-FREE-csv_database_zip_zipcodes_
以下是Python代码实现:
```python
import pymysql
# 连接MySQL数据库
conn = pymysql.connect(host='localhost', user='root', password='123456', database='STOCK_CODES', port=3306, charset='utf8mb4')
cursor = conn.cursor()
# 读取stock_k_data表
sql = "SELECT * FROM stock_k_data"
cursor.execute(sql)
results = cursor.fetchall()
# 初始化第一行的状态和价格
price = results[0][6]
status = '买入'
# 循环每一行数据
for i in range(1, len(results)):
# 当前价格和最高价、最低价
current_price = results[i][6]
high_price = results[i][2]
low_price = results[i][3]
# 判断是否需要卖出
if current_price <= high_price * 0.95:
price = high_price * 0.95
status = '卖出'
print(f"卖出,卖出价格为:{price}")
break
else:
status = '保持卖出'
# 判断是否需要买入
if status == '空仓':
price = current_price
elif current_price >= low_price * 1.05:
price = low_price * 1.05
status = '买入'
print(f"买入,买入价格为:{price}")
break
else:
status = '保持买入'
# 如果到了最后一行还没有卖出,则卖出价格为最后一行的收盘价
if i == len(results) - 1 and status != '卖出':
price = results[-1][6]
status = '卖出'
print(f"卖出,卖出价格为最后一行收盘价:{price}")
break
# 关闭数据库连接
cursor.close()
conn.close()
```
解释一下代码的逻辑:
1. 连接MySQL数据库,读取stock_k_data表格的所有数据。
2. 初始化第一行的状态为“买入”,价格为收盘价。从第二行开始,循环每一行数据。
3. 判断当前价格是否需要卖出,如果需要,卖出价格为最高价的95%,状态为“卖出”,并退出循环。
4. 如果当前价格不需要卖出,则状态为“保持卖出”。
5. 如果当前状态为“空仓”,买入价格为当前价格;否则判断当前价格是否需要买入,如果需要,买入价格为最低价的105%,状态为“买入”,并退出循环。
6. 如果当前价格不需要买入,则状态为“保持买入”。
7. 如果到了最后一行数据还没有卖出,则卖出价格为最后一行数据的收盘价,状态为“卖出”。
8. 关闭数据库连接。
需要注意的是,此代码没有进行错误处理和异常处理。在实际应用中,需要对输入数据进行检查,并进行相应的错误处理和异常处理。
阅读全文