通达信金融终端网上交易软件 快捷键分为四种
数字键:比如1,61,81,10,91等
点系列键:比如.101,.201,.301.... .909等
功能键:比如F1,F2... 空格键,减号键,TAB等 (F1:分时成交明细、F2:分价表、F3:沪指分时、F4:深指分时、F5分时与K线切换、F6:自选股、F7:树状菜单、 F8:无、F9:期权交易、F10:基本资料、 F11:投资日历、F12:委托)
组合键:比如Ctrl+V,Alt+1,Ctrl+Z等

交易软件都做得差强人意。。。同花顺有热键F1呼出买入和F2卖出的功能(见下图),通达信则没有(是有数字热键221,223 总之是别扭)

来为通达信普通买入卖出功能增加热键!(程序化交易的先得能呼叫出买卖功能然后自动填单)

(有钱的可以直接购买fix协议或者dll接口,没钱的用ahk模拟人来操作吧,穷得蛋疼。。。)

【技术原理】

MSAA的全称是Microsoft Active Accessibility。这是类似DCOM技术。
技术模型是这样的,UI程序可以暴露出一个Interface,方便另一个程序对其进行控制。
MSAA技术的初衷是为了方便残疾人使用Windows 程序。自动化自然可以借用这项技术。


 [源代码]

;功能:给通达信软件增加类似同花顺的交易功能热键
;2015年10月25日11:39:03
;作者:sunwind#SingleInstance,ForceDetectHiddenWindows,OnWINNAME := "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)returnf2::sell.accDoDefaultAction(0)returnf3::cancel.accDoDefaultAction(0)returnf4::chicang.accDoDefaultAction(0)return;========辅助函数========ControlGetHwnd(aCtrl, aWin)
{ControlGet, cID,hwnd, , %aCtrl%, ahk_class %aWin%Return cID};========acc库函数========; Written by jethrow
Acc_Init()
{Static hIf Not hh:=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()If   DllCall("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)=0Return    ComObjEnwrap(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)Return    sRole
}

【AHK】给通达信软件增加F1买入,F2卖出 交易热键(基于中银国际客户端测试)相关推荐

  1. [AHK]为通达信增加打开关闭交易窗口的功能热键

    用文华财经习惯用空格呼叫出交易界面,通达信软件(招商证券)没有相应热键,便用AutoHotkey来帮它定义一个. #Persistent #SingleInstance Force Control:= ...

  2. 通达信软件L2接口的委托队列有什么用?

    如果我们开通了通达信Level 2接口,打开任意个股分时图,首先可以看到买一和卖一的部分委托(如下图红框处). 点击[查看更多],选择[委托队列]栏目,则可以看到完整的前50笔的委托买卖队列的数量. ...

  3. 通达信软件L2接口要进行测试的原因是什么?

    通达信软件L2接口要进行测试的原因是什么?我所以选择接口测试作为我第一专栏的写作方向,主要是因为凭借多年的工作经验,接口测试的投入产出比相对较高,在业务上有很大的价值. 很多年前,当我第一次进入移动互 ...

  4. 2015快捷键在哪里设置_炒股软件的选择通达信软件的基本设置

    新入市的股民,通常会纠结于该使用哪个炒股软件?要不要买L2或更高级的服务?我刚入市的时候,也纠结于前一个问题(刚入市时L2一年1000左右,不纠结,直接不买).大智慧.同花顺.通达信.东方财富各有各的 ...

  5. 通达信软件接口是什么?能看得到五档报价吗?

    一般的看盘软件,无论是手机版还是电脑版只能看到买卖五档数据,那么通达信软件接口也能看的到五档报价,接下来小编就用一个表格给大家展示一下通达信软件接口获取五档报价说明! 签名 void GetQuote ...

  6. 通达信软件接口如何更新股票价格指数?

    股票价格是股票市场信息的重要组成部分,股票价格是股票价格的一个重要指标. 通达信软件接口除了可以完成股票价格指数以外,还包括股票的股票代码和简称,股票的开盘价和开盘指数,收盘价和收盘价,股票的每日最高 ...

  7. 通达信软件开发自定义接口的功能

    通达信软件开发自定义接口的功能,自定义数据是通达信提供给大家的可扩展数据接口. 这种数据类型带来了日期序列数据和字符串数据,极大地扩展了通达信本身的数据结构. 尤其是字符串功能,相当给力,可以在通达信 ...

  8. 分享通达信软件L2接口获取数据的执行过程

    在股票交易市场领域当中,通达信软件L2接口获取股票数据,用户根据得到的股票数据信息,做出合理的交易决策,让股票交易活动顺利进行. 通达信软件L2接口提供数据支撑,有了这些股票数据,经过了分析才能真实反 ...

  9. 通达信软件接口的实现

    通达信软件接口的实现就是指类满足接口的所有需求.通过implements关键字实现接口. interface IAdmin{ getPirce:()=>void } interface IUse ...

最新文章

  1. linux下如何删除整行文本格式,Shell中如何删除文本比较长的行的实现方法
  2. mysql innodb 数据复制_快速将InnoDB表复制到另一个实例
  3. Realtek24口RTL8382L+RTL8218B+RTL8231方案简介
  4. LeetCode(合集) 路径总和(二叉树) golang copy的值复制
  5. window.open不重复打开同一个名称的窗口_干货满满|Ctrl键的正确打开方式
  6. DotNet程序员是不是最不幸福?
  7. WebSocket | 为什么你前后端推送不会用?因为你少了WebSocket的帮忙
  8. 北京小学 计算机派位,北京小升初电脑派位原理详解!和对口直升入学有什么区别?...
  9. 摆花(2012Noip普及组第3题)
  10. Java前端顺序,java种初始化顺序
  11. 如何杀死一个已经detached的screen会话?
  12. 2、linux系统root用户忘记密码后的重置方式
  13. The Art of Memory Forensics-Windows取证(Virut样本取证)
  14. 扫雷win10_厉害了,一个自动扫雷游戏项目!
  15. 斐讯k2 怎么开虚拟服务器,求助各位大神,K2P怎么开启SSH
  16. 【金三银四】TCP,UDP,Socket,Http网络编程面试题(2021最新版)
  17. 胡侃学习(理论)计算机-From 南大小百合
  18. 微信支付和支付宝支付整合(含设计模式1)
  19. 小学生计算机认识ppt,小学生认识计算机概要.ppt
  20. cacti监控服务器性能,监控三剑客之Cacti监控服务器

热门文章

  1. 十一个爆火的Python爬虫实战项目源码【不用谢】
  2. Android 12关闭Selinux
  3. html中单行文本,利用css实现单行文本文字两端对齐
  4. torch.range()和torch.arange()
  5. JavaScript计时器实现倒计时效果
  6. css文件更新后浏览器网页仍然显示以前的css文件
  7. 我的2017杭州云栖大会参会体验(多图)
  8. C语言qsort函数解析(和使用方法)
  9. 计算机系统节能减排,节能减排,我们怎么做?
  10. Oracle归档日志比联机重做日志小很多的情况总结