当前位置:文档之家› 通达信DLL函数导入公式编辑

通达信DLL函数导入公式编辑

通达信DLL函数导入公式编辑
通达信DLL函数导入公式编辑

通达信DLL函数编程规范

文档记录:

用户可以自己编写公式函数dll载入通达信客户端,用户dll必须遵循通达信接口规范。(请参考示范程序TestPluginTCale)

DLL函数结构

1.通达信提供了PluginTCalcFunc.h头文件。

2.包括注册DLL函数基本信息。

注册函数名称为RegisterTdxFunc。具体函数实例可参见TCalcFuncSets.cpp示范程序。

自编实现细节说明

PluginTCalcFunc.h头文件中PluginTCalcFuncInfo结构用来存放用户自己的函数pCallFunc和函数唯一标记nFuncMark;pCallFunc是typedef void(*pPluginFUNC)( int DataLen,float* pfOUT,float* pfINa,float* pfINb,float* pfINc)类型指针;函数参数分别是(数据个数,输出,输入a,输入b,输入c),参数的计算是基于长度为DataLen 的float类型数组。

RegisterTdxFunc函数为注册函数,用户的函数全部都放入PluginTCalcFuncInfo结构的全局数组g_CalcFuncSets中。

函数dll的使用

将生成的dll文件拷贝到主程序的\T0002\dlls目录下(如果没有此目录,请人工建立,如果该dll有关联文件,请一并拷贝过去)

主程序进入后,ctrl+F打开公式管理器,点击“DLL函数”按钮。

如上图:第二号DLL绑定了TestPluginTCale.dll

在指标公式编辑器中就可以用TDXDLL2第二号DLL函数了。

TDXDLL2(1,H,C,C)含义:调用第二号DLL中标记为1的函数,此函数接受四个输入参数,

其中第一个参数用于标记调用DLL中哪个函数。

通达信均线粘合选股公式

创作编号: GB8878185555334563BT9125XW 创作者:凤呜大王* 通达信均线选股指标公式 MA10:=MA(C,10); MA30:=MA(C,30); MA60:=MA(C,60); LL:=MIN(MIN(MA10,MA30),MA60); 选股:COUNT(MA30>REF(MA30,1),2)=2 AND MA60>REF(MA60,1) AND MA10=LL AND CROSS(C,MA10); 通达信均线粘合选股公式 MA1:=MA(CLOSE,5); MA2:=MA(CLOSE,10); MA3:=MA(CLOSE,20); MA4:=MA(CLOSE,60); MA5:=MA(CLOSE,120); MA6:=MA(CLOSE,250); A:MAX(MAX(MA1,MA2),MA3),LINETHICK0; B:MIN(MIN(MA1,MA2),MA3),LINETHICK0; 三线粘合:IF(RANGE(100*(A-B)/B,0,5),100*(A-B)/B,DRAWNULL),LINETHICK0; SA:MAX(MAX(MA1,MA2),MAX(MA3,MA4)),LINETHICK0; SB:MIN(MIN(MA1,MA2),MIN(MA3,MA4)),LINETHICK0; 成本价均线 AMOV:=VOL*(OPEN+CLOSE)/2; AMV1:SUM(AMOV,M1)/SUM(VOL,M1);

AMV2:SUM(AMOV,M2)/SUM(VOL,M2); AMV3:SUM(AMOV,M3)/SUM(VOL,M3); AMV4:SUM(AMOV,M4)/SUM(VOL,M4) AMOV:=VOL*(OPEN+CLOSE)/2; AMV1:SUM(AMOV,5)/SUM(VOL,5); AMV2:SUM(AMOV,13)/SUM(VOL,13); AMV3:SUM(AMOV,34)/SUM(VOL,34); AMV4:SUM(AMOV,60)/SUM(VOL,60); A:MAX(MAX(AMV1, AMV2), AMV3); B:MIN(MIN(AMV1, AMV2), AMV3); 三线粘合:IF(RANGE(100*(A-B)/B,0,5),100*(A-B)/B,DRAWNULL); SA:MAX(MAX(AMV1, AMV2),MAX(AMV3, AMV4)); SB:MIN(MIN(AMV1, AMV2)),MIN(AMV3, AMV4)); 创作编号: GB8878185555334563BT9125XW 创作者:凤呜大王*

通达信精准选股公式[1]1

通达信精准选股公式: 条件选股公式源码: 年认同价:=MA(C,240); 价格中枢:=(SUM(年认同价,0)/(BARSSINCE(年认同价>0)+239)); 箱顶:=价格中枢*1.2; 箱底:=价格中枢*0.8; 毛利润率:=FINANCE(21)/FINANCE(20); 成长价值:=年认同价*(1+毛利润率); 收益价值:=年认同价+FINANCE(33); 回调认同:=EMA(EXPMA(C,20),13); 多头:=(回调认同>REF(回调认同,1))AND(成长价值>REF(成长价值,1))AND(收益价值>REF(收益价值,1))AND(DYNAINFO(7)>0); 回调条件:=COUNT(C<回调认同,5)>=3; 回调突破:=(REF(C,1)<=REF(回调认同,1))AND(C>回调认同)AND(回调条件)AND 多头; 成长条件:=COUNT(C<成长价值,5)>=3; 成长突破:=(REF(C,1)<=REF(成长价值,1))AND(C>成长价值)AND(成长条件)AND 多头; 收益条件:=COUNT(C<收益价值,5)>=3; 收益突破:=(REF(C,1)<=REF(收益价值,1))AND(C>收益价值)AND(收益条件)AND 多头; 箱底条件:=COUNT(C<箱底,5)>=3; 箱底突破:=(REF(C,1)<=REF(箱底,1))AND(C>箱底)AND(箱底条件)AND 多头; 价格条件:=COUNT(C<价格中枢,5)>=3; 价格突破:=(REF(C,1)<=REF(价格中枢,1))AND(C>价格中枢)AND(价格条件)AND 多头; 箱顶条件:=COUNT(C<箱顶,5)>=3; 箱顶突破:=(REF(C,1)<=REF(箱顶,1))AND(C>箱顶)AND(箱顶条件)AND 多头; 突破买点:(回调突破+成长突破+收益突破+箱底突破+价格突破+箱顶突破); 专买老鼠仓 {老鼠仓} AA1:=AMOUNT/V; BB1:=L1.2; DD1:=L

很好用包你赚钱的通达信精准选股公式

很好用包你赚钱的通达信精准选股公 式 通达信精准选股公式条件选股公式源码: 年认同价 :=MA(C,240); 价格中枢:=(SUM(年认同价,O)/(BARSSINCE(年认同价>0)+239)); 箱顶:= 价格中枢 *1.2; 箱底:= 价格中枢 *0.8; 毛利润率:=FINANCE(21)/FINANCE(20); 成长价值:= 年认同价 *(1+ 毛利润率); 收益价值:= 年认同价 +FINANCE(33); 回调认同:=EMA(EXPMA(C,20),13); 多头:=(回调认同>REF(回调认同,1))AND(成长价值>REF成长价值,1))AND(收益价值>REF收益价值,1))AND(DYNAINFO(7)>0); 回调条件:=COUNT(C回调认同,5)>=3; 回调突破:=(REF(C,1)v=REF(回调认同,1))AND(C>回调认同)AND(回调条件)AND 多头;成长条件:=COUNT(C成长价值,5)>=3; 成长突破:=(REF(C,1)<=REF(成长价值,1))AND(C>成长价值)AND(成长条件)AND 多头;收益条件:=COUNT(C收益价值,5)>=3; 收益突破:=(REF(C,1)<=REF(收益价值,1))AND(C>收益价值)AND(收益条件)AND 多头;箱底条件:=COUNT(C箱底,5)>=3; 箱底突破:=(REF(C,1)<=REF(箱底,1))AND(C>箱底)AND(箱底条件)AND多头; 价格条件:=COUNT(C价格中枢,5)>=3; 价格突破:=(REF(C,1)<=REF(价格中枢,1))AND(C>价格中枢)AND(价格条件)AND 多头;箱顶条件:=COUNT(C箱顶,5)>=3; 箱顶突破:=(REF(C,1)<=REF(箱顶,1))AND(C>箱顶)AND(箱顶条件)AND多头;突

C++中DLL函数的导出和导入

1.使用DEF 文件从DLL 导出 模块定义(.def) 文件是包含一个或多个描述DLL 各种属性的Module 语句的文本文件。如果不使用__declspec(dllexport)关键字导出DLL 的函数,则DLL 需要 .def 文件。 .def 文件必须至少包含下列模块定义语句: 文件中的第一个语句必须是LIBRARY 语句。此语句将 .def 文件标识为属于DLL。LIBRARY 语句的后面是DLL 的名称。链接器将此名称放到DLL 的导入库中。 EXPORTS 语句列出名称,可能的话还会列出DLL 导出函数的序号值。通过在函数名的后面加上@ 符和一个数字,给函数分配序号值。当指定序号值时,序号值的范围必须是从1 到N,其中N 是DLL 导出函数的个数。如果希望按序号导出函数,请参见按序号而不是按名称从DLL 导出函数以及本主题。 例如,包含实现二进制搜索树的代码的DLL 看上去可能像下面这样: LIBRARY BTREE EXPORTS Insert @1 Delete @2 Member @3 Min @4 如果使用MFC DLL 向导创建MFC DLL,则向导将为您创建主干 .def 文件并将其自动添加到项目中。添加要导出到此文件的函数名。对于非MFC DLL,必须亲自创建 .def 文件并将其添加到项目中。 如果导出C++ 文件中的函数,必须将修饰名放到 .def 文件中,或者通过使用外部“C”定义具有标准C 链接的导出函数。如果需要将修饰名放到 .def

文件中,则可以通过使用DUMPBIN 工具或/MAP 链接器选项来获取修饰名。请注意,编译器产生的修饰名是编译器特定的。如果将Visual C++ 编译器产生的修饰名放到 .def 文件中,则链接到DLL 的应用程序必须也是用相同版本的Visual C++ 生成的,这样调用应用程序中的修饰名才能与DLL 的 .def 文件中的导出名相匹配。 如果生成扩展DLL 并使用 .def 文件导出,则将下列代码放在包含导出类的头文件的开头和结尾: #undef AFX_DATA #define AFX_DATA AFX_EXT_DATA // #undef AFX_DATA #define AFX_DATA 这些代码行确保内部使用的MFC 变量或添加到类的变量是从扩展DLL 导出(或导入)的。例如,当使用DECLARE_DYNAMIC派生类时,该宏扩展以将CRuntimeClass成员变量添加到类。省去这四行代码可能会导致不能正确编译或链接DLL,或在客户端应用程序链接到DLL 时导致错误。 当生成DLL 时,链接器使用 .def 文件创建导出(.exp) 文件和导入库(.lib) 文件。然后,链接器使用导出文件生成DLL 文件。隐式链接到DLL 的可执行文件在生成时链接到导入库。 请注意,MFC 本身使用 .def 文件从MFCx0.dll 导出函数和类。 2.使用_declspec(dllexport) 从DLL 导出 Microsoft 在Visual C++ 的16 位编译器版本中引入了_export,使编译器得以自动生成导出名并将它们放到一个 .lib 文件中。然后,此 .lib 文件就可以像静态 .lib 那样用于与DLL 链接。

通达信横盘选股公式教程

通达信横盘选股公式教程 Prepared on 22 November 2020

通达信横盘选股公式教程 一公式源码 TM:=CEILING(FROMOPEN/5); HS:=100*VOL/CAPITAL; CK:=REF(CLOSE,1)#DAY; CK1:=REF(OPEN,TM-1); CK2:=OPEN#DAY; ABS(REF(HHV(HIGH,TM-N),N)-CK2)/CK2,TM-N),N)/(TM-N)>=N3/100 AND (HIGH#DAY!=OPEN#DAY OR OPEN#DAY!=LOW#DAY); 二公式解释 行1 计算开盘至现在5分钟数据的个数 行2 计算换手率 行3 股价波动参考值=前日收盘价 行4 股价波动参考值1=今日第一个5分钟开盘价 行5 股价波动参考值2=今日开盘价 行6 选股条件1 :N日(选5分钟数据时为N个5分钟数据)前的TM-N(开盘至N日前)日内最高股价的最大值相对于股价波动参考值2的变化百分比在N1%以内行7 选股条件2 :N日(选5分钟数据时为N个5分钟数据)前的TM-N(开盘至N日前)日内最低股价的最小值相对于股价波动参考值2的变化百分比在N1%以内行8 选股条件3 :TM-1日前的5分钟(开盘后第1个5分钟数据)换手率小于; 选股条件4 :TM-2日前的5分钟(开盘后第2个5分钟数据)换手率小于;

通达信选股公式

{MACD、KDJ、RSI底背离} DIFF:=EMA(CLOSE,12) - EMA(CLOSE,26); DEA:=EMA(DIFF,9); A1:=BARSLAST(REF(CROSS(DIFF,DEA),1)); B1:=REF(C,A1+1)>C AND REF(DIFF,A1+1)C AND REF(""(9,3,3),A2+1)<""(9,3,3) AND CROSS(""(9,3,3),""(9,3,3)); A3:=BARSLAST(REF(CROSS(""(6,12,24),""(6,12,24)),1)); B3:=REF(C,A3+1)>C AND REF(""(6,12,24),A3+1)<""(6,12,24) AND CROSS(""(6,12,24),""(6,12,24)); 底背离:B1>0 OR B2>0 OR B3>0; {集成了MACD、KDJ、RSI三个指标的底背离}; 老鼠仓 AA1:=AMOUNT/VOL; BB1:=L< AA1*; CC1:=(C-REF(C,1))/REF(C,1)*100> ; DD1:=L< MA(C,5)*; EE1:=VOL< MA(V,5)*; 老鼠仓:BB1 AND CC1 AND DD1 AND EE1; 抄底高手 {M 15 35 30 N 12 32 27 D 18 50 42} VAR1:=(CLOSE-MA(CLOSE,48))/MA(CLOSE,48)*100+M<0; VAR2:=(CLOSE-MA(CLOSE,70))/MA(CLOSE,70)*100+N<0;

VB如何调用dll函数

VB如何调用dll函数 2008-01-10 17:17 開始習慣孤單 | 分类:VB| 浏览13089次 假如我有个DLL,名为 asdfg.dll 它里面有一个函数 zxc(参数1,参数2) 我要用这个函数,该怎么写? 请高手帮我写出脚本,有时间的话请再加上注释 谢谢!! 2008-01-10 19:50 提问者采纳 1.在工程-引用中将asdfg.dll引用过来 2.dim AAA as asdfg 'asdfg是类模块的名称 Private Sub Form_Load() dim x Set AAA = New asdfg x = AAA.zxc(参数1,参数2)'参数1,2自己写 End Sub 建议你了解一下下面dll的制作方法,理解就更透彻了。下面内容来自百度。 1.新建一个ActiveX Dll,工程名字为vbmytestdll,类模块

名字为mytestdll 2.类模块内容只有一个函数,主要返回DLL的HELLO WORLD Public Function dlltest1() As String dlltest1 = "HELLO WORLD" End Function 3.保存,生成DLL,名字为 vbmytestdll.dll 4.新建一个EXE工程,在菜单: 工程---引用---浏览里找到vbmytestdll.dll,把它引用进来 5.EXE工程代码如下: Option Explicit Dim testdll As mytestdll'类模块名字 Private Sub Form_Load() Set testdll = New mytestdll 'DLL的一个新实例 Me.Caption = testdll.dlltest1 '我的标题=返回DLL的HELLO WORLD

通达信选股公式(庄家专用不外传)

通达信选股公式 {MACD、KDJ、RSI底背离} DIFF:=EMA(CLOSE,12) - EMA(CLOSE,26); DEA:=EMA(DIFF,9); A1:=BARSLAST(REF(CROSS(DIFF,DEA),1)); B1:=REF(C,A1+1)>C AND REF(DIFF,A1+1)C AND REF("KDJ.K"(9,3,3),A2+1)<"KDJ.K"(9,3,3) AND CROSS("KDJ.K"(9,3,3),"KDJ.D"(9,3,3)); A3:=BARSLAST(REF(CROSS("RSI.RSI1"(6,12,24),"RSI.RSI2"(6,12,24)),1)); B3:=REF(C,A3+1)>C AND REF("RSI.RSI1"(6,12,24),A3+1)<"RSI.RSI1"(6,12,24) AND CROSS("RSI.RSI1"(6,12,24),"RSI.RSI2"(6,12,24)); 底背离:B1>0 OR B2>0 OR B3>0; {集成了MACD、KDJ、RSI三个指标的底背离}; 老鼠仓 AA1:=AMOUNT/VOL; BB1:=L< AA1*0.9; CC1:=(C-REF(C,1))/REF(C,1)*100> 1.2; DD1:=L< MA(C,5)*0.921; EE1:=VOL< MA(V,5)*1.5; 老鼠仓:BB1 AND CC1 AND DD1 AND EE1; 抄底高手 {M 15 35 30 N 12 32 27 D 18 50 42} VAR1:=(CLOSE-MA(CLOSE,48))/MA(CLOSE,48)*100+M<0; VAR2:=(CLOSE-MA(CLOSE,70))/MA(CLOSE,70)*100+N<0; VAR3:=V AR1 AND V AR2; VAR4:=V AR1 AND VAR2 AND COUNT(V AR3,2)=1 AND DATE>940101 AND (CLOSE>OPEN OR CLOSE-0.07 AND (REF(OPEN,1)>REF(CLOSE,1) OR REF(OPEN,1)REF(CLOSE,2) OR REF(OPEN,2)REF(CLOSE,3) OR REF (OPEN,3)REF(CLOSE,4) OR REF(OPEN,4)REF(CLOSE,5) OR REF(OPEN,5)

最精准指标公式通达信指标公式源码

思路要点: 1、股价回落到至5日线均和10日均线之间时,两均线仍保持向上运行; 2、股价回落时,成交量处在缩量状态; 3、股价首次回落至两均线夹角处时,预警信号4个点以下。 {主图} M5:MA(C,5); M10:MA(C,10); TJ1:=EVERY(VM10 AND M10>=REF(M10,1),3); TJ3:=(RANGE(REF(C,1),REF(M10,1),REF(M5,1)) OR RANGE(REF(O,1),REF(M10,1),REF(M5,1))) ; XG:=REF(TJ1,1) AND TJ3 AND TJ2 AND CROSS(C+0.01>=M5,0.5); DRAWICON(XG,L*0.95,1); STICKLINE(XG,C,O,2,0),COLORYELLOW; STICKLINE(XG,H,L,0,0),COLORYELLOW; {幅图} M5:=MA(C,5); M10:=MA(C,10); TJ1:=EVERY(VM10 AND M10>=REF(M10,1),3); TJ3:=(RANGE(REF(C,1),REF(M10,1),REF(M5,1)) OR RANGE(REF(O,1),REF(M10,1),REF(M5,1))) ; XG:=REF(TJ1,1) AND TJ3 AND TJ2 AND CROSS(C+0.01>=M5,0.5); STICKLINE(XG,0,7,1.5,0),COLORYELLOW; {选股} M5:=MA(C,5); M10:=MA(C,10); TJ1:=EVERY(VM10 AND M10>=REF(M10,1),3); TJ3:=(RANGE(REF(C,1),REF(M10,1),REF(M5,1)) OR RANGE(REF(O,1),REF(M10,1),REF(M5,1))) ; XG:REF(TJ1,1) AND TJ3 AND TJ2 AND CROSS(C+0.01>=M5,0.5);

精准指标通达信指标公式源码

MA5:MA(CLOSE,5),LINETHICK1,COLORGREEN; MA10:MA(CLOSE,10),LINETHICK1,COLORRED; _现价:CLOSE,COLORWHITE,NODRAW; _10日涨跌%: (C-REF(CLOSE,10))/REF(CLOSE,10)*100,COLORGREEN,NODRAW; 给:=EMA(C,2),COLORRED; 力:=EMA(SLOPE(C,9)*20+C,37); 买:=CROSS(给,力); 卖:=CROSS(力,给); DRAWICON(买,L*0.97,1); DRAWTEXT(买,L*0.95,'进'),COLORYELLOW; DRAWICON(卖,H*1.03,2); DRAWTEXT(卖,H*1.08,'撤'),COLORWHITE; STICKLINE(给>=力,LOW,HIGH,0.01,0),COLOR0000DD; STICKLINE(给>=力,CLOSE,OPEN,2,1),COLORRED; STICKLINE(给>=力,LOW,HIGH,0.01,0),COLOR0000DD; STICKLINE(给>=力,CLOSE,OPEN,2,1),COLORRED; STICKLINE(给<力,LOW,HIGH,0.01,0),COLORFFDD00; STICKLINE(给<力,CLOSE,OPEN,2,0),COLORFFFF00; STICKLINE(CROSS(给,力),OPEN,CLOSE,2.5,0),COLORYELLOW; STICKLINE(CROSS(力,给),OPEN,CLOSE,2.5,0),COLORWHITE;

在VB中调用DLL的方法

1制作好DLL之后,就可以用VB调用它,实现VB调用C程序。VB程序要使用DLL中的函数,首先必须要有特殊的声明,用Declare声明语句在窗体级或模块级或全局模块的代码声明段进行声明,将动态链接库中的函数声明到VB中,供VB程序调用。 语句格式为:Declare Sub过程名Lib[Alias"别名]([ByVal参数AS类型]),或为Declare Function函数名Lib[Alias"别名]([ByVal参数AS类型])AS类型在声明中首先用Declare 关键字表示声明DLL中的函数。在C语言中有的函数类型为VOID,它表示不具有返回值,则必须用关键字Sub将其声明成过程。有的函数具有返回值,则必须用关键字Function将其声明成函数,并且在声明语句的最后要用AS关键字指明函数返回值的类型。 例如上面的ADD.DLL在VB中就可以声明为: Declare Function ADD Lib“c:\ADD.dll”(ByVal X AS Integer,ByVal Y AS Integer,ByVal filein asstring)AS Integer 通过此声明语句将函数ADD声明到VB中,便可直接调用。 2、dll文件中的函数好像是C语言写的, //函数名:int__stdcall GetMacNo(int*MacNo) //功能:获取卡机的卡机号(单机时) //参数:MacNo[0]-被读出的卡机号 //返回值:0-成功, //2-PC接收超时, //3-应答错误 dll的文件名是COMM232.dll 函数的形参int*MacNo是指针吗? 在VB中应该怎么声明和调用该函数? VB里也可以定义指针吗? 问题补充:vb调用dll文件中的函数我是会的,但这儿的形参有一个星号才不知是怎么一回事, 我是这样声明的对吗? Public Declare Function GetMacNo Lib"COMM232.dll"(ByVal MacNo As Integer)As Integer 又应该怎么调用呢?要先定义一个指针的变量再传给*MacNo还是要怎么做? 都说了MacNo是被读出的卡机号,那么就是传址的了。 dim l as integer dim m as integer l=GetMacNo(m) if l=0then label1.caption="卡机号:"&m elseif l=2then msgbox"PC接收超时" elseif l=3then msgbox"应答错误" end if

易语言中调用DLL使用说明

易语言中调用DLL使用说明 基本说明 本文所描述的部分功能需易语言4.01或以上版本支持。 “在易语言中调用DLL”包含两方面的内容:调用Windows系统API函数;调用普通DLL函数。 下文用到的“调用API”或“调用DLL”等字眼,除非特别注明,一般都是指以上两方面之一或之和,视上下文而定。绝大多数情况下,无需明确区分调用的是系统API还是普通DLL。 目前易语言只支持以stdcall方式调用DLL中的导出函数。 Windows系统API一般都是以stdcall调用方式导出的,故在易语言中调用它们时通常不必考虑函数调用方式的问题。而普通DLL有可能导出“非stdcall调用方式”(比如cdecl)的函数,调用时需要特别注意。一般而言,考虑到通用性,DLL开发者都会选择导出以sdtcall方式调用的函数。(支持生成DLL的编程语言通常都支持导出stdcall调用方式的函数,具体实现请参考各编程语言手册。) 易语言编译生成的DLL,其导出函数全部为stdcall调用方式,所以在易语言中调用易语言生成的DLL不存在问题。 目前在易语言中调用DLL时只支持1字节对齐的结构(自定义数据类型) 如果DLL命令的某个参数或参数的某个成员是结构类型(自定义数据类型),则其对齐方式必须是1字节对齐。Windows系统API中所用到的结构都是1字节对齐的,故在调用API时不受此限制。但如果想用其它编程语言生成DLL供易语言调用且数据类型中包含了1或2字节数据长度的成员(如字符型或短整数),就需要考虑结构的1字节对齐。 在VC中,可以这样定义1字节对齐的结构(结构在C/C++中称为struct):

通达信成功率高的选股指标公式

通达信成功率高的选股指标公式代码集 {逆势买入} Var1b:=DMA(CLOSE,VOL/MA(VOL,4)/4); Var2b:=DMA(CLOSE,VOL/MA(VOL,32)/32); Var3b:=(CLOSE-Var1b)/Var1b*100<-8; Var4b:=(Var1b-Var2b)/Var2b*100<-21; 逆势买入:if(V ar3b AND Var4b AND (OPEN-REF(CLOSE,1))/REF(CLOSE,1)>-0.05,45,0),stick,linethick3,col orf00ff0; drawtext(逆势买入,40,'逆势买入'),colorf0f000; ============================ {龙战四海:99%成功率,选股条件:龙战四海=65} Var1c:=REF(OPEN,1)REF(CLOSE,1) AND OPEN/REF(CLOSE,1)>=1.03; Var5c:=CLOSE>OPEN AND CLOSE/OPEN>1.03; Var6c:=Var1c AND Var2c AND Var3c AND Var4c AND Var5c; Var7c:=CLOSE/MA(CLOSE,3)>=1.07 AND CLOSE=HHV(CLOSE,3) AND MA(VOL,2)/MA(VOL,40)>=3 AND MA(VOL,2)=HHV(MA(VOL,2),3) AND VOL>REF(VOL,1) AND CLOSE>REF(CLOSE,1);

delphi之调用外部dll中的函数

分早绑定和晚绑定两种。 早绑定的代码如下: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; //MB 函数的声明: function MB(hWnd: HWND; lpText, lpCaption: PChar; uType: UINT): Integer; stdcall; implementation {$R *.dfm} {调用外部 DLL 中的函数,譬如调用系统 user32.dll 中的 MessageBoxA} //function MB(hWnd: HWND; lpText, lpCaption: PChar; uType: UINT): Integer; // stdcall; external user32 name 'MessageBoxA'; {其中 user32 是 Delphi 定义的常量 'user32.dll',可以直接写成:} //function MB(hWnd: HWND; lpText, lpCaption: PChar; uType: UINT): Integer; // stdcall; external 'user32.dll' name 'MessageBoxA'; {name 后面说明函数的真实名字} {external 子句说明单元载入时就加载函数,也就是早绑定;如果晚绑定需要用LoadLibrary} {stdcall 指令表示参数传递是从右到左(Pascal则反之),不通过CPU寄存器

【炒股必备】通达信精准白柱+选股指标公式

通达信精准白柱+选股指标公式 M1:=10;M2:=5; RSV:=(CLOSE-LLV(LOW,40))/(HHV(HIGH,40)-LLV(LOW,40))*100; 快线:SMA(RSV,M1,1); 慢线:SMA(快线,M2,1);{M1:10;M2;5} AA:快线,COLORBLUE,LINETHICK2; AA升:IF(AA>REF(AA,1),AA,DRAWNULL),COLORRED,LINETHICK2; AA降:IF(AA28,28,VARG); 吸筹:STICKLINE(VARH>-120,0,VARH,6,1),COLOR0FFFFF; { 选股公式: 白柱:=(CLOSE-MA(CLOSE,40))/MA(CLOSE,40)*100, , COLOR00FF00; XG:CROSS(白柱,-24); }

在vb中调用dll的方法

1 制作好DLL之后,就可以用VB调用它,实现VB调用C程序。VB程序要使用DLL中的函数,首先必须要有特殊的声明,用Declare声明语句在窗体级或模块级或全局模块的代码声明段进行声明,将动态链接库中的函数声明到VB中,供VB程序调用。 语句格式为:Declare Sub 过程名Lib [ Alias " 别名]([ByVal 参数AS类型]),或为Declare Function函数名Lib [Alias " 别名]([ByVal 参数AS类型])AS类型在声明中首先用Declare 关键字表示声明DLL中的函数。在C语言中有的函数类型为VOID,它表示不具有返回值,则必须用关键字Sub将其声明成过程。有的函数具有返回值,则必须用关键字Function将其声明成函数,并且在声明语句的最后要用AS关键字指明函数返回值的类型。 例如上面的ADD.DLL在VB中就可以声明为: Decl are Function ADD Lib “c:\ADD.dll” (ByVal X AS Integer, ByVal Y AS Integer ,ByVal filein asstring)AS Integer 通过此声明语句将函数ADD声明到VB中,便可直接调用。 2、dll文件中的函数好像是C语言写的, // 函数名:int __stdcall GetMacNo(int *MacNo) // 功能:获取卡机的卡机号(单机时) // 参数: MacNo[0]-被读出的卡机号 // 返回值:0-成功, // 2-PC接收超时, // 3-应答错误 dll的文件名是COMM232.dll 函数的形参int *MacNo是指针吗? 在VB中应该怎么声明和调用该函数? VB里也可以定义指针吗? 问题补充:vb调用dll文件中的函数我是会的,但这儿的形参有一个星号才不知是怎么一回事, 我是这样声明的对吗? Public Declare Function GetMacNo Lib "COMM232.dll" (ByVal MacNo As Integer) As Integer 又应该怎么调用呢?要先定义一个指针的变量再传给*MacNo还是要怎么做? 都说了MacNo是被读出的卡机号,那么就是传址的了。 dim l as integer dim m as integer l=GetMacNo(m) if l=0 then label1.caption="卡机号: " & m elseif l=2 then msgbox "PC接收超时" elseif l=3 then msgbox "应答错误" end if

精准大资金拉升通达信指标公式源码

发一个无未来函数的精准的副图指标公式:"大资金拉升" 大资金准备启动:0,COLORRED; VAR2:=REF(LOW,1); VAR3:=SMA(ABS(LOW-VAR2),3,1)/SMA(MAX(LOW-VAR2,0),3,1)*100; VAR4:=EMA(VAR3*10,3); VAR5:=LLV(LOW,13); VAR6:=HHV(VAR4,13); VAR7:=EMA(IF(LOW<=VAR5,(VAR4+VAR6*2)/2,0),3)/618; VAR8:=IF(VAR7>500,500,VAR7); STICKLINE(VAR8>-120,0,VAR8,3,1),COLORGRAY; STICKLINE(VAR8>1 AND "KDJ.J">REF("KDJ.J",1) AND REF("KDJ.J",1) 0.1 AND VAR8<1 AND "KDJ.J">REF("KDJ.J",1) AND REF("KDJ.J",1)

VAR2H:=(SMA(ABS(LOW-VAR1),13,1))/(SMA(MAX(LOW-VAR1,0),13,1))*4; VAR3H:=EMA(VAR2H,13); VAR4H:=LLV(LOW,34); VAR5H:=EMA(IF(LOW<=VAR4H,VAR3H,0),3); VAR6H:=100-3*SMA((CLOSE-LLV(LOW,75))/(HHV(HIGH,75)-LLV(LOW,75))*100,20,1)+2 *SMA(SMA((CLOSE-LLV(LOW,75))/(HHV(HIGH,75)-LLV(LOW,75))*100,20,1),15,1); VAR7H:=100-3*SMA((OPEN-LLV(LOW,75))/(HHV(HIGH,75)-LLV(LOW,75))*100,20,1)+2* SMA(SMA((OPEN-LLV(LOW,75))/(HHV(HIGH,75)-LLV(LOW,75))*100,20,1),15,1); VAR8H:=VAR6HREF(VOL,1) AND CLOSE>REF(CLOSE,1); STICKLINE(VAR8H AND COUNT(VAR8H,18)=1,0,18,8,0),COLORAA00BB;{粉色住} STICKLINE(VAR8H AND COUNT(VAR8H,18)=1,0,18,8,0),COLORBB11BB; STICKLINE(VAR8H AND COUNT(VAR8H,18)=1,0,18,5,0),COLORCC22BB; STICKLINE(VAR8H AND COUNT(VAR8H,18)=1,0,18,3,0),COLORDD33BB; STICKLINE(VAR8H AND COUNT(VAR8H,18)=1,0,18,1,0),COLOREE44BB; DRAWTEX T(VAR8H AND COUNT(VAR8H,18)=1,18,'●↙大资金进场'),COLOR0099FF; DRAWTEXT(VAR8H AND COUNT(VAR8H,18)=1,12,'●↙择机买入'),COLOR0033FF; DRAWTEXT(VAR8H AND COUNT(VAR8H,18)=1,6,'●↙多数会涨'),COLORFFFFAA; AR1:=3*SMA((C-LLV(L,9))/(HHV(H,9)-LLV(L,9))*100,3,1)-2*SMA(SMA((C-LLV(L,9))/(HH V(H,9)-LLV(L,9))*100,3,1),3,1)*100; 出手必中:CROSS(AR1,REF(AR1+0.01,1)) AND LLV(AR1,2)=LLV(AR1,8) AND AR1<20; DRAWTEXT (出手必中,0.8,'!出手必中'),COLORRED; DRAWTEXT_FIX(CURRBARSCOUNT=1,0.01,0.1,0,' 牢记以下买入原则:'),COLORRED; DRAWTEXT_FIX(CURRBARSCOUNT=1,0.01,0.2,0,' 1、严禁追票,买时多考虑,卖时要果断!'),COLORLIRED; DRAWTEXT_FIX(CURRBARSCOUNT=1,0.01,0.3,0,' 2、提前未跟踪不买,拉升不买,阳线放量更不买!'),COLORLIRED; DRAWTEXT_FIX(CURRBARSCOUNT=1,0.01,0.4,0,' 3、顺势而为,分批买入,高抛低吸,控制仓位!'),COLORLIRED; DRAWTEXT_FIX(CURRBARSCOUNT=1,0.01,0.5,0,' 4、短线看K线,中线看形态,长线重趋势!'),COLORLIRED; DRAWTEXT_FIX(CURRBARSCOUNT=1,0.01,0.6,0,' 5、开盘半小时只低吸,收盘前三分钟买确认!'),COLORLIRED; MA5 :=EMA(CLOSE,5); 趋势:=MA5-EMA(MA5,2); JCSJ1:=BARSLAST(CROSS(趋势,0))+1; JCSJ2:=JCSJ1+REF(JCSJ1,JCSJ1); 双底:IF(JCSJ1=1 AND MA5>REF(MA5,JCSJ2) AND COUNT(趋势

关于DLL动态库调用

关于DLL动态库调用小结 引言 比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序EXE 文件中,会产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费;另一个缺点是,在编写大的EXE程序时,在每次修改重建时都必须调整编译所有源代码,增加了编译过程的复杂性,也不利于阶段性的单元测试。 Windows系统平台上提供了一种完全不同的较有效的编程和运行环境,你可以将独立的程序模块创建为较小的DLL(Dynamic Linkable Library)文件,并可对它们单独编译和测试。在运行时,只有当EXE程序确实要调用这些DLL模块的情况下,系统才会将它们装载到内存空间中。这种方式不仅减少了EXE文件的大小和对内存空间的需求,而且使这些DLL模块可以同时被多个应用程序使用。Windows自己就将一些主要的系统功能以DLL 模块的形式实现。 一般来说,DLL是一种磁盘文件,以.dll、.DRV、.FON、.SYS和许多以.EXE为扩展名的系统文件都可以是DLL。它由全局数据、服务函数和资源组成,在运行时被系统加载到进程的虚拟空间中,成为调用进程的一部分。如果与其它DLL之间没有冲突,该文件通常映射到进程虚拟空间的同一地址上。DLL模块中包含各种导出函数,用于向外界提供服务。DLL可以有自己的数据段,但没有自己的堆栈,使用与调用它的应用程序相同的堆栈模式;一个DLL在内存中只有一个实例;DLL实现了代码封装性;DLL的编制与具体的编程语言及编译器无关。 在Win32环境中,每个进程都复制了自己的读/写全局变量。如果想要与其它进程共享内存,必须使用内存映射文件或者声明一个共享数据段。DLL模块需要的堆栈内存都是从运行进程的堆栈中分配出来的。Windows在加载DLL模块时将进程函数调用与DLL文件的导出函数相匹配。Windows操作系统对DLL的操作仅仅是把DLL映射到需要它的进程的虚拟地址空间里去。DLL函数中的代码所创建的任何对象(包括变量)都归调用它的线程或进程所有. 调用方式

相关主题
文本预览
相关文档 最新文档