close

程式碼:

inputs: PeriodsAgo( numericsimple ) ;
variables: var0( 0 ), var1( 0 ), var2( 0 ), var3( 0 ) ;

Value1 = OHLCPeriodsAgo( 1, PeriodsAgo, var0, var1, var2, var3 ) ;

HighD = var1 ;

 

這段程式碼是用以計算HighD。


那,問題來了。

1. HighD是什麼?

2. 這些編碼的涵義又是什麼?

3. Value1有什麼作用?

4. 這個程式碼並沒有引用Value1,

為什麼不要直接寫HighD = var1 就好?

5. 為什麼 Value1 沒有明確宣告,卻可以直接被賦值呢?

 

解說:

這段程式碼的主要目的是從歷史數據中提取特定週期前的最高價,並將其存儲在變數 HighD 中。

 

而各變數與函數的意義:

PeriodsAgo: 這個參數用來指定要回溯的週期數。例如,如果 PeriodsAgo 為 5,那麼程式就會取5個週期前的數據。

var0, var1, var2, var3: 這些變數是 OHLCPeriodsAgo 函數用來儲存回溯數據的臨時變數。

OHLCPeriodsAgo: 這個函數用於獲取指定週期前的開盤價 (Open)、最高價 (High)、最低價 (Low) 和收盤價 (Close)。

Value1: 這個變數用來暫時存儲 OHLCPeriodsAgo 函數的返回值。雖然在後續的程式碼中沒有直接使用 Value1,但它在函數的運算過程中扮演了重要的角色。

HighD: 這個變數就是我們最終想要得到的結果,也就是指定週期前的最高價。


為什麼不直接寫 HighD = var1?

函數的設計: OHLCPeriodsAgo 函數的設計就是將獲取的OHLC數據分別存儲在不同的變數中,然後返回一個值(通常是收盤價)。

程式可讀性: 將獲取的最高價存儲在 var1 中,然後再將 var1 的值賦給 HighD,可以使程式碼更清晰易懂,提高可維護性。

通用性: 這樣設計的程式碼具有更好的通用性。如果需要獲取其他數據(如最低價),只需要修改一下變數的引用即可。

 

程式碼的運作流程:

設定回溯週期: 指定 PeriodsAgo 的值,決定要回溯多少個週期。

調用 OHLCPeriodsAgo 函數: 該函數會根據 PeriodsAgo 的值,從歷史數據中獲取指定週期的OHLC數據,並將這些數據分別存儲在 var0, var1, var2, var3 中。

提取最高價: 將 var1 中的最高價賦值給 HighD。

 

PowerLanguage中的隱式宣告

在PowerLanguage中,

很多時候變數不需要事先宣告,

系統會根據賦值的操作自動推斷變數的類型。

 

這是一種動態類型語言的特性,

可以簡化程式碼的書寫。

 

在程式碼中,

Value1 = OHLCPeriodsAgo( 1, PeriodsAgo, var0, var1, var2, var3 ) ;

這行代碼的執行過程大致如下:

呼叫OHLCPeriodsAgo函數: 這個函數會計算出指定週期前的收盤價,並將這個值作為返回值。

賦值給Value1: 函數的返回值會直接賦值給Value1。

 

由於OHLCPeriodsAgo函數的返回值是一個數值,

所以系統會自動將Value1的類型推斷為數值型。

 

因此,Value1不需要事先宣告的原因是:

動態類型: PowerLanguage允許在賦值時自動推斷變數的類型。

函數返回值: OHLCPeriodsAgo函數的返回值決定了Value1的類型。

 

雖然PowerLanguage允許動態類型宣告,

但建議在書寫程式碼時,

還是儘量明確地宣告變數的類型,

這樣可以提高程式碼的可讀性和可維護性。

 

示例:

inputs: PeriodsAgo( numericsimple ) ;
variables: var0( 0 ), var1( 0 ), var2( 0 ), var3( 0 ), Value1( numeric );

Value1 = OHLCPeriodsAgo( 1, PeriodsAgo, var0, var1, var2, var3 ) ;
HighD = var1 ;


這樣寫雖然多了一個變數宣告,

但是明確了Value1的類型,

讓程式碼更清晰。

arrow
arrow
    文章標籤
    程式交易
    全站熱搜
    創作者介紹
    創作者 藍醫生 的頭像
    藍醫生

    藍醫的部落格

    藍醫生 發表在 痞客邦 留言(0) 人氣()