Z计划股池说明413文档格式.docx
《Z计划股池说明413文档格式.docx》由会员分享,可在线阅读,更多相关《Z计划股池说明413文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
函数AMEMDATA1:
函数AMEMDATA2:
快速入门:
第1步:
从A计划软件文件夹里提供的ADLL.dll复制到大智慧或者支持函数接口的行情软件(分析家、飞狐等)的文件夹里。
第2步:
以大智慧股票池为例:
在公式里加入如下示例
监控:
C>
10ANDC<
10.1;
IF监控>
0THEN
BEGIN
Buy0:
="
ADll@A"
(1,3000*监控,0,0);
END;
该DLL的调用如上所示,A计划专用DLL目前提供7个专用的A函数。
上例意为当达到买入条件时买入3000元的股票。
相关学习视频及资料链接地址:
视频及教程A计划股票自动交易论坛
函数调用方法及参数解释:
函数ADll@A
函数解释
从ADLL这个动态链接库中调用A函数,后面跟括号,括号内最小2个参数,最大包含4个参数。
每个参数间用半角逗号分隔。
参数1
1买入0卖出(融资融券:
1担保品买入0担保品卖出2融瓷买入3融券卖出4买券还券5卖券还款)
参数2
买卖资金该参数用来表示需要买入股票所用的资金以及卖出需要卖出多少资金的股票。
(整数和实数均可)
参数3
报价该参数由用户在公式里代入报价,也可以设为0由A计划软件按最新价处理。
如果该参数由用户直接给出,则直接按用户的报价进行下单,比如用户可以直接计算好一个优化后的报价,或者直接计算出涨停价。
A计划在计算时,如果该参数大于0即表示由用户的报价来报单。
如果该参为0,则由A计划按当时股价的最新价以及在A计划软件里设置的报价优化后进行委托报单处理。
注:
此参数可以省略,如省略直接由A计划负责报价,如此参数省略则第4个参数也应该省略。
参数4
发送码指定由哪个与此发送码相同的接收码的A计划软件接收并交易。
(必须为整数)注:
此参数可省略,默认值为0。
如第3个参数省略,则此参数一定要省略。
调用
示例
假设我们的条件公式为:
1、B0:
(1,3000*监控)只使用2个参数买入3000元的股票由接收码为0的A计划软件负责接收和报价交易。
2、B0:
(1,3000,DYNAINFO(54)*监控)使用3个参数买入3000元的股票,并且用涨停价报价,由接收码为0的A计划软件负责接收。
3、B0:
(1,3000,0*监控,0)买入3000元的股票由接收码为0的A计划软件负责接收和报价交易。
4、B1:
(0,3000,0*监控,1)卖出3000元的股票由接收码为1的A计划软件负责接收和报价交易。
5、B2:
(2,10000,最新价*监控,2)融资买入1万元的股票由接收码为2的A计划软件负责接收和交易,并且报价由大智慧里用户设定的变量“最新价”报单。
6、S0:
(5,10000,B*监控,0)卖券还款1万元的股票由接收码为0的A计划软件负责接收和交易,并且报价由大智慧里用户设定的变量“B”报单。
注意
第3个参数,参数*监控(即为条件变量),变量指满足条件的变量。
如监控:
那么在调用是即为参数*监控,函数中的后面3个参数任何一个参数都可以*变量并且必须要有一个参数*变量。
如果后面3个参数中不管哪个参数是由计算或者函数计算的参数变量,均要在调用该参数时*变量。
具体见后面示例。
函数ADll@AN
与A函数用法相同,此函数用于按数量交易。
使用方法参考A函数
函数"
ADll@AC"
清仓函数,调用此函数可向指定的A计划发送清仓命令。
A计划收到后即对能读取的仓位可卖数量>
=100的股票全部清仓卖出。
参数4个,第1个参数必须为0;
第2个参数为发送码,即让哪个有相同接收码的A计划做清仓;
第3个参数为清仓比例,如0.5即为清仓时每个持仓个股只清一半;
第4个参数为报价优化,如0.005即报价时按最新价-最新价*0.005做为卖出报价。
注:
①参数3、4均可省略,默认参数3的值为1,参数4的值为0.005;
②如果按比例清仓时计算卖出股数少于100按100股卖出,如个股可卖数量为100,清仓比例为0.5,计算结果小于100则按100处理,如果参数3为负数或者大于1则自动将此参数设为1。
调用示例
3000;
(假设监控对象为上证指数,当指数在3000点之上即清仓)
调用示例:
"
(0,0*监控)向接收码为0的A计划发送清仓命令。
(0,1*监控)向接收码为1的A计划发送清仓命令。
(0,0*监控,0.5)向接收码为0的A计划发送清仓命令。
清仓时只清可卖数量的0.5倍。
(0,0*监控,0.3,0.008)向接收码为0的A计划发送清仓命令。
清仓时只清可卖数量的0.3倍,报价时按千分之8优化报价(最新价-最新价*0.008)。
(0,0*监控,0.4,0)向接收码为0的A计划发送清仓命令。
清仓时只清可卖数量的0.4倍,报价时不优化直接按最新价报价)。
函数ADll@ASET
1、此函数可控制A计划本交易中的启动买入、启动卖出开关。
你可以利用这个函数实现风险控制,比如当大盘某个指标出现时,可以控制A计划不再买入,当符合某个条件时,可以打开A计划的启动买入开关,以继续买入符合条件的股票;
2、加入或者删除A计划禁止买入或者禁止卖出列表。
可以利用该函数在股池中调用将股票代码加入到A计划的禁止买入或者禁止卖出列表。
或者从上述列表中移出股票代码。
参数为3个,第1个参数0代表设置启动卖出1代表设置启动买入;
第2个参数0为关闭1为打开;
用于增删禁止买卖列表:
第1个参数设置为2代表操作禁止买入列表,第2个参数1为加入,0为移出;
第1个参数设置为3代表操作禁止卖出列表,第2个参数1为加入,0为移出。
参数3发送码(忽略此参数默认为0)。
2000ANDC<
(假设监控对象为上证指数,其在2000-3000之间的点位)1、aa1:
ADll@ASET"
(1,0*监控)将接收码0的A计划的启动买入设置为不勾选状态,使该A计划不再具有买入功能。
2、aa1:
(1,1*监控)将接收码0的A计划的启动买入设置为勾选状态,使该A计划具有买入功能。
3、aa1:
(1,1*监控,1)将接收码1的A计划的启动买入设置为勾选状态,使该A计划具有买入功能。
4、aa1:
(0,0*监控)将接收码0的A计划的启动卖出设置为不勾选状态,使该A计划不再具有卖出功能。
5、aa1:
(0,1*监控)将接收码0的A计划的启动卖出设置为勾选状态,使该A计划具有卖出功能。
6、aa1:
(0,0*监控,1)将接收码1的A计划的启动卖出设置为不勾选状态,使该A计划不再具有卖出功能。
增删禁止买卖列表示例代码:
1、符合条件加入到A计划的禁止买入列表
AA:
10andC<
10.2;
IfAA>
0then
Begin
Add1:
(2,1*AA);
End;
2、符合条件从A计划的禁止买入列表移出
(2,0*AA);
3、符合条件加入到A计划的禁止卖出列表
(3,1*AA);
4、符合条件从A计划的禁止卖出列表移出
(3,0*AA);
函数ADll@ASAVE
保存自定义数据函数此函数可以在大智慧存储你想存的数据此函数可以有4个参数,最少要填写2个参数,使用参数4,必须要有参数3。
存储在自定义数据的序号XX,XX可以取值范围为大于0的整数大智慧对应的自定义数据名称应为axx
你想存的数据取值范围实数。
如果此参数2填写值为8888,则表明是获取该自定义数据最后一个数据,如无数据则返回-1(见调用示例)
此参数可省略,如省略则覆盖写数据,如填写大于0的数值则按添加方式写数据
此参数可省略,如参数3省略,此参数无效。
参数填0或者9有效(0代表大盘指数,9代表版块指数),指明该写入是指数数据。
仅支持上海和深圳指数
函数示例
ASAVE1:
ADll@ASAVE"
(1,50*监控)存储数据50到名称为a1的自定义数据中覆盖原数据ASAVE1:
(1,C*监控)存储收盘价到名称为a1的自定义数据中覆盖原数据ASAVE1:
(1,C*监控,1)存储收盘价到名称为a1的自定义数据中在原数据后追加ASAVE1:
(1,C*监控,0,0)存储收盘价到名称为a1的自定义数据中覆盖原数据,且写入的为指数数据Adata1:
(1,8888)或者Adata1:
(1,8888*监控)获取自定义数据a1的最后一个数据给变量Adata1Adata7:
=ADll@ASAVE(7,8888)或者Adata1:
=ADll@ASAVE(7,8888*监控)获取自定义数据a7的最后一个数据给变量Adata7
函数ADll@ABLK
删除、添加到大智慧自选股、获取板块中股票个数。
函数参数2个。
0从自选股中删除1添加至自选股2返回该版块中的股票品种总数3清空该自选股的所有股票6返回股票在该自选股中是否存在(返回值1存在,0不存在)
自选股序号增删自选股1,此参数值为1*条件
假设我们的条件变量预警为真if预警thenbegind2:
ADll@ABLK"
(1,2*预警);
{将符合预警条件的股票添加至自选股2中}end;
if预警thenbegind3:
(0,1*预警);
{将符合预警条件的股票从自选股1中删除}end;
(2,1*预警);
{得到自选股1中的股票品种数,如自选股1中有16个股票,返回值为16}end;
{清空自选股1中的所有股票}方法1:
del1:
(3,1);
方法2:
if预警thenbegindel1:
(3,1*预警);
end;
{股票在该自选股中是否存在}方法1:
IN5:
(6,5);
{返回某股票是否存在自选股5中,返回值1存在0不存在}方法2:
if预警thenbeginIN5:
(6,5*预警);
{返回某股票是否存在自选股5中,返回值1存在0不存在}end;
函数ADll@ADIR
文件操作函数,可以实现往目录里添加、删除股票,判断某个股票是否在某个目录,判断该目录中股票数量等功能
参数2个
参数1:
对哪个以数字命名的目录进行操作
参数2:
要实现的功能参数值
0从某个目录中删除股票
1往某个目录中添加股票
2返回某个目录中的股票数
3清空某个目录的股票
6某个股票是否在某个文夹中
函数读写目录结构大智慧文件夹\UserDate\Adata
10.5;
ifAA>
begin
adddir1:
ADll@ADIR"
(1,1*AA);
{把符合条件的股票代码写到目录1}
deldir1:
(1,0*AA);
{把符合条件的股票代码从目录1里删除}
indir1:
(1,6*AA);
{符合条件的股票是否在目录1中}
cleardir1:
(1,3*AA);
{清除目录1中的所有股票代码}
dirn:
(1,2*AA);
{返回目录1中的股票数量}
函数ADll@AGET
参数2个参数1:
获取数据类型参数2:
发送码。
指向具有相同接收码的A计划连接的帐号进行数据请求调用格式a1:
ADll@AGET"
(参数1,参数2*条件变量)注意:
如果此函数的返回值为-10000或者-10001表示此函数没有获取到数据,使用此函数时可以先检查返回值。
参数
参数解释
可用资金
可用资金:
(0,0);
{直接获取接收码为0所关联的委托软件的可用资金}
1
总资产
总资产:
(1,1);
{直接获取接收码为1所关联的委托软件的总资产额}
2
持仓品种
持仓品种数:
(2,0);
{直接获取接收码为0所关联的委托软件的持仓品种个数}
3
总市值
市值:
{直接获取接收码为1所关联的委托软件的持仓总市值}
4
持仓比
持仓比:
(4,1);
{直接获取接收码为1所关联的委托软件的持仓比}
返回的数值=总市值/总资产
5
保留
6
个股
库存数量
条件;
0thenBegin库存数量:
(6,1*AA);
{获取接收码为1的A计划所关联的委托软件的符合条件的个股的持仓库存数量。
要在条件中进行判断,否则返回结果不正确。
也即在满足条件时需要交易时再去获取个股的相关持仓数据}
7
可卖数量
0thenBegin可卖数量:
(7,1*AA);
{获取接收码为1的A计划所关联的委托软件的符合条件的个股的持仓可卖数量。
同上}
8
成本价
0thenBegin成本价:
(8,1*AA);
{获取接收码为1的A计划所关联的委托软件的符合条件的个股的持仓成本价。
9
判断股票
是否在禁止
买入列表
{接收码为0的A计划的禁止买入列表中是否有该股票。
判断Y1的返回值,如果值为1表示该股票在禁止买入列表,小于1的值代表不在该列表}
①Y1:
(9,0);
②AA:
BeginY1:
(9,0*AA);
10
卖出列表
{接收码为1的A计划的禁止卖出列表中是否有该股票。
判断Y1的返回值,如果值为1表示该股票在禁止卖出列表,小于1的值代表不在该列表}
(10,1);
0thenBeginY1:
(10,1*AA);
函数ADll@AR
在股池中调用此函数可向A计划发送刷新指令。
0全部刷新,1只刷新仓位。
发送码,指令有相同接收码的A计划软件进行刷新。
示例代码:
1ar0:
ADll@AR"
(0,0*预警);
{向接收码为0的A计划发送刷新委托软件指令}
2ar1:
(1,1*预警);
{向接收码为1的A计划发送刷新仓位软件仓位指令}
函数ADll@AMEMBLK
在股池中调用此函数,可以在内存中定义全局变量来实现自选股读写等功能,比文件读写型的自选股读写功能速度快,可以用来代替文件操作型的自选股读写。
也可以只用来做全局变量来使用。
内存变量名称以数字命名,比如你可以定义一个内存全局变量1可以对变量1进行读写操作,来实现你现要的功能。
数字命名的变量名也可以称为内存序号。
本函数需要2个参数,参数1:
要实现的功能序号(1:
内存增加股票0:
从内存中删除股票2:
某只股票是否在某个内存段里3:
获取某个内存段里的股票数量4:
返回所有用此函数存储的股票数量5:
清除所有用此函数存储的股票)6:
求交集(参数2和参数3为内存序号范围)参数2:
内存变量序号参数3:
当参数1为6时需要设置此参数
函数调用
示例1:
往内存中写股票代码(返回值:
1成功0失败-1出错)
ADDMEM:
ADll@AMEMBLK"
{将符合条件的股票代码写到内存变量序号为1的内存变量里面}
ADDMEM2:
{将符合条件的股票代码写到内存变量序号为2的内存变量里面}
示例2:
从内存中删除股票代码(返回值:
DelMEM1:
(0,1*AA);
{将符合条件的股票代码从内存变量序号为1的内存变量中删除}
示例3:
该股票是否在相应的内存里(返回值:
Ok:
=”ADll@AMEMBLK”(2,1);
{返回该股票是否在内存序号为1的内存段里,返回值1为存在}
示例4:
某内存序号内存段里存储的股票数量(返回值:
-1出错)
NUM:
=”ADll@AMEMBLK”(3,1);
{返回在内存序号1里的内存里存储的股票数量}
示例5:
返回所有的用此函数存储的股票数量(返回值:
TNUM:
=”ADll@AMEMBLK”(4,0);
{返回所有用此函数存储的股票总数量}
示例6:
清除所有用此函数存储的股票,清空内存段(返回值:
DELALL:
=”ADll@AMEMBLK”(5,0);
{}
示例7:
求内存序号范围内交集(返回值:
1存在0不存在-1出错)
”ADll@AMEMBLK”(6,1,5)>
0;
{求内存序号1-5中都存在的股票}
示例8:
求内存序号范围内交集(如果包含参数4,则表示求满足多个内存)返回值同上
”ADll@AMEMBLK”(6,1,5,3)>
{求内存序号1-5中存在3个的股票的交集}
函数ADll@AMEMDATA1
在股池中调用此函数,可以在内存中定义全局变量来实现单值数据读写等功能,也可以只用来做全局变量来使用。
内存变量名称以数定命名,比如你可以定义一个内存全局变量1可以对变量1进行读写操作,来实现你现要的功能。
变量的命名以数字命名,也可以称为内存序号。
本函数个参数3个,当写数据时必须3个参数,第3个参数为写入的值,读数据只需要2个参数,第3个参数不要填写。
本函数最多支持2000个数据读写。
为1时表示存数据,不为1时表示读数据。
内存序号。
参数3:
需要存储的数据(存储数据时必须有此参数)
函数
示例一:
存储单值数据
(返回值:
data1:
ADll@AMEMDATA1"
(1,11,C*AA);
{把数据写到内存序号为11的内存段里}
示例二:
读取单值数据(返回值:
相应序号里的存储值-1出错)
Data11:
(2,11);
{读取存储在内存序号11里的数据}
函数:
ADll@AMEMDATA2
在股池中调用此函数,可以在内存中定义全局变量来实现股票相关数据读写等功能,也可以只用来做全局变量来使用。
内存数据包含代码和您存储的相应的数据。
本函数个参数3个,当写数据时必须3个参数,第3个参数为写入的值,读数据和其它功能操作时只需要2个参数,第3个参数不需填写。
存储股票相关数据
c>
10andc<
SAVE2:
ADll@AMEMDATA2"
(1,2,c*AA);
{把数据C写入到内存序号为2的相应内存段,并且对应股票代码}
读取存储在相应内存段且股名符合的数据(返回值:
存储的数据-1出错)
Data1:
(2,1);
{从内存序号1里读取相应股名的数据}
删除存储在相应内存段且股名符合的数据(返回值:
10.15;
del3:
{从内存序号1里删除相应的数据}
删除存储在相应内存段的所有数据(返回值:
Del1:
ADll@AMEMDATA