?? foxfunc.h
字號:
#ifndef __FOXFUNC_H_INCLUDE
#define __FOXFUNC_H_INCLUDE
/*
///////////////////////////////////////////////////////////////////////////
飛狐交易師“C語言接口”擴(kuò)展程序調(diào)用接口規(guī)范V3.0
1.本規(guī)范適用于飛狐交易師V3.x公式系統(tǒng).
2.擴(kuò)展函數(shù)可用于實(shí)現(xiàn)系統(tǒng)公式函數(shù)不能實(shí)現(xiàn)的特殊算法.
3.擴(kuò)展函數(shù)用windows 32位動態(tài)鏈接庫實(shí)現(xiàn),建議使用Microsoft Visual C++編程.
4.調(diào)用時在公式編輯器中書寫"動態(tài)庫名稱@函數(shù)名稱"(參數(shù)表)即可,例如下面函數(shù)可以寫為"FOXFUNC@MYMACLOSE"(5)
5.動態(tài)鏈接庫名稱和函數(shù)名稱可以自己定義.
6.使用時必須將動態(tài)庫文件放置在飛狐交易師安裝目錄下的FmlDLL子目錄下使用.
*/
#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, //月線
YEAR_DATA, //年線
MULTIDAY_DATA, //多日線
MULTIMIN_DATA, //多分鐘線
MULTISEC_DATA //多秒線
};
////////////////////////////////////////////////////
//基本數(shù)據(jù)
////////////////////////////////////////////////////
typedef struct tagSTKDATA
{
time_t m_time; //時間,UCT
float m_fOpen; //開盤
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價
float m_fBuyVol[3]; //買1--買3量
float m_fSellPrice[3]; //賣1--賣3價
float m_fSellVol[3]; //賣1--賣3量
DWORD m_dwToken; //成交方向
};
float m_fDataEx[13];
} STKDATAEx;
////////////////////////////////////////////////////
//除權(quán)數(shù)據(jù)
////////////////////////////////////////////////////
typedef struct tagSPLITDATA
{
time_t m_time; //時間,UCT
float m_fHg; //紅股
float m_fPg; //配股
float m_fPgj; //配股價
float m_fHl; //紅利
} SPLITDATA;
////////////////////////////////////////////////////
/*財(cái)務(wù)數(shù)據(jù)順序(m_pfFinData內(nèi)容)
序號 內(nèi)容
0 總股本(萬股),
1 國家股,
2 發(fā)起人法人股,
3 法人股,
4 B股,
5 H股,
6 流通A股,
7 職工股,
8 A2轉(zhuǎn)配股,
9 總資產(chǎn)(千元),
10 流動資產(chǎn),
11 固定資產(chǎn),
12 無形資產(chǎn),
13 長期投資,
14 流動負(fù)債,
15 長期負(fù)債,
16 資本公積金,
17 每股公積金,
18 股東權(quán)益,
19 主營收入,
20 主營利潤,
21 其他利潤,
22 營業(yè)利潤,
23 投資收益,
24 補(bǔ)貼收入,
25 營業(yè)外收支,
26 上年損益調(diào)整,
27 利潤總額,
28 稅后利潤,
29 凈利潤,
30 未分配利潤,
31 每股未分配,
32 每股收益,
33 每股凈資產(chǎn),
34 調(diào)整每股凈資,
35 股東權(quán)益比,
36 凈資收益率
37 經(jīng)營現(xiàn)金流入
38 經(jīng)營現(xiàn)金流出
39 經(jīng)營現(xiàn)金流量
40 投資現(xiàn)金流入
41 投資現(xiàn)金流出
42 投資現(xiàn)金流量
43 籌資現(xiàn)金流入
44 籌資現(xiàn)金流出
45 籌資現(xiàn)金流量
46 現(xiàn)金及等價物
47 應(yīng)收帳款周轉(zhuǎn)率
48 存貨周轉(zhuǎn)率
49 股東總數(shù)
50 發(fā)行價
51 速動比率
52 主營業(yè)務(wù)增長率
53 稅后利潤增長率
54 凈資產(chǎn)增長率
55 總資產(chǎn)增長率
*/
////////////////////////////////////////////////////
//調(diào)用參數(shù)項(xiàng)結(jié)構(gòu)
////////////////////////////////////////////////////
typedef struct tagCALCPARAM
{
union
{
const float* m_pfParam; //序列參數(shù),指向一個浮點(diǎn)型數(shù)組
const float m_fParam; //數(shù)值參數(shù)
};
const int m_nParamStart; //序列參數(shù)有效起始位置
}CALCPARAM;
////////////////////////////////////////////////////
//調(diào)用接口信息數(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)用軟件序列號
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時可能為 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 DWORD m_dataType; //數(shù)據(jù)類型
const float* m_pfFinData; //財(cái)務(wù)數(shù)據(jù)
//以上與分析家兼容,所以沿用其結(jié)構(gòu)和名稱
//以下為飛狐交易師擴(kuò)展
const DWORD m_dwReserved; // 保留
const int m_nNumParam; // 調(diào)用參數(shù)數(shù)量
const CALCPARAM* m_pCalcParam; // 調(diào)用參數(shù)數(shù)組
const DWORD m_dwReservedEx[4]; // 保留
char* m_strStkName; //股票名稱
SPLITDATA* m_pSplitData; //除權(quán)數(shù)據(jù)
int m_nNumSplitData; //除權(quán)次數(shù)
} CALCINFO;
/*
注1: (與分析家兼容)
1.函數(shù)調(diào)用參數(shù)由m_pfParam1--m_pfParam4帶入,若為NULL則表示該參數(shù)無效.
2.當(dāng)一個參數(shù)無效時,則其后的所有參數(shù)均無效.
如:m_pfParam2為NULL,則m_pfParam3,m_pfParam4也為NULL.
3.參數(shù)1可以是常數(shù)參數(shù)或序列數(shù)參數(shù),其余參數(shù)只能為常數(shù)參數(shù).
4.若m_nParam1Start<0, 則參數(shù)1為常數(shù)參數(shù),參數(shù)等于*m_pfParam1;
5.若m_nParam1Start>=0,則參數(shù)1為序列數(shù)參數(shù),m_pfParam1指向一個浮點(diǎn)型數(shù)組,
數(shù)組大小為m_nNumData,數(shù)據(jù)有效范圍為 m_nParam1Start 至 m_nNumData-1.
在時間上m_pData[x] 與 m_pfParam1[x]是一致的
注2: (飛狐交易師擴(kuò)展)
1.該擴(kuò)展結(jié)構(gòu)使調(diào)用參數(shù)在技術(shù)上可以是無限數(shù)目的,且每個參數(shù)都可為數(shù)值或序列,由公式中實(shí)際的調(diào)用參數(shù)決定。
2.CALCPARAM結(jié)構(gòu)用于帶入?yún)?shù)信息和實(shí)際數(shù)據(jù),m_pCalcParam數(shù)組大小為m_nNumParam,數(shù)據(jù)有效范圍為 0 至 m_nNumParam-1.
3.按參數(shù)的順序,m_pCalcParam[0]為第一個參數(shù)的數(shù)據(jù),m_pCalcParam[1]為第二個參數(shù)的數(shù)據(jù)...,為了保持兼容,原m_nParam1Start、m_pfParam1等5個屬性依然有賦值。
4.若 i位置的參數(shù)為數(shù)值,取用m_pCalcParam[i].m_fParam.
5.若 i位置的參數(shù)為序列,取用m_pCalcParam[i].m_pfParam,數(shù)組大小為m_nNumData,數(shù)據(jù)有效范圍為m_pCalcParam[i].m_nParamStart 至 m_nNumData-1. 若m_pCalcParam[i].m_nParamStart<0, 則此數(shù)組中無有效數(shù)據(jù)。
6.由于可以調(diào)用多個序列,許多序列的計(jì)算可以先在公式中進(jìn)行,然后作為調(diào)用的參數(shù)即可。
7.經(jīng)此擴(kuò)展,對分析家的DLL依然可以調(diào)用、兼容。
*/
////////////////////////////////////////////////////
/* 函數(shù)輸出
__declspec(dllexport) int xxxxxxxx(CALCINFO* pData);
1.函數(shù)名稱需全部大寫.
2.函數(shù)必須以上述形式聲明,請用實(shí)際函數(shù)名稱替代xxxxxxxx;
對于C++程序還需包括在 extern "C" { } 括號中.
3.函數(shù)計(jì)算結(jié)果用pData->m_pResultBuf帶回.
4.函數(shù)返回-1表示錯誤或全部數(shù)據(jù)無效,否則返回第一個有效值位置,即:
m_pResultBuf[返回值] -- m_pResultBuf[m_nNumData-1]間為有效值.
5.函數(shù)名稱長度不能超過15字節(jié),動態(tài)連接庫文件名不能超過9字節(jié)(不包括擴(kuò)展名),動態(tài)庫名稱不能叫SYSTEM,EXPLORER
*/
//示例函數(shù),使用時用實(shí)際名稱替換
__declspec(dllexport) int WINAPI MYMACLOSE(CALCINFO* pData);
__declspec(dllexport) int WINAPI MYMAVAR(CALCINFO* pData);
__declspec(dllexport) int WINAPI MYBBI(CALCINFO* pData);
#ifdef __cplusplus
}
#endif //__cplusplus
#endif //__FOXFUNC_H_INCLUDE
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -