我拆成了两文件,你可以用回你的做法。关键的数据结构和函数调用格式给你改好了。
(一)dllfnc.dpr
library dllfnc;
uses
Unit1 in 'Unit1.pas';
{$E *.dll}
{$R *.RES}
exports
FNC1;
begin
end.
(二) unit1.pas
unit Unit1;
interface
uses
SysUtils,
Classes;
type
//分析周期
DATA_TYPE=
(
TICK_DATA, //分笔成交
MIN1_DATA, //1分钟线
MIN5_DATA, //5分钟线
MIN15_DATA, //15分钟线
MIN30_DATA, //30分钟线
MIN60_DATA, //60分钟线
DAY_DATA, //日线
WEEK_DATA, //周线
MONTH_DATA, //月线
MULTI_DATA //多日线
);
//基本数据
tagSTKDATA = packed record
m_time: integer; //时间,UCT
m_fOpen: single; //开盘
m_fHigh: single; //最高
m_fLow: single; //最低
m_fClose: single; //收盘
m_fVolume: single; //成交量
m_fAmount: single; //成交额
m_wAdvance: word; //上涨家数(仅大盘有效)
m_wDecline: word; //下跌家数(仅大盘有效)
end;
//分笔成交数据的买卖盘
tagMMP = packed record
m_fBuyPrice: array[1..3] of single; //买1--买3价
m_fBuyVol: array[1..3] of single; //买1--买3量
m_fSellPrice: array[1..3] of single; //卖1--卖3价
m_fSellVol: array[1..3] of single; //卖1--卖3量
end;
//扩展数据,用于描述分笔成交数据的买卖盘
tagSTKDATAEx = packed record
case integer of
0: (mmp: tagMMP);
1: (m_fDataEx: array[1..12] of single); //保留
end;
//财务数据顺序(m_pfFinData内容)
tagFinData = packed record
Zgb: Single; //0 总股本(万股)
Gjg: Single; //1 国家股
Fqrg: Single; //2 发起人法人股
Frg: Single; //3 法人股
LtBg: Single; //4 B股
LtHg: Single; //5 H股
LtAg: Single; //6 流通A股
Zgg: Single; //7 职工股
A2zpg: Single; //8 A2转配股
Zzc: Single; //9 总资产(千元)
Ldzc: Single; //10 流动资产
Gdzc: Single; //11 固定资产
Wxzc: Single; //12 无形资产
Cqtz: Single; //13 长期投资
Ldfz: Single; //14 流动负债
Cqfz: Single; //15 长期负债
Zbgjj: Single; //16 资本公积金
Mggjj: Single; //17 每股公积金
Gdqy: Single; //18 股东权益
Zysr: Single; //19 主营收入
Zyly: Single; //20 主营利润,
Qtly: Single; //21 其他利润
Yyly: Single; //22 营业利润
Tzsy: Single; //23 投资收益
Btsr: Single; //24 补贴收入
Yywsz: Single; //25 营业外收支
Snsytz: Single; //26 上年损益调整
Lyze: Single; //27 利润总额
Shly: Single; //28 税后利润
Jly: Single; //29 净利润
Wfply: Single; //30 未分配利润
Mgwfp: Single; //31 每股未分配
Mgsy: Single; //32 每股收益
Mgjzc: Single; //33 每股净资产
Tzmgjzc: Single; //34 调整每股净资
Gdqyb: Single; //35 股东权益比,
Jzsyl: Single; //36 净资收益率
end;
//函数数据结构
tagCALCINFO = packed record
m_dwSize: LongWord;//结构大小
m_dwVersion: LongWord;//调用软件版本(V2.10 : 0x210)
m_dwSerial: LongWord;//调用软件序列号
m_strStkLabel: Pchar;//股票代码
m_bIndex: longBOOL;//大盘
m_nNumData: integer;//数据数量(pData,pDataEx,pResultBuf数据数量)
m_pData: ^tagSTKDATA;//常规数据,注意:当m_nNumData==0时可能为 NULL
m_pDataEx: ^tagSTKDATAEx;//扩展数据,分笔成交买卖盘,注意:可能为 NULL
m_nParam1Start: integer;//参数1有效位置
m_pfParam1: ^single;//调用参数1
m_pfParam2: ^single;//调用参数2
m_pfParam3: ^single;//调用参数3
m_pfParam4: ^single;//调用参数3
m_pResultBuf: ^single;//结果缓冲区
m_dataType: DATA_TYPE;//数据类型
m_pfFinData: tagFinData;//财务数据
end;
pTagCALCINFO = ^tagCALCINFO;
function FNC1(pData:pTagCALCINFO):integer;stdcall;export;
implementation
function FNC1(pData:pTagCALCINFO):integer;stdcall;export;
begin
if (@pData.m_pfParam1 <> nil) and (@pData.m_pfParam2 <> nil) then
result:=1
else
result:=0;
end;
end.
--------------------------------------------------------------------------------
-- 作者: wilson
-- 发布时间: 2002/03/07 00:16am
注意,指标数据实际是添进
m_pResultBuf: ^single;//结果缓冲
的
result是指定数组的有效起始下标,为负数表示数据都无效,即不画线
没有评论:
发表评论