想問(wèn)一下關(guān)于全局變量的問(wèn)題,誰(shuí)能給解答一下
作者:開(kāi)拓者 TB 來(lái)源:cxh99.com 發(fā)布時(shí)間:2014年12月13日
- 咨詢(xún)內(nèi)容:
我想問(wèn)一下關(guān)于全局變量的問(wèn)題。關(guān)于這個(gè)程序,1,全局變量必須初始化嗎?2這個(gè)程序是從全局變量初始化的語(yǔ)句先執(zhí)行嗎?但是為什么執(zhí)行出來(lái)的結(jié)果是else if那句放在最前面?3在語(yǔ)句 if (Date+Time > bartime)中bartime不是賦值是0嗎,怎么跟Date+Time比較大小。
Vars
NumericSeries TickCnt;
Numeric bartime;
Begin
bartime = GetGlobalVar(0);
if (bartime == InvalidNumeric)//bar時(shí)間初始化
{
bartime = 0;
SetGlobalVar(0,bartime);
TickCnt = 1;
SetGlobalVar(1,TickCnt);
FileAppend("d:\\Sample_13.log","Bartime ="+DateTimeToString(date+time) +"\t計(jì)數(shù)器初始化, Global(0) = "+text(bartime)+ "\tGlobal(1) = "+Text(TickCnt));
}
if (Date+Time > bartime)
{
bartime = Date + Time;
SetGlobalVar(0,bartime);
TickCnt = 1;
SetGlobalVar(1,TickCnt);
FileAppend("d:\\Sample_13.log","Bartime = "+DateTimeToString(date+time)+"\t新K線產(chǎn)生,Global(0) = "+DateTimeToString(bartime)+ "\tGlobal(1) = "+Text(TickCnt));
}
Else If (Date+Time==bartime)
{
TickCnt = GetGlobalVar(1) + 1;
SetGlobalVar(1,TickCnt);
FileAppend("d:\\Sample_13.log","Bartime = "+DateTimeToString(date+time)+"\t原K線增加計(jì)數(shù),Global(0) = "+DateTimeToString(bartime)+"\t Global(1) = "+Text(TickCnt));
}
Commentary("TickCnt="+text(TickCnt));
End.
- TB技術(shù)人員:
1.并沒(méi)有規(guī)定全局變量必須要初始化后方可使用。未賦值前,全局變量的初值是無(wú)效值。如你所貼的例子里,全局變量就沒(méi)有初始化的呀。
2.不是很理解你的問(wèn)題。代碼是按從上向下的順序開(kāi)始 執(zhí)行的,滿(mǎn)足條件的,就執(zhí)行條件內(nèi)語(yǔ)句,不滿(mǎn)足的條件,則不會(huì)執(zhí)行條件內(nèi)語(yǔ)句啊。在實(shí)時(shí)行情中的最后K線上,是會(huì)滿(mǎn)足else if里的內(nèi)容并執(zhí)行,但不會(huì)是else if放在最前面。
3.請(qǐng)仔細(xì)看代碼,只有在bartime==invalidnumeric時(shí),才會(huì)給bartime賦值為0,其它條件下均不為0.
- TB客服:
您好,比如說(shuō)if (Date+Time > bartime)語(yǔ)句,bartime之前并沒(méi)有賦值,這個(gè)時(shí)候怎么比較呀?
- 網(wǎng)友回復(fù):
Bartime = 2014-08-26 15:14:00 原K線增加計(jì)數(shù),Global(0) = 2014-08-26 15:14:00 Global(1) = 2
Bartime =2014-08-19 11:15:00 計(jì)數(shù)器初始化, Global(0) = 0 Global(1) = 1
Bartime = 2014-08-19 11:15:00 新K線產(chǎn)生,Global(0) = 2014-08-19 11:15:00 Global(1) = 1
Bartime = 2014-08-19 11:20:00 新K線產(chǎn)生,Global(0) = 2014-08-19 11:20:00 Global(1) = 1
Bartime = 2014-08-19 11:25:00 新K線產(chǎn)生,Global(0) = 2014-08-19 11:25:00 Global(1) = 1
Bartime = 2014-08-19 13:00:00 新K線產(chǎn)生,Global(0) = 2014-08-19 13:00:00 Global(1) = 1
Bartime = 2014-08-19 13:05:00 新K線產(chǎn)生,Global(0) = 2014-08-19 13:05:00 Global(1) = 1
Bartime = 2014-08-19 13:10:00 新K線產(chǎn)生,Global(0) = 2014-08-19 13:10:00 Global(1) = 1
您看這是 執(zhí)行出來(lái)的程序,為什么把這句放在第一句?Bartime = 2014-08-26 15:14:00 原K線增加計(jì)數(shù),Global(0) = 2014-08-26 15:14:00 Global(1) = 2
- 網(wǎng)友回復(fù):
yekunpeng 發(fā)表于 2014-8-27 10:52
Bartime = 2014-08-26 15:14:00 原K線增加計(jì)數(shù),Global(0) = 2014-08-26 15:14:00 Global(1) = 2
Bartime = ...
我建議你按如下方法來(lái)測(cè)試一下好不好?
1.將原有的d盤(pán)下的sample_13的記錄文件全部刪掉
2.重新打開(kāi)一個(gè)圖表,將樣本數(shù)設(shè)置為10或20;
3.在圖表上插入該公式應(yīng)用
4.打開(kāi)指定路徑下的日志文件,看看內(nèi)容是啥。
我這里測(cè)試得到的結(jié)果如下截圖
yyy.png
(42.97 KB, 下載次數(shù): 0)
2014-8-27 11:24:54 上傳
下載次數(shù): 0
|