请问如何实现股票自动下单的?用股票网格交易易魔方炒股可好?

【小工具】全自动股票交易系统,支持大智慧股票池通达信飞狐金魔方!!(更新)
我的图书馆
【小工具】全自动股票交易系统,支持大智慧股票池通达信飞狐金魔方!!(更新)
今天是感恩节,发一下我修改后的全自动股票交易系统,支持多券商!!!
& && &&&自从接触炒股以来,一直有个梦想:每天电脑自动开机,自动运行股票行情软件,在上千只股票中寻找合适股票的买卖点,然后根据买卖信号自动进行实盘操作,中午11点半收市后电脑自动关机,下午1点前又自动开机进行股票交易,15点收市后,电脑又关机,直到第二天9点又自动开机,周而复始,无需人工干预的全自动股票买卖操作。。。。要实现全自动股票交易,就必须实现以下几个问题:& && &&&1.& & 行情软件最好是全推数据,这样才能从上千只股票中,及时发现合适股票的买卖点,该行情软件最好有强大的公式和实时预警能力。以前我用的飞狐,实际使用中发现,飞狐的稳定性比较差,经常出现软件崩溃,数据出错等现象。最近大半年来转为使用金魔方,金魔方也是和讯开发的,据说开发团队就是飞狐的团队。金魔方采用的是轻全推数据,公式扩展功能非常强大,非常适合做自动交易的预警软件。在实际使用中,金魔方的稳定性也非常好。因此开发了一个dll接口,在金魔方的预警公式中调用该dll,即可将预警信号发送给自动交易软件,进行交易。& && &&&2.& & 目前国内券商软件几十上百家,各个券商的交易软件也不一样,以前开发的程序只针对国泰君安的交易软件,但这样限制了软件的使用范围,如何适应多个券商的交易呢,同花顺给了一个启示,同花顺的委托下单里面集成了多个券商下单软件,经研究发现,大部分相同,因此只要利用同花顺的下单软件,即可实现对多券商进行下单。本程序支持大部分主流下单软件的自动登录,包含验证码登录方式。& && &&&3.& & 实现自动开关机,这个就比较简单了。该功能由安装目录中的卓咪自动守护程序来完成。本程序设定每天早上9点自动开机,11:35后自动睡眠关机,12:50自动开机,15:00后自动睡眠。采用自动睡眠的好处是开机后程序自动恢复到以前工作的状态。同时解决有些笔记本电脑不支持定时开机的难题。
& && &&&下面对安装使用做说明:& && &&&1.&&本程序为绿色版,无需安装,解压即可使用。将程序目录里的所有可执行文件都设置为以管理员身份运行。需要说明的是,本程序用易语言开发,容易被误被报病毒,但本程序并无恶意代码。
& && &&&2.&&打开金魔方,登录,输入并保存登录帐号和登录密码,并设置为自动登录。进入金魔方后,点击菜单栏的程式交易,取消里面的“防止计算机休眠”选项(如果勾选此选项,自动守护程序将无法实现自动开关机)。
自己编写金魔方的预警公式,在公式中调用dll,将预警信号发送到自动交易程序,调用格式如下:
& && &&&参考目录里的报警测试公式。& && &&&如果预警公式提示dll调用失败,请安装微软的visual studio2012运行库即可解决(网盘里有下载)。& && &&&3.打开交易软件
& && &&&买卖指标我定义了四种,■为开仓买入,如果已经买入过该股票,程序不会进行第二次买入。□为正常卖出,受程序里的最低盈利控制,如果勾选并设置了最低盈利,则只有达到最低盈利条件后,才根据卖出信号进行卖出。☆为止损卖出,程序收到此信号,将无条件卖出股票。※为tot买入,即重复买入,tot也买入也只能进行一次,并设定原股票在至少亏损后7个点后才能进行。Tot买入不是必须的。& && &&&监听端口与密钥要和预警公式里的设置一样,否则收不到预警信号。& && &&&如果启动卓咪全自动交易软件失败,请删除安装目录里的action.txt文件后,再尝试启动。& && &&&目前程序设置了10来个不同券商的下单软件,这些下单软件请用同花顺的委托管理器来下载,我们也在安装包里提供了部分。其实只要是采用同花顺核心下单界面的下单软件都可以使用。& && &&&3.&&先登录一次券商下单软件,保存帐号。下次登录时不用填写帐号。进入下单软件后,取消委托需要确认选项,同时在是否自动填写买卖数量的设置里选是。如图示:
& && &&&4.&&下面是自动守护程序,完成自动开关机等功能。
& && &&&点击里面的测试键,则相当于手动执行该选项功能。点自动睡眠的测试键,电脑会立即进入睡眠状态,第二天早上9点会自动醒来。。。。
& && &&&运行界面全览:
重新编译了dll.请将dll重新复制到fmldll目录。
增加老板键 Alt+c
增加ToT重复买入的阀门线判断,但盈利低于阀门线时,可进行tot买入.
增加注册功能,未注册时,同时操作的股票数限制为5个,其他无人和功能限制。
如果键盘模拟动作不成功,删除目录下的winwing0开头的5个文件,即可。这是因为程序采用wing0级驱动来模拟按键,但这个驱动不支持usb的鼠标,解决方法是要嘛删除上面说的5个文件,或者改用ps2接口的键盘鼠标。
坛友反馈的dll加载失败的问题,是由于系统缺少相应的控件造成的,可以安装visual studio 2012,看看是否加载成功,成功后再把visual studio 2012卸载即可。
增加申银万国证券
.增加自动卖出盈利最高股票功能。& &根据用户反馈意见,在全仓资金被使用完的情况下,当接收到新的买入预警信号时,系统自动卖出盈利最高的股票(如果仓位所有股票处于亏损状态,则不卖出),以腾出资金买入新的预警股票。
.券商增加 同花顺模拟炒股,可以到同花顺网站注册帐号,免费开通模拟炒股,初始资金20万。
.修正登录下单软件的相关问题。
.一些内部优化。
.更新卓咪守护程序,增加监控大智慧、通达信、飞狐的预警,并将这些预警发送到卓咪自动交易系统进行实盘交易,使用方法:通过预警公式名称是否含有相应的□■等字符来完成买卖动作。至此,本自动交易系统支持金魔方、飞狐(大交易师)、大智慧、通达信的预警自动交易。
.自动卖出收益最高的股票增加可设定最低盈利控制。
.增加自动卖出亏损最大股票功能。当新买入信号到来,账户资金不足,且无最高收益股票可卖时,选中该功能,自动卖出持仓超过N天亏损最大的股票,以腾出资金买入新预警股票,特别注意,如果当天已经进行过新的买入,则不会卖出亏损最大的票。如欲使用此功能,建议同时选中自动卖出盈利最大的票,当这两个功能(自动买盈利最高、自动卖亏损最大)同时选中时,程序会优先卖出盈利最高的票来腾资金。
.增加超时自动平仓功能,可设定N天后自动卖出收益大于A%的股票,以方便短线操作。
.券商增加中信证券的支持
.下单程序防断线优化
新年快乐,软件又更新了
.增加支持通达信跨券商独立交易系统,该系统支持80多家券商的交易。
.增加大智慧dll,支持将股票池的信号发送到交易软件,进行交易。
.修改自动卖出股票腾资金策略,原策略为:当资金不足时,买入信号到来,程序自动卖出收益最高或最低的票。改为:当资金不足时,程序自动卖出收益最高或最低票,这样以保证新买入信号到来时,能及时买入。
.软件内部优化。
.将预警监控功能合并到卓咪自动交易主程序上,现在只启动一个程序即可。
.启用多线程,提高程序执行效率和稳定性。
.选中股票列表框中的股票可锁定该股票。
.增加自动更新功能
重新制作了录像,对如何使用自动交易进行了详细讲解,欢迎下载。
下载地址:
[ 本帖最后由 迷上炒股 于
17:39 编辑 ]股票论坛
TA的最新馆藏关于抄股软件——金魔方炒股软件的Dll外挂开发-爱编程
关于抄股软件——金魔方炒股软件的Dll外挂开发
   14:40:04
  金魔方平台是由飞狐交易师原创团队集多年研发经验,依靠和讯财经网强大资源,吸取国际专家思路而推出的十年巨作。目前新出的这个2.0版,这一版在数据存储方面作很大的改进,同等条件的沪深数据,飞狐和大交易师的存储空间要2.4G多,而现在的金魔方只要350M的存储空间,同一个指标选股飞狐大交易师要几十秒钟才有结果,金魔方只要几秒钟就有结果,并且没有数据接收的困扰。
  目前大部分只知道如何使用金魔方,但是作为一名IT界的成员,我们更关心的是如何使用金魔方提供的金语言以及其提供的各种其它语言的接口来操作其金融数据,其提供的接口是开放的,数据是免费的,无须注册。那么下面我们将一起来看看其相关的数据结构以及接口情况。
  以下是金魔方的主页面:
  从上面的界面我们可以看到,中间是K线,左边是公式编辑器,它的公式是采用自带的金语言进行编写的,我们先来介绍一下它自带的金语言:
金语言参考手册&
一.&& 指标。
用金语言所编写的程序称之为&指标&。
二. 金语言指标的类型
金语言能够生成五类指标。分别是:
1)&&&&&& 技术指标
2)&&&&&& 条件选股指标
3)&&&&&& 五彩K线指标
4)&&&&&& 自定义函数
5)&&&&&& 智能策略
技术指标:对证券数据进行计算、统计后得出的数据集合。通常需要显示在软件图表上。
条件选股:是一类特别的技术指标,其特征是只允许输出一个变量,而且这个变量必须是布尔值。
五彩K线指标:是一类特别的技术指标,它的用途很简单,就是用于控制K线的颜色。所以这类指标也只输出一个变量。这个变量存放的是K线的颜色。
自定义函数:用户把一些常用的计算提炼出来,以方便以后反复使用。
智能策略:能够直接作出交易动作的指标。
三.&& 金语言基础元素
3.1& 数据是怎样计算的
序列是很特别的一类数据。它跟数组很相像:可以通过下标访问。
序列跟数组的区别:
数组在声明时已经定义好元素数量,之后不会改变,而序列在声明时并不指明元素数量。它的数量由K线数量决定,随着行情进行,K线不断增加,序列也相应的自动增加,并且是一一对应。
序列的下标:金语言中,序列下标0代表最近的一根K线所对应的序列数据;下标1代表前一根K线所对应的数据。
单值是除序列之外的所有数据类型。单值可以是数字,也可以是字符串,甚至可以是定长数组。
金语言内置了常用的行情序列数据。包括:开、高、低、收、量、额、日期、时间、持仓等。
金语言有两种计算模式。逐行计算和逐根计算。
逐行计算模式下,每次计算都对整个序列从头到尾重新计算其值。
逐根计算模式下,每次计算时只计算序列最新一根的值----第一次载入图表时除外,此时会从头到尾对每一根K线进行逐根计算。
其中,智能策略和用户自定义函数只能运行在逐根模式下。
3.2&&& 变量的声明
变量通过input(输入参数)、variable进行声明。
3.3&&& 表达式
变量通过运算组成表达式。
3.4&&& 输出
所谓输出,是指标运行时显示数据,输出数据。
金语言有多种输出方式。
1.&&&&& 通过&:&操作符或Plot函数输出。
2.&&&&& 通过画线函数输出。
3.&&&&& 通过Explain、Print、Comment、声音函数、Email等函数输出。
3.5&&& 控制语句
控制语句控制程序的执行。包括分支、循环等。
金语言有以下控制语言:
if、switch(case)、for、while、repeat
3.6&&& 指标引用
技术指标能够通过refindi函数引用另一个指标的输出。
refindi只工作在逐行模式下。
3.7&&& 数据引用
默认提供的高低收量额等数据对应于当前图表上的品种和周期。如果要使用非当前图表上的品种、周期的数据,可以通过refData函数取得。
3.8&&& 自定义函数
自定义函数能够很方便的扩展金语言,既比使用DLL这样的手段简单,运行效率又比引用指标的方式高。
自定义函数只能工作在逐根模式下。
自定义函数通常这样使用:
1,&&&&& 计算后返回一个值
2,&&&&& 计算并填充引用参数。引用参数是自定义函数特殊的输入参数,能够在函数中计算,并把值带出函数。
自定义函数所声明的variable变量的值会保留,并能够在下一次计算时使用。
四.&& 金语言与金魔方
金语言在金魔方中编写、编译;
指标能显示在金魔方图表上或用于选股、预警。
智能策略指标编写之后,可以在金魔方中测评;
最后,智能策略可以通过金魔方实盘运行,并做出交易动作。
五.&& 金语言的扩展(用户DLL的接入)
金语言允许用户通过DLL增强金语言的能力。
金语言的DLL接口非常强大,相比之下,一般股软都预先限定DLL的输入参数,金语言则同时支持限定输入参数的方式,也支持用户描述的方式。
也就是说,用户只需在金语言中撰写函数描述,就能自由使用任意DLL函数包括,例如Windows Api中的函数。前提是这些函数用到的数据类型在金语言的支持之列------毕竟,金语言并未支持结构、指针等数据类型。
  在介绍完金语言之后,我们正式进入金魔方平台的开发环节,首先我们点击程式交易工具栏进入功式编辑器,如图2所示:
  公式编辑器中,开发人员可以直接使用它提供的金语言进行逻辑的编写,也可以采用dll外挂的方式来编写,上面图2 我就是采用dll的外挂形式来进行程序编写,dll外挂是指采用c或c++等高级语言编写函数,最后编译成dll的形式,然后用金语言调用,图2的公式中,FOXFUNC是指dll的命名,TRADE_FIRST是指dll中编写的函数名称,var1是指函数的返回值,这个返回值可以是一个数或是一串数字。drawline是指根据返回值的序列来连接各个k线的点,其中返回的序列下标是和每一条k线的编号相对应的。
  上在描述了具体的dll调用过程,下面来看看,如何调用金魔方的API接口以及金魔方的基本数据结构。
///////////////////////////////////////////////////////////////////////////
飞狐交易师&C语言接口&扩展程序调用接口规范V3.0
1.本规范适用于飞狐交易师V3.x公式系统.
2.扩展函数用于实现系统函数不能实现的特殊算法.
3.扩展函数用windows 32位动态连接库实现,建议使用Microsoft Visual C++编程.
4.调用时在公式编辑器中写"动态库名称@函数名称"(参数表)即可,例如下面函数可以写为"FOXFUNC@MYMACLOSE"(5)
5.动态连接库名称和函数名称可以自己定义.
6.使用时必须将动态库拷贝到飞狐交易师安装目录下的FmlDLL子目录下使用.
1 //分析周期
2 ////////////////////////////////////////////////////
3 enum DATA_TYPE
TICK_DATA=2,
//分笔成交
MIN1_DATA,
MIN5_DATA,
MIN15_DATA,
//15分钟线
MIN30_DATA,
//30分钟线
MIN60_DATA,
//60分钟线
WEEK_DATA,
MONTH_DATA,
YEAR_DATA,
MULTIDAY_DATA,
MULTIMIN_DATA,
//多分钟线
MULTISEC_DATA
20 ////////////////////////////////////////////////////
21 //基本数据
22 ////////////////////////////////////////////////////
24 typedef struct tagSTKDATA
//时间,UCT
//time_t m_
//成交量(手)
//成交额(元)/持仓(未平仓合约,仅期货有效)
//上涨家数(仅大盘有效)
//下跌家数(仅大盘有效)
36 } STKDATA;
38 ////////////////////////////////////////////////////
39 //扩展数据,用于描述分笔成交数据的买卖盘
40 ////////////////////////////////////////////////////
42 typedef union tagSTKDATAEx
float m_fBuyPrice[3];
//买1--买3价
float m_fBuyVol[3];
//买1--买3量
float m_fSellPrice[3];
//卖1--卖3价
float m_fSellVol[3];
//卖1--卖3量
DWORD m_dwT
//成交方向
float m_fDataEx[13];
53 } STKDATAEx;
55 ////////////////////////////////////////////////////
56 //除权数据
57 ////////////////////////////////////////////////////
59 typedef struct tagSPLITDATA
//timetype
//时间,UCT
67 } SPLITDATA;
70 ////////////////////////////////////////////////////
71 /*财务数据顺序(m_pfFinData内容)
总股本(万股),
发起人法人股,
总资产(千元),
资本公积金,
每股公积金,
营业外收支,
上年损益调整,
未分配利润,
每股未分配,
每股净资产,
调整每股净资,
股东权益比,
净资收益率
经营现金流入
经营现金流出
经营现金流量
投资现金流入
投资现金流出
投资现金流量
筹资现金流入
筹资现金流出
筹资现金流量
现金及等价物
应收帐款周转率
存货周转率
主营业务增长率
税后利润增长率
净资产增长率
总资产增长率
133 ////////////////////////////////////////////////////
134 //调用参数项结构
135 ////////////////////////////////////////////////////
136 typedef struct tagCALCPARAM
const float m_fP //数值参数
const float* m_pfP //序列参数,指向一个浮点型数组
const char* m_szP //字符串参数
//序列参数有效起始位置
146 }CALCPARAM;
149 ////////////////////////////////////////////////////
150 //调用接口信息数据结构
151 ////////////////////////////////////////////////////
152 typedef struct tagCALCINFO
const DWORD m_dwS //结构大小
const DWORD m_dwV //调用软件版本(V2.10 : 0x210)
const DWORD m_dwS //调用软件序列号
//const char* m_strUserN //软件用户名
const char* m_strStkL //股票代码
const BOOL
m_bI //大盘
const int m_nNumD //数据数量(pData,pDataEx,pResultBuf数据数量)
const STKDATA* m_pD //常规数据,注意:当m_nNumData==0时可能为 NULL
const STKDATAEx*
m_pDataEx; //扩展数据,分笔成交买卖盘,注意:可能为 NULL
const int m_nParam1S //参数1有效起始位置
const float*
m_pfParam1; //调用参数1
const float*
m_pfParam2; //调用参数2
const float*
m_pfParam3; //调用参数3
const float*
m_pfParam4; //调用参数4
m_pResultB //结果缓冲区
const int m_dataT //数据类型
const float* m_pfFinD //财务数据
175 //以上与分析家兼容,所以沿用其结构和名称
177 //以下为飞狐交易师扩展
const DWORD
// 调用参数数量
const CALCPARAM*
// 调用参数数组
const DWORD
m_dwReservedEx[4];
//股票名称
SPLITDATA*
//除权数据
m_nNumSplitD
//除权次数
191 } CALCINFO;
  上面展示了金魔方的数据结构,数据结构主要是存取金融数据的,下面展示下我们自己定义的函数,这个函数也就是金魔方要调用的函数。  
extern "C"__declspec(dllexport) int WINAPI TRADE_FIRST(CALCINFO *pData);
  上面的结构体中CALCINFO *pData表示输入的数据,具体的输入输出如下:
/*函数输入
注1: (与分析家兼容)
1.函数调用参数由m_pfParam1--m_pfParam4带入,若为NULL则表示该参数无效.
2.当一个参数无效时,则其后的所有参数均无效.
如:m_pfParam2为NULL,则m_pfParam3,m_pfParam4一定为NULL.
3.参数1可以是常数参数或序列数参数,其余参数只能为常数参数.
4.若m_nParam1Start&0, 则参数1为常数参数,参数等于*m_pfParam1;
5.若m_nParam1Start&=0,则参数1为序列数参数,m_pfParam1指向一个浮点型数组,
数组大小为m_nNumData,数据有效范围为 m_nParam1Start 至 m_nNumData-1.
在时间上m_pData[x] 与 m_pfParam1[x]是一致的
注2: (飞狐交易师扩展)
1.该扩展结构使调用参数在技术上可以是无限数目的,且每个参数都可为数值或序列,由公式中实际的调用参数决定。
2.CALCPARAM结构用于带入参数信息和实际数据,m_pCalcParam数组大小为m_nNumParam,数据有效范围为 0 至 m_nNumParam-1.
3.按参数的顺序,m_pCalcParam[0]为第一个参数的数据,m_pCalcParam[1]为第二个参数的数据...,为了保持兼容,原m_nParam1Start、m_pfParam1等5个属性依然有赋值。
4.若 i位置的参数为数值,取用m_pCalcParam[i].m_fParam.
5.若 i位置的参数为序列,取用m_pCalcParam[i].m_pfParam,数组大小为m_nNumData,数据有效范围为m_pCalcParam[i].m_nParamStart 至 m_nNumData-1. 若m_pCalcParam[i].m_nParamStart&0, 则此数组中无有效数据。
6.由于可以调用多个序列,许多序列的计算可以先在公式中进行,然后作为调用的参数即可。
7.经此扩展,对分析家的DLL依然可以调用、兼容。
///////////////////////////////////////////////////////////////////////////////////
/* 函数输出
__declspec(dllexport) int xxxxxxxx(CALCINFO* pData);
1.函数名称需全部大写.
2.函数必须以上述形式声明,请用实际函数名称替代
对于C++程序还需包括在 extern "C" {
3.函数计算结果用pData-&m_pResultBuf带回.
4.函数返回-1表示错误或全部数据无效,否则返回第一个有效值位置,即:
m_pResultBuf[返回值] -- m_pResultBuf[m_nNumData-1]间为有效值.
5.函数名称长度不能超过15字节,动态连接库文件名不能超过9字节(不包括扩展名),动态库名称不能叫SYSTEM,EXPLORER
  下面看一下我如何在dll主函数中调用相关的输入与最后的输出返回值
extern "C"__declspec(dllexport) int WINAPI TRADE_FIRST(CALCINFO *pData)
vector&struct info&//存放整合之合的数据点
value.reserve(50000);
vector&struct up_down&up_down_//存放没有过滤前的顶,底点
up_down_value.reserve(50000);
vector&struct up_down&filter_//存放最后的顶和底数据,连成笔
filter_value.reserve(50000);
//vector&struct line_series&//存放整合之合的数据点,特征序列
//series.reserve(50000);
//series.clear();
vector&struct line_series&big_line_//存放最后的数据
big_line_series.reserve(50000);
big_line_series.clear();
if ( pData-&m_pfParam1 &&
//参数1有效
pData-&m_nParam1Start&0 &&
//参数1为常数
pData-&m_pfParam2==NULL )
//仅有一个参数
float fParam = *pData-&m_pfParam1;
int flag = (int)fP
while (pData-&m_nNumData&4)
return -1;
if(flag&0)
if(pData-&m_nNumData&100)
return -1;
comb_data(pData,value);//进行数据合并,value存储合并之后的数据
find_up_down(value,up_down_value);//找到顶底数据,存在up_down_value中
filter_up_down(up_down_value,filter_value,value);
//过滤数据,找到笔
//feature_series(filter_value,series);//得到所有的向上的特征序列及向下的特征序列
//preidct(filter_value,big_line_series);
for(int j=0;j&pData-&m_nNumDj++)
pData-&m_pResultBuf[j]=0;
for(int i=0;i&filter_value.size();i++)
pData-&m_pResultBuf[filter_value[i].data.node_no]=filter_value[i].data.//返回序列,笔序列
return -1;
  上面的pData为输入、输出数据结构体,在输入的时候,调用m_pdata数组就可以读入任意时间段的数据,最后数据返回的时候,再写入到m_pResult数组中,将结果带回。至于如何生成dll文件这里就不多讲,我采用的是vs2010,编译直接写入dll文件中。需要提醒的是,dll文件写入后要放入金魔方的FmlDll文件中。调试的时候也可以将debug调试器连接到金魔方.exe文件,这样就可以实时写入金魔方数据,最后结果也直接带入到金魔方中进行显示。
版权所有 爱编程 (C) Copyright 2012. . All Rights Reserved.
闽ICP备号-3
微信扫一扫关注爱编程,每天为您推送一篇经典技术文章。

我要回帖

更多关于 recyclerview实现网格 的文章

 

随机推荐