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