上个星期写到OTCBTC盘口搬砖
https://www.jianshu.com/p/ff800c48f933
这里,我把按键精灵脚本开源啦。盘口脚本不复杂,但也写了几百行了。
原因是我在开发python的爬虫脚本,这个脚本不维护了。
送给大家交流下思路。
注意:
这个脚本是一两天内开发完成,必然还存在不少问题,仅供参考思路,若要应用于生产环境还需不少调试【不建议】
软件:
- 按键精灵
- 浏览器
脚本特性:
- 自动算价挂单
- 买价挂低或卖价挂高,自动撤单补单
可能存在的问题:
- 获取行情数据异常
- 分辨率及浏览器大小导致脚本不能正确获取价格等信息
- 执行或下单异常
若要测试脚本,需要做的事:
- 制作图片
- 匹配位移坐标
源码
TracePrint "10s后开始运行脚本"
Delay 1000
FindPic 0,0,1024,768,"C:\Users\Administrator\Documents\按键精灵图片\买单.bmp",0.9,intX,intY
If intX > 0 And intY > 0 Then
//TracePrint "找到买单图标"
Else
TracePrint"请检查页面,没找到买单图标"
End If
KeyPress "Enter", 1
Call 撤买单
Delay 100
Call 撤卖单
Delay 100
count = 0
While (1)
FindPic 0,0,1024,768,"C:\Users\Administrator\Documents\按键精灵图片\买单.bmp",0.9,intX,intY
If intX > 0 And intY > 0 Then
//TracePrint "找到买单图标"
Else
TracePrint"请检查页面,没找到买单图标"
End If
Call 获取行情
Delay 100
Call 获取资产余额
Delay 100
Call 获取委托
Delay 100
// Call 资产详情
// Delay 200
差价大于1 = 差价百分比-0.3
If 差价大于1 > 0 Then
可买大于0点3= 可买EOS-0.3
If 可买大于0点3 > 0 Then
Call 撤买单
Call 挂买单(可买EOS)
Delay 100
Else
// TracePrint "可买EOS<0.3,不再挂单"
End If
可卖EOS大于0点3 = 可卖EOS-0.3
If 可卖EOS大于0点3 > 0 Then
Call 撤卖单
Call 挂卖单(可卖EOS)
Delay 100
Else
// TracePrint "可卖EOS〈0.3,不挂卖单:"
End If
//
KeyPress "Enter", 1
//Call 检查成交
Call 检查是否撤单
Delay 500
Else
// TracePrint "差价小于0.3%,不操作"
End If
If count = 60 Then
KeyPress "F5", 1
count = 0
Delay 10000
End If
count = count + 1
// TracePrint count
KeyPress "Enter", 1
Delay 200
Wend
Sub 资产详情
TracePrint "等价总额EOS:"
等价总额EOS = 可卖EOS+ 可买EOS+锁定买EOS+锁定卖EOS
TracePrint 等价总额EOS
Delay 200
TracePrint "钱币比:"
币 = 可卖EOS + 锁定卖EOS
钱 = 可买EOS+锁定买EOS
If 币 Then
钱币比 = 钱/币*100
TracePrint 钱币比
Else
TracePrint "手上没有币,只有钱"
End If
End Sub
Sub 获取委托
// MoveTo intX + 258, intY + 281
// Delay 2000
// MoveTo intX+1042,intY+473
// Delay 2000
FindPic intX+258,intY+281,intX+1042,intY+473,"C:\Users\Administrator\Documents\按键精灵图片\买.bmp",0.9,买入X,买入Y
If 买入X > 0 And 买入Y > 0 Then
// TracePrint "找到买单"
MoveTo 买入X + 250, 买入Y + 8
LeftDoubleClick 1
KeyDown "Ctrl", 1
KeyDown "C", 1
Delay(100)
KeyUp "C", 1
KeyUp "Ctrl", 1
锁定买EOS = Plugin.Sys.GetCLB()
// TracePrint "锁定买EOS:"
// TracePrint 锁定买EOS
MoveTo 买入X + 110, 买入Y + 8
LeftDoubleClick 1
KeyDown "Ctrl", 1
KeyDown "C", 1
Delay(100)
KeyUp "C", 1
KeyUp "Ctrl", 1
我的买价 = Plugin.Sys.GetCLB()
// TracePrint "我的买价:"
// TracePrint 我的买价
Else
// TracePrint "没找到买单"
End If
Delay 200
FindPic intX+258,intY+281,intX+1042,intY+473,"C:\Users\Administrator\Documents\按键精灵图片\卖.bmp",0.9,卖出X,卖出Y
If 卖出X > 0 And 卖出Y > 0 Then
// TracePrint "找到卖单"
MoveTo 卖出X + 258, 卖出Y + 8
LeftDoubleClick 1
KeyDown "Ctrl", 1
KeyDown "C", 1
Delay(100)
KeyUp "C", 1
KeyUp "Ctrl", 1
锁定卖EOS = Plugin.Sys.GetCLB()
// TracePrint "锁定卖EOS:"
// TracePrint 锁定卖EOS
MoveTo 卖出X + 120, 卖出Y + 8
LeftDoubleClick 1
KeyDown "Ctrl", 1
KeyDown "C", 1
Delay(100)
KeyUp "C", 1
KeyUp "Ctrl", 1
我的卖价 = Plugin.Sys.GetCLB()
// TracePrint "我的卖价:"
// TracePrint 我的卖价
Else
// TracePrint "没找到卖单"
End If
End Sub
Sub 获取资产余额
MoveTo intX + 825, intY + 55
//Delay(3000)
LeftDoubleClick 1
KeyDown "Ctrl", 1
KeyDown "C", 1
Delay(100)
KeyUp "C", 1
KeyUp "Ctrl", 1
可卖EOS = Plugin.Sys.GetCLB()
Delay 200
// TracePrint "获取初始EOS:"
// TracePrint 可卖EOS
MoveTo intX + 565, intY + 55
// Delay(3000)
LeftDoubleClick 1
KeyDown "Ctrl", 1
KeyDown "C", 1
Delay(100)
KeyUp "C", 1
KeyUp "Ctrl", 1
ETH = Plugin.Sys.GetCLB()
// Delay 200
// TracePrint "获取初始ETH:"
// TracePrint ETH
// TracePrint "可买EOS:"
可买EOS = ETH/(买一价 + 0.000001)
// TracePrint 可买EOS
End Sub
Function 挂买单(可买EOS)
TracePrint "挂买单:"
Delay 200
MoveTo intX+680, intY+87
LeftDoubleClick 1
我的买价 = 买一价 + 0.00000001
// TracePrint "设置买价:"
// TracePrint 我的买价
SayString 我的买价
Delay 200
//设置数量
MoveTo intX+680, intY+138
LeftDoubleClick 1
// TracePrint "设置买数量:"
SayString 可买EOS
// TracePrint 可买EOS
// TracePrint "确认买入:"
MoveTo intX + 680, intY + 235
Delay 1000
LeftClick 1
锁定买EOS = 可买EOS
可买EOS = 0
End Function
Function 挂卖单(可卖EOS)
TracePrint "挂卖单:"
MoveTo intX+884, intY+87
LeftDoubleClick 1
我的卖价 = 卖一价 - 0.00000001
// TracePrint "设置卖价:"
// TracePrint 我的卖价
SayString 我的卖价
Delay 200
//设置数量
MoveTo intX+918, intY+138
LeftDoubleClick 1
// TracePrint "设置卖数量:"
SayString 可卖EOS
// TracePrint 可卖EOS
// TracePrint "确认卖出:"
MoveTo intX + 918, intY + 235
Delay 200
LeftClick 1
锁定卖EOS = 可卖EOS
可卖EOS = 0
End Function
Sub 检查是否撤单
If 锁定卖EOS then
我的卖价高于卖一价= 我的卖价 -卖一价
If 我的卖价高于卖一价>0 Then
TracePrint "我的卖价高于卖一价"
TracePrint "需要重新挂卖单"
Delay 200
Call 撤卖单
可卖EOS = 锁定卖EOS
锁定卖EOS = 0
Else
// TracePrint "我的卖单排在前面不用撤单"
End If
Else
// TracePrint "目前没有挂卖单"
End If
If 锁定买EOS Then
// TracePrint "我的买价"
// TracePrint 我的买价
// TracePrint "买一价"
// TracePrint 买一价
// TracePrint "我的买价低于买一价"
我的买价低于买一价 = 我的买价 - 买一价
// TracePrint 我的买价低于买一价
If 我的买价低于买一价<0 Then
TracePrint "我的买价低于买一价"
TracePrint "需要重新挂买单"
Delay 200
Call 撤买单
可买EOS = 锁定买EOS
锁定买EOS = 0
Else
// TracePrint "我的买单排在前面不用撤单"
Delay 200
End If
Else
// TracePrint "目前没有挂买单"
Delay 200
End If
End sub
Sub 撤买单
FindPic intX+258,intY+281,intX+1042,intY+473,"C:\Users\Administrator\Documents\按键精灵图片\买.bmp",0.9,买入X,买入Y
If 买入X > 0 And 买入Y > 0 Then
// TracePrint "找到买单"
TracePrint "撤买单"
MoveTo 买入X + 590, 买入Y + 10
Delay 200
LeftClick 1
Delay 1000
Else
// TracePrint "没找到买单"
// Delay 200
End If
End Sub
Sub 撤卖单
FindPic intX+258,intY+281,intX+1042,intY+473,"C:\Users\Administrator\Documents\按键精灵图片\卖.bmp",0.9,卖出X,卖出Y
If 卖出X > 0 And 卖出Y > 0 Then
// TracePrint "找到卖单"
TracePrint "撤卖单"
MoveTo 卖出X + 590, 卖出Y + 10
Delay 200
LeftClick 1
Delay 1000
Else
// TracePrint "没找到卖单"
Delay 200
End If
End Sub
Sub 检查成交
//检查成交
MoveTo intX+828, intY+345
LeftDoubleClick 1
KeyDown "Ctrl", 1
KeyDown "C", 1
Delay(100)
KeyUp "C", 1
KeyUp "Ctrl", 1
成交率= Plugin.Sys.GetCLB()
TracePrint 成交率
End sub
Sub 获取行情
MoveTo intX + 25, intY + 55
Delay 100
LeftDoubleClick 1
KeyDown "Ctrl", 1
KeyDown "C", 1
Delay(100)
KeyUp "C", 1
KeyUp "Ctrl", 1
// TracePrint "获取行情"
Delay 100
买一价= Plugin.Sys.GetCLB()
// TracePrint "买一价:"
// TracePrint 买一价
MoveTo intX+302, intY+55
LeftDoubleClick 1
KeyDown "Ctrl", 1
KeyDown "C", 1
Delay(100)
KeyUp "C", 1
KeyUp "Ctrl", 1
Delay 100
卖一价= Plugin.Sys.GetCLB()
// TracePrint "卖一价:"
// TracePrint 卖一价
// Delay 100
差价百分比 = (卖一价 / 买一价 - 1)*100
// TracePrint "差价百分比:"
// TracePrint 差价百分比
Delay 100
End Sub