小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

飛狐編程:實時警告寫入TXT文件

 禁忌石 2012-03-17
飛狐編程:實時預警寫入TXT文件
2010-04-11 12:49
飛狐交易師特色之一,就是實時預警功能。如果我們想把預警的結(jié)果輸出到外部文件,可以通過DLL編程來實現(xiàn)。這樣的編程,對于有過編程經(jīng)驗的人來說--應該不是很難:知道如何利用C++讀寫文件,就可完成該功能。

DLL之C++原碼:(7月26日更新)
//************************************************************************************************
//   把符合條件的股票資料,添加到指定的TXT文件;
//   輸入2個常數(shù)參數(shù):
//   參數(shù)1: 文件名序號,1:輸出到"巔峰飛越.TXT"......
//   參數(shù)2: 預警k線的序號
//   調(diào)用方法:
//   "FOXFUNC@TWRITE"(1,1)

__declspec(dllexport) int WINAPI TWRITE(CALCINFO* pData)
{
if(pData->m_pfParam1 && pData->m_pfParam2 &&                  //參數(shù)1,2有效
pData->m_nParam1Start<0 &&                                                  //參數(shù)1為常數(shù)
pData->m_pfParam3==NULL)                                                     //有2個參數(shù)
{
float fParam1 = *pData->m_pfParam1;                                      //參數(shù)1: 文件名編號
float fParam2 = *pData->m_pfParam2;                                      //參數(shù)2: 預警k線的序號
int nName = (int)fParam1;
int nBars = (int)fParam2;

char a[128]    ;
if(nName==1) strcpy(a,"巔峰飛越");
else if (nName==2) strcpy(a,"曙光初露");
else strcpy(a,"明日之星");
//... ...
time_t k_now;
k_now  = pData->m_pData[nBars-1].m_time;        //K線時間
struct tm *Klocal;
Klocal=localtime(&k_now);
char CDate[40];
strftime(CDate,100,"%m%d",Klocal);
strcat(a,CDate);
strcat(a,".txt");

const char *stkp = pData->m_strStkLabel;
const char *stkNm = pData->m_strStkName;
//股票代碼也可以轉(zhuǎn)換到CHAR數(shù)組:
char stkNo[6],stkName[12];
strcpy(stkNo, stkp);
strcpy(stkName, stkNm);

//打開文件
fstream File((char *)a,ios::in | ios::out |ios::app);
//添加紀錄
File << stkNo <<"\t"<<stkName<<"\t";

char Ctime[40],Cprice[20];
strftime(Ctime,100,"%x %X",Klocal);
File << Ctime <<"\t";

float fclose = 0.0;
fclose = pData->m_pData[nBars-1].m_fClose;
sprintf(Cprice, "%-5.2f", fclose);
File << Cprice <<"\n";
File.close();

}
return -1;
}

DLL程序編譯后,在飛狐公式中如何調(diào)用呢?

當然,我們希望在滿足某個條件時,才激活數(shù)據(jù)輸出的動作。于是,我們想到飛狐的條件語句:
IF...THEN...
但是,使用該語句時要特別小心,因為初學者常常遇到代碼不能通過的情況,其后往往又百思不得其解......關(guān)鍵的問題,就是IF后面跟著的條件,不能是序列變量......但可以是序列變量中某個元素的值

正確的寫法:
TOTAL:= ......選股的某些條件......;   //注:TOTAL此時就是序列變量
IF TOTAL[datacount] THEN wr:="FOXFUNC@TWRITE"(1,datacount]);

而下面的代碼,是不能通過的:
TOTAL:= ......選股的某些條件......;
IF TOTAL THEN wr:="FOXFUNC@TWRITE"(1,datacount]);

如果條件選股:
TOTAL:= ......選股的某些條件......;
for i=1 to datacount do 
IF (TOTAL[i]) THEN wr:="FOXFUNC@TWRITE"(1,i);

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多