maxhamax 發表於 16-3-2 17:20

關於時間序列資料固定區間之語法

大家好:

小弟近日在嘗試進行一個語法

目標是 把時間序列資料 變成每個固定區間 資料不重覆引入指標

一開始是想抓 每100個時間序列內之最高價

假設 資料是1到10000 共1萬筆

一般highest(h,100)是把h到h中最高者抓出

就如同是把1-100抓出 然後隨時間推出又抓2-101

但小弟希望的是

1-100
101-200
201-300

這個模式目前所想到是

vi=0 to 99
xi=0 to 99

f=maxlist+(100*)]]

如此之下

fv0=maxlist,,,...]
fv1=maxlist,h,...h]

不知道是否有其他寫法呢?

請大家不吝指教

Max

maxhamax 發表於 16-3-4 09:08

TrendRover哥小弟確實是想要您說的那樣 但也很感謝大家指導
還在思考怎麼寫比較接近中 感謝

easytrader788 發表於 16-3-3 08:49

Arrays: RangeHigh(0) ,RangeLow(0);
vars:Counter(1),StepGap(100),LookBack(100) ;

For Counter = 0 to 9 Begin
   Value1 = Counter*StepGap;
   RangeHigh = Highest(High,LookBack) ;
end ;

這樣子迴圈完成後 ,陣列內 RangeHigh ~ RangeHigh 內就會存每隔 100根K棒位置的100根K棒的最高價



maxhamax 發表於 16-3-3 13:43

謝謝 easytrader788哥晚點來研究研究

TrendRover 發表於 16-3-4 03:53

本帖最後由 TrendRover 於 16-3-4 04:01 編輯

easytrader788 發表於 16-3-3 08:49
Arrays: RangeHigh(0) ,RangeLow(0);
vars:Counter(1),StepGap(100),LookBack(100) ;


版主要得應該是 BarNumber 0-99 一直推進.
(但版主舉 High High 根本和他想要的不一樣---因為 High 永遠是the last bar非 BarNumber first )

你寫得這個會隨最後一根 bar位置變動一直調整 10個array 值 ,
不知我有想錯嗎?




TrendRover 發表於 16-3-4 04:46

本帖最後由 TrendRover 於 16-3-4 04:48 編輯

版大想要的就把當今的時間 X100當做data2 (例如1K圖 加 data2 是 100K )

然後去取
    High of data2   data2 .............
這樣就排的整齊對準 每100跟,然後不滿100跟的還會一值update



maxhamax 發表於 16-3-4 10:15

小弟主要是在想處理   HighD(1)這語法他是去找昨日最高

但小弟想找的是 前100個區間最高 比方h-h找出最高是h=value1

然後隨著時間序列不停推進 當滿100個資料點後 再從前100個資料內找出最高



TrendRover 發表於 16-3-4 21:16

maxhamax 發表於 16-3-4 09:08
TrendRover哥小弟確實是想要您說的那樣 但也很感謝大家指導
還在思考怎麼寫比較接近中 感謝 ...

原本可以用BarNumber 來寫絕對的bar 0~99100~199 ,但我門設定圖時是5000 bar back fill historical or 5 day backfilled 這都表示昨天的5000 bar 和今天的5000bar 的絕對bar 0 不一樣.
所以為一精準的試時間:用時間做定位 :chart 1 sec ===> 把每次 sec 0 bar 對準 20160304 00:00 這樣然後 bar 0 ~99 改成 bar 0~59
每60跟 .
這樣就有絕對的座標 而非每天圖都在變得相對座標---回測才不回變來變去~

easytrader788 發表於 16-3-5 17:08

easytrader788 發表於 16-3-3 08:49
Arrays: RangeHigh(0) ,RangeLow(0);
vars:Counter(1),StepGap(100),LookBack(100) ;



迴圈解析

Counter = 0
Value1 = Counter*StepGap = 0 * 100 = 0
RangeHigh = Highest(High,LookBack) --> RangeHigh = Highest(High,100){最近 100根}


Counter = 1
Value1 = Counter*StepGap = 1 * 100 = 100
RangeHigh = Highest(High,LookBack) --> RangeHigh = Highest(High,100) {往前100根K棒位置的最近 100根內最高價}



Counter = 2
Value1 = Counter*StepGap = 2 * 100 = 200
RangeHigh = Highest(High,LookBack) --> RangeHigh = Highest(High,100) {往前200根K棒位置的最近 100根內最高價}


同理 .....


Counter = 9
Value1 = Counter*StepGap = 9 * 100 = 900
RangeHigh = Highest(High,LookBack) --> RangeHigh = Highest(High,100) {往前900根K棒位置的最近 100根內最高價}


這樣就取得從目前位置開始 ,每間隔 100根位置 ,區間100根K棒的最高價 ,然後BarNumber每次變動 ,就會重新再計算一次


如果在特定時間K棒記錄後 ,就固定下來 ,不要再隨著 BarNumber移動而變動 Ex 30分K, 2016/3/1 , 11:45 當根作基準
if date = 1160301 and time = 1145 then begin
For Counter = 0 to 9 Begin
   Value1 = Counter*StepGap;
   RangeHigh = Highest(High,LookBack) ;
end ;
end ;


那麼 2016/3/1 11:45 以後的K棒 ,都可以從陣列中取得相同的區間最高價




maxhamax 發表於 16-3-5 23:12

感恩easytrader788哥 小弟來試試 謝謝

maxhamax 發表於 16-3-10 23:50

小弟跑起來 好像沒資料

Arrays: RangeHigh(0) ,RangeLow(0);
vars:Counter(1),StepGap(100),LookBack(100) ;

if date = 1160309 and time = 0845 then begin
For Counter = 0 to 9 Begin
    Value1 = Counter*StepGap;
    RangeHigh = Highest(High,LookBack) ;
end ;
end ;

plot1(RangeHigh);

不知是否哪裡有誤?

easytrader788 發表於 16-12-14 19:57

一分K的起始K 時間為 0846 , 五分K的起始K棒時間是 0850
頁: [1]
查看完整版本: 關於時間序列資料固定區間之語法