要取得當日或幾日前的最高價與最低價時,我們會使用TradeStation中所提供的HighD與LowD這二個內建的函式,但這二個函式若應用於低於6分鐘的K棒週期時,則會出現問題,因為內建的函式在日內只保留50根K棒的最高價或最低價當成回傳值,所以當K棒低於6分鐘的週期時,就會開始有最高低或最低價沒被計算到的問題,再加上內建函式是唯讀,所以我們也無法去更動內訂的程式碼,所以只好自己再寫一個HighD與LowD的函式,以解決上述之問題。修正後的程式碼如下:
最高價的原始碼:
Inputs: DaysAgo(Numeric);
Variables: Day1Done(0);
Array: HighArray[300](-1);
If DataCompression < 2 Then
Begin
If Date > Date[1] Then
Begin
Day1Done = Day1Done + 1;
For Value1 = 300 DownTo 1
Begin
HighArray[Value1] = HighArray[Value1-1];
End;
HighArray[0] = High;
End;
If Day1Done>0 And High > HighArray[0] Then
HighArray[0] = High;
If DaysAgo <= 300 Then
_HighD = HighArray[DaysAgo];
End;
Value1 = _HighD[1];
最低價的原始碼:
Inputs: DaysAgo(Numeric);
Array: LowArray[300](-1);
If DataCompression < 2 Then
Begin
If Date > Date[1] Then
Begin
For Value1 = 300 DownTo 1
Begin
LowArray[Value1] = LowArray[Value1 - 1];
End;
LowArray[0] = Low;
End;
If Low < LowArray[0] Then
LowArray[0] = Low;
If DaysAgo <= 300 Then
_LowD = LowArray[DaysAgo];
End;
Value1 = _LowD[1];
沒有留言:
張貼留言