-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy pathauto_buy.py
99 lines (93 loc) · 4.18 KB
/
auto_buy.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
import pyautogui
import pytesseract
import time
screenWidth, screenHeight = pyautogui.size()
currentMouseX, currentMouseY = pyautogui.position()
time.sleep(10)
#pyautogui.position()
#买入5日均线上穿10日均线的股票
from hikyuu.interactive.interactive import *
ENDTIME=Datetime.now()
#ENDTIME=Datetime(201806260000)
###上证交易日期,用于判断停牌
sh = sm['sh000001']
#print(sh)
sh_k = sh.getKData(QueryByDate(s.startDatetime, ENDTIME,recoverType=Query.FORWARD))
sh_day = sh_k[-1].datetime
print("上证指数交易日期",sh_day)
i = 0
#遍历所有股票
for s in blocka:
i += 1
###过滤ST和退市
if not ('*' in s.name or 'ST' in s.name or '退' in s.name) :
ktest = s.getKData(QueryByDate(s.startDatetime, ENDTIME,recoverType=Query.FORWARD))
###求取有多少跟K线,也就是有多少个交易日
daytest= len(ktest)
###选取至少交易200天且今日不停牌的票
if daytest >200 and(ktest[-1].datetime.year == sh_day.year and ktest[-1].datetime.month == sh_day.month and ktest[-1].datetime.day == sh_day.day) :
k = s.getKData(QueryByDate(ktest[-100].datetime, ENDTIME,recoverType=Query.FORWARD))
ma5= MA(CLOSE(k),5)
ma10= MA(CLOSE(k),10)
if ma5[-2] <ma10[-2] and ma5[-1]>ma10[-1]:
print("被选中股票:",s)
stock = s.code
###要操作的证券代码可以来自hikyuu\quantaxis\聚宽\米筐等量化
#stock = '002049'
###要操作的股票数量,买入操作首先要保证账户内有足够资金
amount = '100'
##按纽在屏幕上的坐标需要修改成适合自己机器的
###买入操作
#点击买入操作按纽
##按纽在屏幕上的坐标region需要修改成适合自己机器的
region=(215, 445, 32 ,20)
x,y = pyautogui.center(region)
pyautogui.click(x,y)
time.sleep(1)
##输入证券代码
##按纽在屏幕上的坐标region需要修改成适合自己机器的
region=(280, 500, 50 ,20)
x,y = pyautogui.center(region)
pyautogui.click(x,y)
time.sleep(0.5)
secs_between_keys = 0.1
pyautogui.typewrite(stock, interval=secs_between_keys)
time.sleep(1)
##买入价格,默认市价,故未写代码
##输入买入数量
##按纽在屏幕上的坐标region需要修改成适合自己机器的
region=(280, 615, 50 ,20)
x,y = pyautogui.center(region)
pyautogui.click(x,y)
time.sleep(0.5)
secs_between_keys = 0.1
pyautogui.typewrite(amount, interval=secs_between_keys)
time.sleep(0.5)
##点击买入下单
##按纽在屏幕上的坐标region需要修改成适合自己机器的
region=(330, 640, 65 ,20)
x,y = pyautogui.center(region)
pyautogui.click(x,y)
time.sleep(1)
##点击买入确认
##按纽在屏幕上的坐标region需要修改成适合自己机器的
region=(710, 655, 65 ,20)
x,y = pyautogui.center(region)
pyautogui.click(x,y)
time.sleep(1)
##非交易日下单,确认隔日委托
##按纽在屏幕上的坐标region需要修改成适合自己机器的
region=(755, 605, 70 ,20)
x,y = pyautogui.center(region)
pyautogui.click(x,y)
time.sleep(1)
##资金不足,确认
region=(750, 605, 75,25)
x,y = pyautogui.center(region)
pyautogui.click(x,y)
time.sleep(1)
##查看持仓
region=(365, 445, 40,25)
x,y = pyautogui.center(region)
pyautogui.click(x,y)
time.sleep(1)