- UID
- 2
- 积分
- 2892817
- 威望
- 1396440 布
- 龙e币
- 1496377 刀
- 在线时间
- 13326 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-12-26
|
PowerLanguage 矩陣的應用
修改版 HighD/LowD
2017年5月起台指期多了夜盤交易的時段,可以稱為盤後盤、或是正確來說應該算是"盤前盤"吧!
當時段選擇為"標準"或是"Session New"時,其實一日K的起算是從15:00開始至隔天的13:45結束。
過往沒有+1 Session 時段時,在以分鐘K為單位的圖表視窗當中,可以使用函數 HighD/LowD/CloseD/OpenD 來呼叫較長時間維度的 PriceValue,但以上函數的時間切分點是在24:00,能不能順應現在的日K起算於15:00呢?
應用先前建立每個時段開始時reset的基礎,在搭配上使用矩陣、以及if…then的條件就可以寫一個改版的函數了,我取名為$V_HighD
- inputs:
- DaysBefore(Numericsimple);
- arrays: aHighD[200](0);
- if time = sess2firstbartime then
- begin
- $Arrayshift(aHighd);
- aHighd[1] = aHighd[0];
- aHighd[0] = High;
- end else
- begin
- if High > aHighd[0] then aHighD[0] = High;
- end;
- if Daysbefore <= 200 and DaysBefore >= 0 then
- $V_HighD = aHighd[DaysBefore] else
- $V_HighD = -1;
复制代码
舉一個 HighD為例,剩下的 LowD/CloseD/OpenD 差不多依樣畫葫蘆就可以完成了。
咦!?但這裡面又用到了一個$Arrayshift函數,它的功能是把最新的值存入矩陣的[0]位置前,先把目前矩陣內存的值都往前移動一個位置,所以需要for迴圈來達成,動作很簡單的!
- inputs:
- pArray[X](NumericArrayRef);
- vars: vI(0);
- for vI = X downto 1
- begin
- pArray[vI] = pArray[vI-1];
- end;
复制代码 |
论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
|