全部版块 我的主页
论坛 金融投资论坛 六区 金融实务版
1546 0
2017-12-29
// O1C , O2C , 均收益源代码
//【第1/3部分】 TDX 指标文件 A.171229 start
// CNT1: TDXDLL1(1,C,O,1), COLOR00FF00, NODRAW;
// O1C:  TDXDLL1(2,C,O,2), COLORFF0000;
// CNT2: TDXDLL1(3,C,O,1), COLOR0000FF, NODRAW;
// O2C:  TDXDLL1(4,C,O,2), COLORFFCC00;
//【第1/3部分】 TDX 指标文件 A.171229 end



//【第2/3部分】 DLL工程 头文件 A.171229 start
//#ifndef __PUBLICHEAD_H__
//#define __PUBLICHEAD_H__
//#ifndef __TCALC_FUNC_SETS
//#define __TCALC_FUNC_SETS
//// note1: copy from PluginTCalcFunc.h
//#pragma pack(push,1)
//// note2: 函数(数据个数,输出,输入a,输入b,输入c)
//typedef void(*pPluginFUNC)(int,float*,float*,float*,float*);
//typedef struct tagPluginTCalcFuncInfo
//{
//        unsigned short                nFuncMark;//函数编号
//        pPluginFUNC                        pCallFunc;//函数地址
//}PluginTCalcFuncInfo;
//typedef BOOL(*pRegisterPluginFUNC)(PluginTCalcFuncInfo**);  
//#pragma pack(pop)
//// note3: copy from PluginTCalcFunc.h
//#ifdef __cplusplus
//extern "C"
//{
//#endif //__cplusplus
//        __declspec(dllexport) BOOL RegisterTdxFunc(PluginTCalcFuncInfo** pFun);
//#ifdef __cplusplus
//}
//#endif //__cplusplus
//#endif //__TCALC_FUNC_SETS
//#endif //__PUBLICHEAD_H__
//【第2/3部分】 DLL工程 头文件 A.171229 end


//【第3/3部分】 DLL工程 C代码 A.171229
// 输出目录设置: F:\new_tdx\T0002\dlls\
// 使用说明
// 1. 生成的dll及相关依赖dll请拷贝到通达信安装目录的T0002/dlls/下面;
// 2. 再在公式管理器进行绑定
#include "StdAfx.h"
#include "PublicHead.h"
// slf add
#include "math.h"
// 动态数组 备份输入数据 slf add
#include<iostream>
using   namespace   std;
// 开始编辑 函数

//  函数功能:O1C 操作次数
//  调用序号:1
//  K 线类型:1 day
//  函数输入:pfINa = C
//            pfINb = O
//            pfINc = 2
//  函数输出:O1C 操作次数
//  调用函数:
//  被调函数:
//  最先处理;从最久数据开始 [0]
//  编辑日期:171229
//  编译工具:VC6.0
//  实际验证:正确   
//                                              C            O             2
void O1CCount(int DataLen,float* pfOUT,float* pfINa,float* pfINb,float* pfINc)
{
        int i;
        int iDays;        // 持股天数
        float fCntKLine;  // 计数器

        // 清零输出
        for(i = 0; i < DataLen; i++)
        {// for 0 start
                pfOUT = 0;
        }// for 0 end

        // 清零计数
        fCntKLine = 0;
        // 赋值持股天数;
        iDays = 1;

        // 从最远数据 [0] 开始处理
    // 初始值 1
        for(i = iDays; i < DataLen; i=i+iDays+1)
        {// for 1 start
                // 计数器累加
                fCntKLine = fCntKLine + 1;
        }// for 1 end
        pfOUT[DataLen - 1] = fCntKLine;
}

//  函数功能:O1C 均收益
//  调用序号:2
//  K 线类型:1 day
//  函数输入:pfINa = C
//            pfINb = O
//            pfINc = 2
//  函数输出:每次收益 以及 总均收益
//  调用函数:
//  被调函数:
//  最先处理;从最久数据开始 [0]
//  编辑日期:171229
//  编译工具:VC6.0
//  实际验证:正确   
//                                              C            O             2
void O1CReturn(int DataLen,float* pfOUT,float* pfINa,float* pfINb,float* pfINc)
{
        int i;
        int iDays;        // 持股天数
        float fCntKLine;  // 计数器
        float fC1OReturn; // O1C 收益和

        // 清零输出
        for(i = 0; i < DataLen; i++)
        {// for 0 start
                pfOUT = 0;
        }// for 0 end

        // 清零计数
        fCntKLine = 0;
        fC1OReturn = 0;
        // 赋值持股天数;
        iDays = 1;

        // 从最远数据 [0] 开始处理
    // 初始值 1
        for(i = iDays; i < DataLen; i=i+iDays+1)
        {// for 1 start
                // 计数器累加
                fCntKLine = fCntKLine + 1;

                // 计算CO1 收益
                fC1OReturn = fC1OReturn + (pfINa - pfINb[i-iDays])/pfINb[i-iDays];
                //pfOUT = 100*fC1OReturn / fCntKLine;
                pfOUT = 100*(pfINa - pfINb[i-iDays])/pfINb[i-iDays];
        }// for 1 end
        pfOUT[DataLen - 1] = 100*fC1OReturn/fCntKLine;
}
//  函数功能:O2C 操作次数
//  调用序号:3
//  K 线类型:1 day
//  函数输入:pfINa = C
//            pfINb = O
//            pfINc = 2
//  函数输出:O2C 操作次数
//  调用函数:
//  被调函数:
//  最先处理;从最久数据开始 [0]
//  编辑日期:171229
//  编译工具:VC6.0
//  实际验证:正确   
//                                              C            O             2
void O2CCount(int DataLen,float* pfOUT,float* pfINa,float* pfINb,float* pfINc)
{
        int i;
        int iDays;        // 持股天数
        float fCntKLine;  // 计数器

        // 清零输出
        for(i = 0; i < DataLen; i++)
        {// for 0 start
                pfOUT = 0;
        }// for 0 end

        // 清零计数
        fCntKLine = 0;
        // 赋值持股天数;
        iDays = 2;

        // 从最远数据 [0] 开始处理
    // 初始值 2
        for(i = iDays; i < DataLen; i=i+iDays+1)
        {// for 1 start
                // 计数器累加
                fCntKLine = fCntKLine + 1;
        }// for 1 end
        pfOUT[DataLen - 1] = fCntKLine;
}
//  函数功能:O2C 均收益
//  调用序号:4
//  K 线类型:1 day
//  函数输入:pfINa = C
//            pfINb = O
//            pfINc = 2
//  函数输出:每次收益 以及 总均收益
//  调用函数:
//  被调函数:
//  最先处理;从最久数据开始 [0]
//  编辑日期:171229
//  编译工具:VC6.0
//  实际验证:正确   
//                                              C            O             2
void O2CReturn(int DataLen,float* pfOUT,float* pfINa,float* pfINb,float* pfINc)
{
        int i;
        int iDays;        // 持股天数
        float fCntKLine;  // 计数器
        float fC1OReturn; // O2C 收益和

        // 清零输出
        for(i = 0; i < DataLen; i++)
        {// for 0 start
                pfOUT = 0;
        }// for 0 end

        // 清零计数
        fCntKLine = 0;
        fC1OReturn = 0;
        // 赋值持股天数;
        iDays = 2;

        // 从最远数据 [0] 开始处理
    // 初始值 2
        for(i = iDays; i < DataLen; i=i+iDays+1)
        {// for 1 start
                // 计数器累加
                fCntKLine = fCntKLine + 1;

                // 计算O2C 收益
                fC1OReturn = fC1OReturn + (pfINa - pfINb[i-iDays])/pfINb[i-iDays];
                //pfOUT = 100*fC1OReturn / fCntKLine;
                pfOUT = 100*(pfINa - pfINb[i-iDays])/pfINb[i-iDays];
        }// for 1 end
        pfOUT[DataLen - 1] = 100*fC1OReturn/fCntKLine;
}

// ########################
// 注册函数
// ########################
PluginTCalcFuncInfo g_CalcFuncSets[] =
{
        { 1, ( pPluginFUNC ) &O1CCount  },  
    { 2, ( pPluginFUNC ) &O1CReturn },
        { 3, ( pPluginFUNC ) &O2CCount  },
        { 4, ( pPluginFUNC ) &O2CReturn },


        {0,NULL},
};

//@@@@@@@@@@@@@@@@@@@@@@@@@
// 导出给TCalc的注册函数
//#########################
BOOL RegisterTdxFunc(PluginTCalcFuncInfo** pFun)
{
        if(*pFun==NULL)
        {
                (*pFun)=g_CalcFuncSets;
                return TRUE;
        }
        return FALSE;
}//end of dll

1. DLL接口软件,深圳市财富趋势科技股份有限公司提供;
2. 编译软件,Microsoft提供;
3. 以上软件版权归上述公司所有;
4. 本人提供源代码属于开源代码,建议非商业使用;
5. 商业应用涉及软件版权问题,请自行联系上述软件提供商授权(请联系供应商确认是否必要)。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群