【AHK】给通达信软件增加F1买入,F2卖出 交易热键(基于中银国际客户端测试)
来源:互联网 发布:appserv 默认端口 编辑:程序博客网 时间:2024/05/01 02:26
交易软件都做得差强人意。。。同花顺有热键F1呼出买入和F2卖出的功能(见下图),通达信则没有(是有数字热键221,223 总之是别扭)
来为通达信普通买入卖出功能增加热键!(程序化交易的先得能呼叫出买卖功能然后自动填单)
(有钱的可以直接购买fix协议或者dll接口,没钱的用ahk模拟人来操作吧,穷得蛋疼。。。)
【技术原理】
MSAA的全称是Microsoft Active Accessibility。这是类似DCOM技术。技术模型是这样的,UI程序可以暴露出一个Interface,方便另一个程序对其进行控制。MSAA技术的初衷是为了方便残疾人使用Windows 程序。自动化自然可以借用这项技术。
[源代码]
;功能:给通达信软件增加类似同花顺的交易功能热键;2015年10月25日11:39:03;作者:sunwind #SingleInstance,Force DetectHiddenWindows,On WINNAME := "TdxW_MainFrame_Class" CTRLNAME := "MHPToolBar1" hwnd:=ControlGetHwnd(CTRLNAME, WINNAME) idObject:=0 ;~ window :=0 SELF ;~ client := -4 ;~ child_1 := 1; ;~ child_2 := 2; ;~ child_3 := 3; ;========MHPToolBar1======== ;按钮所在的“小”窗口 window := Acc_ObjectFromWindow(hwnd, idObject) ;========MainViewBar======== ;窗口里面的工具栏 MainViewBar:= Acc_Children(window)[3] ;下面代码是基于中银国际交易软件客户端测试的 ;========买入按钮======== buy:= Acc_Children(MainViewBar)[1] ;~ MsgBox % Acc_Role(buy) " :: " buy.accName(0) ;========卖出按钮======== sell:= Acc_Children(MainViewBar)[2] ;========撤单按钮======== cancel:= Acc_Children(MainViewBar)[3] ;========成交按钮======== chengjiao:= Acc_Children(MainViewBar)[4] ;========持仓按钮======== chicang:= Acc_Children(MainViewBar)[5] ;招商证券的;========买入按钮========;buy:= Acc_Children(MainViewBar)[12];========卖出按钮========;sell:= Acc_Children(MainViewBar)[13];这些信息查询,需要用到AccViewer工具。;========热键定义========;F1买入,F2卖出,F3撤单,F4持仓查询 f1:: buy.accDoDefaultAction(0) return f2:: sell.accDoDefaultAction(0) return f3:: cancel.accDoDefaultAction(0) return f4:: chicang.accDoDefaultAction(0) return ;========辅助函数======== ControlGetHwnd(aCtrl, aWin){ ControlGet, cID,hwnd, , %aCtrl%, ahk_class %aWin% Return cID } ;========acc库函数======== ; Written by jethrowAcc_Init(){StatichIf Nothh:=DllCall("LoadLibrary","Str","oleacc","Ptr")}Acc_Query(Acc) { ; thanks Lexikos - www.autohotkey.com/forum/viewtopic.php?t=81731&p=509530#509530try return ComObj(9, ComObjQuery(Acc,"{618736e0-3c3d-11cf-810c-00aa00389b71}"), 1)}Acc_Error(p="") {static setting:=0return p=""?setting:setting:=p}Acc_ObjectFromWindow(hWnd, idObject = 0){Acc_Init()IfDllCall("oleacc\AccessibleObjectFromWindow", "Ptr", hWnd, "UInt", idObject&=0xFFFFFFFF, "Ptr", -VarSetCapacity(IID,16)+NumPut(idObject==0xFFFFFFF0?0x46000000000000C0:0x719B3800AA000C81,NumPut(idObject==0xFFFFFFF0?0x0000000000020400:0x11CF3C3D618736E0,IID,"Int64"),"Int64"), "Ptr*", pacc)=0ReturnComObjEnwrap(9,pacc,1)} Acc_Children(Acc) {if ComObjType(Acc,"Name") != "IAccessible"ErrorLevel := "Invalid IAccessible Object"else {Acc_Init(), cChildren:=Acc.accChildCount, Children:=[]if DllCall("oleacc\AccessibleChildren", "Ptr",ComObjValue(Acc), "Int",0, "Int",cChildren, "Ptr",VarSetCapacity(varChildren,cChildren*(8+2*A_PtrSize),0)*0+&varChildren, "Int*",cChildren)=0 {Loop %cChildren%i:=(A_Index-1)*(A_PtrSize*2+8)+8, child:=NumGet(varChildren,i), Children.Insert(NumGet(varChildren,i-8)=9?Acc_Query(child):child), NumGet(varChildren,i-8)=9?ObjRelease(child):return Children.MaxIndex()?Children:} elseErrorLevel := "AccessibleChildren DllCall Failed"}if Acc_Error()throw Exception(ErrorLevel,-1)} Acc_Role(Acc, ChildId=0) {try return ComObjType(Acc,"Name")="IAccessible"?Acc_GetRoleText(Acc.accRole(ChildId)):"invalid object"}Acc_GetRoleText(nRole){nSize := DllCall("oleacc\GetRoleText", "Uint", nRole, "Ptr", 0, "Uint", 0)VarSetCapacity(sRole, (A_IsUnicode?2:1)*nSize)DllCall("oleacc\GetRoleText", "Uint", nRole, "str", sRole, "Uint", nSize+1)ReturnsRole}
1 0
- 【AHK】给通达信软件增加F1买入,F2卖出 交易热键(基于中银国际客户端测试)
- [AHK]为通达信增加打开关闭交易窗口的功能热键
- [AHK]为通达信标记文字窗口的按钮增加热键
- [AHK]华泰通达信交易客户端锁定后自动解锁
- 【ahk】为招商证券通达信版增加热键显隐跳空缺口,热键ctrl+
- [AHK]用AutoHotkey实现中银国际通达信版自动登录
- [AHK]华泰通达信版 买入 填单
- [AHK]同花顺交易卖出填单工具
- [ahk]股票交易软件持仓数据获取--通达信测试可用(招商证券)
- 买入卖出四个时机
- 股票买入卖出手续费
- [AHK]为通达信软件定义快捷键(发送按键法)
- 【ahk】为QQ增加激活主面板的热键
- LeetCode 121. Best Time to Buy and Sell Stock--股票买入后再卖出,求最大收益,最多交易一次
- 假如一个数组存储了一个股票,在一天交易窗口内各时间点的股票价格(正整数),只允许一次买入和一次卖出,请提供一个算法,计算出通过买入和卖出可以得到的最大利润
- 假如一个数组存储了一个股票,在一天交易窗口内各时间点的股票价格(正整数),只允许一次买入和一次卖出,请提供一个算法,计算出通过买入和卖出可以得到的最大利润
- 引f1的内容到f2中(vi中的cp),:r f1
- 股市买入卖出时间点选择问题
- 网络编程学习小结
- 经典语录收录(1)
- Let the Balloon Rise
- Redis与Memcached的区别
- AngularJS入门教程:日期格式化
- 【AHK】给通达信软件增加F1买入,F2卖出 交易热键(基于中银国际客户端测试)
- 桥接模式(Bridge Pattern)
- Android:Using shared element transitions in fragments
- 数据挖掘之数据预处理
- protobuf-实践篇
- 蓝鸥杯C语言技能竞赛模拟题
- Python基础(九) json
- java快速排序
- c++重载<, +, +=, =, ==, <<, >>等符号