开源OTCBTC盘口搬砖脚本

上个星期写到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

你可能感兴趣的:(开源OTCBTC盘口搬砖脚本)