-
Notifications
You must be signed in to change notification settings - Fork 1
/
gpt.py
119 lines (101 loc) · 5.02 KB
/
gpt.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
from openai import OpenAI
from stockapi.stock_api_history import *
from stockapi.stock_api_real_time import *
from stockapi.util import *
import httpx
import config
api_token = config.API_TOKEN
secret_key = config.SECRET_KEY
proxies = {
"http://": 'http://127.0.0.1:7890',
"https://": 'http://127.0.0.1:7890',
"socks5://": 'socks5://127.0.0.1:7891',
}
http_client = httpx.Client(proxies=proxies)
client = OpenAI(api_key=api_token, http_client=http_client)
# client = OpenAI(api_key=api_token)
def ask_gpt(data, user_prompt=""):
prompt = f'{data}'
if not is_today():
sys_prompt = '''
你是一个A股投资专家,擅长通过股票的历史数据预测下一交易日的股价走势,并提供投资建议。股票相关数据将包含在 `<data/>` 标签内。
# 任务步骤
1. 深入分析提供的数据,找到数据趋势和规律,发现不同数据之间的关系,并分析走势。
2. 通过历史数据预测下一交易日的相关股价走势,包括开盘价、区间、收盘价。
3. 提供明确的买卖策略建议,包括:明日日内博弈点、3日投资、周投资、中期投资、长期投资,投资建议要给出仓位管理。
4. 中国股市设涨跌停,并且是T+1操作。
5. 根据数据给出有把握的建议。
# 输出格式
请以清晰、简洁的文本形式输出结果。
'''
else:
sys_prompt = '''
你是一个A股超短线投资专家,擅长通过股票的历史数据结合今日已经产生的1分钟k线数据,提出今日的投资建议。股票相关数据将包含在 `<data/>` 标签内。
# 任务步骤
1. 深入分析提供的数据,找到数据趋势和规律,发现不同数据之间的关系,并分析今日走势。
2. 数据包含相关历史数据和该股票今日1分钟的k线、macd、kdj,相关行业板块数据,资金数据。
3. 提供明确的买卖策略建议,包括今日是否博弈,博弈点,仓位,止损点,并告知理由。
4. 中国股市设涨跌停,并且是T+1操作,上午交易时间9点30-11点30,下午1点开盘,3点收盘。
5. 根据数据给出有把握的建议。
# 输出格式
请以清晰、简洁且精炼的文本形式输出结果。
'''
# client.base_url='http://121.43.97.233:5000/api/v1'
response = client.chat.completions.create(
model="o1-preview",
temperature=0,
messages=[{"role": "system", "content": sys_prompt},
{"role": "user", "content": f"<data>{prompt}</data>;{user_prompt}"}]
)
print(response)
content = response.choices[0].message.content;
return content
def create_data(code, start_date, user_bk):
calculation_cycle = 100 # 100-日,101-周,102-月
index_code = code
end_date = get_end_date() # 结束日期
ma_periods = "5,10,20,30" # MA 周期
#kdj
cycle = 9 # 默认周期
cycle1 = 3 # 周期1
cycle2 = 3 # 周期2
#macd
long_cycle = 26 # 长期周期
short_cycle = 12 # 短期周期
data = f"股票代码{code}\n"
data += "# 历史日相关数据"
data += "\n1.历史日线数据:\n"
data += "\n".join(map(str,query_day_kline(index_code, start_date, end_date, calculation_cycle)))
data += "\n2.历史日rsi数据:\n"
data += "\n".join(map(str,query_rsi_data(index_code, start_date, end_date, calculation_cycle)))
data += "\n3.历史日5,10,20,30日ma均线数据:\n"
data += "\n".join(map(str,query_ma_data(index_code, start_date, end_date, ma_periods, calculation_cycle)))
data += "\n4.历史日kdj数据:\n"
data += "\n".join(map(str,query_kdj_data(index_code, start_date, end_date, calculation_cycle, cycle, cycle1, cycle2)))
data += "\n5.历史日macd数据:\n"
data += "\n".join(map(str,query_macd_data(index_code, start_date, end_date, calculation_cycle, long_cycle, short_cycle)))
data += "\n6.历史日资金流向:\n"
data += "\n".join(map(str, query_money_flow(index_code)))
data += "\n7.历史行业板块数据:\n"
data += "\n".join(map(str,query_day_kline(user_bk, start_date, end_date)))
if is_today():
data += "\n# 今日数据:"
data += "\n1.今日股票1分钟k线:\n"
data += "\n".join(map(str, query_index_realtime_kline(index_code)))
data += "\n2.今日股票1分钟kdj:\n"
data += "\n".join(map(str, query_realtime_kdj(index_code)))
data += "\n3.今日股票1分钟MACD:\n"
data += "\n".join(map(str, query_realtime_macd(index_code)))
data += f"\n4.今日最新资金流入情况:\n"
data += "\n".join(map(str, query_realtime_money_flow(index_code)))
data += f"\n5.今日关联的{user_bk}行业板块1分钟k线:\n"
data += "\n".join(map(str, query_realtime_bk(user_bk)))
return data
def caiwuziyou(code, user_prompt, user_bk):
if is_today():
start_date = "2024-11-01" # 开始日期
else:
start_date = "2024-11-01" # 开始日期
data = create_data(code, start_date, user_bk)
print(data)
return ask_gpt(data, user_prompt)