日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

大智慧c语言dll,调用大智慧dll,简单支持大智慧公式dll接口

發(fā)布時(shí)間:2024/8/1 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大智慧c语言dll,调用大智慧dll,简单支持大智慧公式dll接口 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

網(wǎng)上看到一個(gè)分享貼,說(shuō)可以調(diào)用大智慧公式,只是我沒(méi)有看懂要如何使用。

請(qǐng)問(wèn)類似這樣的調(diào)用是要寫到哪里,自己的dll里面還是大智慧里面?

XDll_Free(Dll相對(duì)路徑文件名);//釋放動(dòng)態(tài)鏈接庫(kù)

XDll_Load(Dll相對(duì)路徑文件名);//加載動(dòng)態(tài)鏈接庫(kù)

次源自客戶定制需要,考慮再三,決定支持大智慧公式dll接口

大智慧公式dll語(yǔ)言規(guī)約和分析家一樣.

算是給大家的節(jié)禮物

調(diào)用大智慧/分析家公式dll接口函數(shù)

在調(diào)用函數(shù)之前要?jiǎng)?chuàng)建緩沖區(qū),并從對(duì)應(yīng)歷史數(shù)據(jù)接口填充k線數(shù)據(jù)

這個(gè)與歷史數(shù)據(jù)接口對(duì)應(yīng)的緩沖區(qū),數(shù)據(jù)長(zhǎng)度固定為480,配有10個(gè)輸入輸出緩沖區(qū),

用作調(diào)用dll具體公式函數(shù)是時(shí)輸入輸出緩沖區(qū)

XDll_Free(Dll相對(duì)路徑文件名);//釋放動(dòng)態(tài)鏈接庫(kù)

XDll_Load(Dll相對(duì)路徑文件名);//加載動(dòng)態(tài)鏈接庫(kù)

功能:釋放或加載動(dòng)態(tài)鏈接庫(kù)

參數(shù):Dll相對(duì)路徑文件名

例如:XDll_Load("autop\qml\xxxxx.dll");

XDll_Exec(Dll相對(duì)路徑文件名,

函數(shù)名,K線緩沖區(qū)序號(hào),輸出緩沖區(qū)序號(hào),

參數(shù)1有效位置,參數(shù)1,參數(shù)2,參數(shù)3,參數(shù)4);//調(diào)用庫(kù)函數(shù)

功能:調(diào)用庫(kù)函數(shù)

參數(shù):

1.Dll相對(duì)路徑文件名

2.函數(shù)名(dll完全出口函數(shù)名,例如在大智慧中是macd,一般完全函數(shù)名是_macd)

3.K線緩沖區(qū)序號(hào) 指的是與歷史數(shù)據(jù)庫(kù)接口相對(duì)應(yīng)k線數(shù)據(jù)緩沖區(qū)的序號(hào)0,1,2

4.輸出緩沖區(qū)序號(hào)(可省) 指定調(diào)用庫(kù)函數(shù)的輸出緩沖區(qū)的序號(hào),為0--9(可以是10個(gè)輸入輸出緩沖區(qū)中的任何一個(gè))

默認(rèn)為0

5.參數(shù)1有效位置(可省) 當(dāng)有參數(shù)1時(shí)設(shè)定參數(shù)1的性質(zhì),<0時(shí)指定參數(shù)1是常數(shù)輸入,這時(shí)參數(shù)1就是輸入數(shù)據(jù)

當(dāng)其>=0時(shí),參數(shù)1就是選定做輸入緩沖區(qū)的輸入輸出緩沖區(qū)序號(hào),在庫(kù)函數(shù)調(diào)用前一定要設(shè)置好預(yù)定數(shù)據(jù)

本參數(shù)值指定該系列輸入數(shù)據(jù)的有效起始位置

6.參數(shù)1  輸入?yún)?shù),當(dāng)其明確輸入時(shí),與上一參數(shù)配合,省略時(shí),庫(kù)函數(shù)調(diào)用輸入?yún)?shù)為空

6.參數(shù)2,參數(shù)3,參數(shù)4 輸入?yún)?shù),當(dāng)其明確輸入時(shí),將作為庫(kù)函數(shù)調(diào)用參數(shù),省略時(shí),庫(kù)函數(shù)對(duì)應(yīng)調(diào)用參數(shù)為空

例如:XDll_Exec("autop\qml\xxxxx.dll","_kxian",0,0);//調(diào)用庫(kù)函數(shù)

XDll_DBufDelete();//刪除歷史數(shù)據(jù)接口對(duì)應(yīng)k線數(shù)據(jù)緩沖區(qū)

XDll_DBufCreate(開(kāi)始位置,結(jié)束位置);//創(chuàng)建歷史數(shù)據(jù)接口對(duì)應(yīng)k線數(shù)據(jù)緩沖區(qū),并調(diào)入數(shù)據(jù)

XDll_GetKXData(數(shù)據(jù)索引,k線數(shù)據(jù)編號(hào)0.t.1.o.2.h.3.l.4.c.5.v);//獲取歷史數(shù)據(jù)接口對(duì)應(yīng)k線數(shù)據(jù)緩沖區(qū)數(shù)據(jù)

XDll_GetIOData(輸入輸出數(shù)據(jù)緩沖區(qū)號(hào)0..9,數(shù)據(jù)索引);//獲取歷史數(shù)據(jù)接口對(duì)應(yīng)數(shù)據(jù)緩沖區(qū)數(shù)據(jù)

XDll_SetIOData(輸入輸出數(shù)據(jù)緩沖區(qū)號(hào)0..9,數(shù)據(jù)索引,數(shù)據(jù));//設(shè)置歷史數(shù)據(jù)接口對(duì)應(yīng)數(shù)據(jù)緩沖區(qū)數(shù)據(jù)

XDll_CopyIOData(源緩沖區(qū)號(hào),目的緩沖區(qū)號(hào));//拷貝歷史數(shù)據(jù)接口對(duì)應(yīng)數(shù)據(jù)緩沖區(qū)數(shù)據(jù)

XDll_ClearIOData(緩沖區(qū)號(hào));//清除歷史數(shù)據(jù)接口對(duì)應(yīng)數(shù)據(jù)緩沖區(qū)數(shù)據(jù)

功能:歷史數(shù)據(jù)接口對(duì)應(yīng)k線數(shù)據(jù)緩沖區(qū)操作,具體功能看上面標(biāo)示

參數(shù):

1.開(kāi)始位置 對(duì)應(yīng)歷史數(shù)據(jù)接口中的數(shù)據(jù)開(kāi)始位置

2.結(jié)束位置 對(duì)應(yīng)歷史數(shù)據(jù)接口中的數(shù)據(jù)結(jié)束位置,-1時(shí)將直接取值為最后位置

當(dāng)開(kāi)始與結(jié)束位置的k線根數(shù)大于480時(shí),系統(tǒng)會(huì)自動(dòng)將開(kāi)始位置裁剪為結(jié)束位置-450

3 數(shù)據(jù)索引 等同歷史數(shù)據(jù)庫(kù)接口索引

4.其他參數(shù)同表面意思

注意:

XDll_DBufCreate函數(shù)可以連續(xù)調(diào)入,并填入數(shù)據(jù),其返回值為新的數(shù)據(jù)根數(shù)

在程序中可用

if(XDll_DBufCreate(0,-1))

{

XDll_Exec("autop\qml\xxxxx.dll","_kxian",0,0);//調(diào)用庫(kù)函數(shù) //

.....

}

簡(jiǎn)單測(cè)試代碼為:

OpenLsLib("m1005",64,4,0);

XDll_DBufCreate(0,-1);//創(chuàng)建歷史數(shù)據(jù)接口對(duì)應(yīng)k線數(shù)據(jù)緩沖區(qū),并調(diào)入數(shù)據(jù)

XDll_Load("autop\qml\xxxxx.dll");//加載動(dòng)態(tài)鏈接庫(kù)

XDll_Exec("autop\qml\xxxxx.dll","_kxian",0,0);//調(diào)用庫(kù)函數(shù)

......................

int m_daya=XDll_GetIOData(0,m_dsp_dir);

#ifndef __DzhFUNC_H_INCLUDE

#define __DzhFUNC_H_INCLUDE

#ifdef __cplusplus

extern "C"

{

#endif //__cplusplus

///

//分析周期

enum DATA_TYPE

{

TICK_DATA=2, //分筆成交

MIN1_DATA, //1分鐘線

MIN5_DATA, //5分鐘線

MIN15_DATA, //15分鐘線

MIN30_DATA, //30分鐘線

MIN60_DATA, //60分鐘線

DAY_DATA, //日線

WEEK_DATA, //周線

MONTH_DATA, //月線

MULTI_DATA //多日線

};

///

//基本數(shù)據(jù)

typedef struct tagSTKDATA

{

time_t m_time; //時(shí)間,UCT

float m_fOpen; //開(kāi)盤

float m_fHigh; //最高

float m_fLow; //最低

float m_fClose; //收盤

float m_fVolume; //成交量

float m_fAmount; //成交額

WORD m_wAdvance; //上漲家數(shù)(僅大盤有效)

WORD m_wDecline; //下跌家數(shù)(僅大盤有效)

} STKDATA;

//擴(kuò)展數(shù)據(jù),用于描述分筆成交數(shù)據(jù)的買賣盤

typedef union tagSTKDATAEx

{

struct

{

float m_fBuyPrice[3]; //買1--買3價(jià)

float m_fBuyVol[3]; //買1--買3量

float m_fSellPrice[3]; //賣1--賣3價(jià)

float m_fSellVol[3]; //賣1--賣3量

};

float m_fDataEx[12]; //保留

} STKDATAEx;

/

/

//函數(shù)數(shù)據(jù)結(jié)構(gòu)

typedef struct tagCALCINFO

{

const DWORD m_dwSize; //結(jié)構(gòu)大小

const DWORD m_dwVersion; //調(diào)用軟件版本(V2.10 : 0x210)

const DWORD m_dwSerial; //調(diào)用軟件序列號(hào)

const char* m_strStkLabel; //股票代碼

const BOOL m_bIndex; //大盤

const int m_nNumData; //數(shù)據(jù)數(shù)量(pData,pDataEx,pResultBuf數(shù)據(jù)數(shù)量)

const STKDATA* m_pData; //常規(guī)數(shù)據(jù),注意:當(dāng)m_nNumData==0時(shí)可能為 NULL

const STKDATAEx* m_pDataEx; //擴(kuò)展數(shù)據(jù),分筆成交買賣盤,注意:可能為 NULL

const int m_nParam1Start; //參數(shù)1有效位置

const float* m_pfParam1; //調(diào)用參數(shù)1

const float* m_pfParam2; //調(diào)用參數(shù)2

const float* m_pfParam3; //調(diào)用參數(shù)3

const float* m_pfParam4; //調(diào)用參數(shù)3

float* m_pResultBuf; //結(jié)果緩沖區(qū)

const DATA_TYPE m_dataType; //數(shù)據(jù)類型

const float* m_pfFinData; //財(cái)務(wù)數(shù)據(jù)

} CALCINFO;

///

//示例函數(shù),使用時(shí)用實(shí)際名稱替換

__declspec(dllexport) int WINAPI MYMACLOSE(CALCINFO* pData);

__declspec(dllexport) int WINAPI MYMAVAR(CALCINFO* pData);

__declspec(dllexport) int WINAPI MYMACLOSE_CALC_PREV(CALCINFO* pData);

__declspec(dllexport) int WINAPI MYMAVAR_CALC_PREV(CALCINFO* pData);

#ifdef __cplusplus

}

#endif //__cplusplus

#endif //__DZHFUNC_H_INCLUDE

// FxjFunc.cpp : Defines the entry point for the DLL application.

//

#include "stdafx.h"

#include "FxjFunc.h"

BOOL APIENTRY DllMain( HANDLE hModule,

DWORD ul_reason_for_call,

LPVOID lpReserved

)

{

switch (ul_reason_for_call)

{

case DLL_PROCESS_ATTACH:

case DLL_THREAD_ATTACH:

case DLL_THREAD_DETACH:

case DLL_PROCESS_DETACH:

break;

}

return TRUE;

}

//計(jì)算收盤價(jià)的均價(jià),一個(gè)常數(shù)參數(shù),表示計(jì)算周期

//調(diào)用方法:

// MYMACLOSE(5)

__declspec(dllexport) int WINAPI MYMACLOSE(CALCINFO* pData)

{

float f,fTotal;

int nPeriod,i,j;

if(pData->m_pfParam1 && //參數(shù)1有效

pData->m_nParam1Start<0 && //參數(shù)1為常數(shù)

pData->m_pfParam2==NULL) //僅有一個(gè)參數(shù)

{

f = *pData->m_pfParam1;

nPeriod = (int)f; //參數(shù)1

if(nPeriod>0)

{

for(i=nPeriod-1;im_nNumData;i++) //計(jì)算nPeriod周期的均線,數(shù)據(jù)從nPeriod-1開(kāi)始有效

{

fTotal = 0.0f;

for(j=0;j

fTotal += pData->m_pData[i-j].m_fClose;

pData->m_pResultBuf[i] = fTotal/nPeriod; //平均

}

return nPeriod-1;

}

}

return -1;

}

__declspec(dllexport) int WINAPI MYMACLOSE_CALC_PREV(CALCINFO* pData)

{

if(pData->m_pfParam1 && pData->m_nParam1Start<0)

{

float f = *pData->m_pfParam1;

return ((int)f) - 1;

}

return 0;

}

//計(jì)算均價(jià),2個(gè)參數(shù),參數(shù)1為待求均線的數(shù)據(jù),參數(shù)2表示計(jì)算周期

//調(diào)用方法:

// MYMAVAR(CLOSE-OPEN,5)

__declspec(dllexport) int WINAPI MYMAVAR(CALCINFO* pData)

{

float f,fTotal;

const float* pValue;

int nPeriod,nFirst,i,j;

if(pData->m_pfParam1 && pData->m_pfParam2 && //參數(shù)1,2有效

pData->m_nParam1Start>=0 && //參數(shù)1為序列數(shù)

pData->m_pfParam3==NULL) //有2個(gè)參數(shù)

{

pValue = pData->m_pfParam1; //參數(shù)1

nFirst = pData->m_nParam1Start; //有效值

f = *pData->m_pfParam2;

nPeriod = (int)f; //參數(shù)2

if(nFirst>=0 && nPeriod>0)

{

for(i=nFirst+nPeriod-1;im_nNumData;i++)

{

fTotal = 0.0f;

for(j=0;j

fTotal += pData->m_pData[i-j].m_fClose;

pData->m_pResultBuf[i] = fTotal/nPeriod; //平均

}

return nFirst+nPeriod-1;

}

}

return -1;

}

__declspec(dllexport) int WINAPI MYMAVAR_CALC_PREV(CALCINFO* pData)

{

if(pData->m_pfParam2)

{

float f = *pData->m_pfParam2;

return ((int)f) - 1;

}

return 0;

}

總結(jié)

以上是生活随笔為你收集整理的大智慧c语言dll,调用大智慧dll,简单支持大智慧公式dll接口的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。