您现在的位置:程序化交易>> 股票公式>> 通达信>> 通达信知识>>正文内容

[原创]通达信dll公式函数规范,delphi版 [通达信]

  • 咨询内容:
    library tdxdlltest;
      {通达信dll公式函数规范 delphi版 2016.03.05    }
    uses
      SysUtils,Windows;

    {$R *.res}

    type
      ArraySingle=array of single;

    type

      pPluginFUNC = procedure(p1: Integer; var p2, p3, p4, p5: ArraySingle); cdecl;

      tagPluginTCalcFuncInfo = packed record
        nFuncMark: Word;
        pCallFunc: pPluginFUNC;
      end;
      PluginTCalcFuncInfo = tagPluginTCalcFuncInfo;
      PPluginTCalcFuncInfo = ^PluginTCalcFuncInfo;
      PPPluginTCalcFuncInfo = ^PPluginTCalcFuncInfo;

      pRegisterPluginFUNC = function(pFun: PPPluginTCalcFuncInfo):LongBool;cdecl;


    var
      g_CalcFuncSets: array[0..2] of PluginTCalcFuncInfo;

    procedure TestPlugin1(DataLen:integer;pfOUT:ArraySingle;pfINa:ArraySingle;pfINb:ArraySingle;pfINc:ArraySingle);cdecl;
    var       // F8F8F8F8 表示无效数据,通达信公式中将不会显示
      i:integer;
      pc1:PCardinal;
    begin
      for i:=0 to datalen-1 do
      begin
        pfOUT[i]:=pfina[i];
        
        if i>=datalen-10 then
        begin
          pc1:=@pfout[i];
          pc1^:=$F8F8F8F8;
        end;
      end;
    end;


    {通达信dll公式函数规范 delphi版  悟多qq911322  2016.03.05    }
    procedure TestPlugin2(DataLen:integer;pfOUT:ArraySingle;pfINa:ArraySingle;pfINb:ArraySingle;pfINc:ArraySingle);cdecl;
    var
      i:integer;
    begin
      for i:=0 to datalen-1 do
      begin
        pfOUT[i]:=pfinb[i];
      end;
    end;

    procedure TestPlugin3(DataLen:integer;pfOUT:ArraySingle;pfINa:ArraySingle;pfINb:ArraySingle;pfINc:ArraySingle);cdecl;
    var
      i:integer;
    begin
      for i:=0 to datalen-1 do
      begin
        pfOUT[i]:=pfinc[i];
      end;
    end;

    procedure InitStruct;
    begin
      g_CalcFuncSets[0].nFuncMark := 1;
      g_CalcFuncSets[0].pCallFunc := @TestPlugin1;
      g_CalcFuncSets[1].nFuncMark := 2;
      g_CalcFuncSets[1].pCallFunc := @TestPlugin2;
      g_CalcFuncSets[2].nFuncMark := 3;
      g_CalcFuncSets[2].pCallFunc := @TestPlugin3;
      //有更多的函数的话,可以增加到这里
    end;


    function RegisterTdxFunc(pFun: PPPluginTCalcFuncInfo): LongBool; cdecl;
    begin
      Result := False;
      if pFun^ = nil then
      begin
        pFun^ := @g_CalcFuncSets; //绑定dll函数起始地址
        Result := True;
      end;
    end;


    exports
      RegisterTdxFunc;
    begin
     InitStruct;
    end.

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 511411198  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容