Board logo

标题: PowerLanguage 矩陣的應用 [打印本页]

作者: 龙听    时间: 2020-9-2 08:49     标题: 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

  1. inputs:
  2. DaysBefore(Numericsimple);
  3. arrays: aHighD[200](0);
  4. if time = sess2firstbartime then
  5. begin
  6.     $Arrayshift(aHighd);
  7.     aHighd[1] = aHighd[0];
  8.     aHighd[0] = High;
  9. end else
  10. begin
  11.     if High > aHighd[0] then aHighD[0] = High;
  12. end;
  13. if Daysbefore <= 200 and DaysBefore >= 0 then
  14. $V_HighD = aHighd[DaysBefore] else
  15. $V_HighD = -1;
复制代码


舉一個 HighD為例,剩下的 LowD/CloseD/OpenD 差不多依樣畫葫蘆就可以完成了。
咦!?但這裡面又用到了一個$Arrayshift函數,它的功能是把最新的值存入矩陣的[0]位置前,先把目前矩陣內存的值都往前移動一個位置,所以需要for迴圈來達成,動作很簡單的!

  1. inputs:
  2. pArray[X](NumericArrayRef);
  3. vars: vI(0);
  4. for vI = X downto 1
  5. begin
  6.     pArray[vI] = pArray[vI-1];
  7. end;
复制代码





欢迎光临 龙听期货论坛 (http://www.qhlt.cn/) Powered by Discuz! 7.2