到奇狐勝券首頁 奇狐社區論壇 購買奇狐勝券 試用奇狐勝券
 
論壇首頁 你可以在這裡編輯你的資料,查看短訊,訂閱主題和論壇參數等等 免費會員註冊 會員列表 論壇幫助 論壇日曆 論壇搜索 加入我的最愛 登出論壇  
奇狐社區論壇 : Powered by vBulletin version 2.3.0 奇狐社區論壇 > 指標公式 > 問題交流 > [求救] 排序問題
  上一主題   下一主題
作者
主題 發表新主題    回覆主題
tajenchung
初級會員

註冊日期: Apr 2009
來  自:
文章數量: 11

[求救] 排序問題

我想以 date 和 price 兩個欄位為資料來源,然後每3天為一個群體,分別對date 及 price 進行排序,進而得到該群體中每日的 date 排名 和 price 排名。

詳細的例子如附件。

懇請高手相助,謝謝!

附件: sort_problem.txt
此文件已被下載 38 次。

向版主報告此篇 | 查IP位址
Old Post 2015-07-03 23:21
tajenchung 現在離線 點選這裡查看 tajenchung 的個人資料 點選這裡給 tajenchung 傳送一條短訊 查找更多關於 tajenchung 的文章 增加 tajenchung 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18095

回覆: [求救] 排序問題

引用:
最初由 tajenchung 發表
我想以 date 和 price 兩個欄位為資料來源,然後每3天為一個群體,分別對date 及 price 進行排序,進而得到該群體中每日的 date 排名 和 price 排名。

詳細的例子如附件。

懇請高手相助,謝謝!



日線總數,不會每天都剛剛好能被3整除
當日線最末根date_rank不為3時,如何處理?

向版主報告此篇 | 查IP位址
Old Post 2015-07-06 09:12
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
tajenchung
初級會員

註冊日期: Apr 2009
來  自:
文章數量: 11

版主您好:

謝謝您的回覆。
可能是我的描述上的關係,讓您混亂了。
若用以下的形容,應該比較清楚:

『每根K棒與前二根K棒形成一個群體』



這樣應該就不須要除以3了。

再次感恩!

向版主報告此篇 | 查IP位址
Old Post 2015-07-06 13:40
tajenchung 現在離線 點選這裡查看 tajenchung 的個人資料 點選這裡給 tajenchung 傳送一條短訊 查找更多關於 tajenchung 的文章 增加 tajenchung 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18095

引用:
最初由 tajenchung 發表
版主您好:

謝謝您的回覆。
可能是我的描述上的關係,讓您混亂了。
若用以下的形容,應該比較清楚:

『每根K棒與前二根K棒形成一個群體』



這樣應該就不須要除以3了。

再次感恩!



(price_rank 減 date_rank) 的 [每3日總合] 計算有意義嗎?
因為其值必定永遠為零

向版主報告此篇 | 查IP位址
Old Post 2015-07-06 14:59
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
tajenchung
初級會員

註冊日期: Apr 2009
來  自:
文章數量: 11

price_rank 減 date_rank 的值 "不會" 永遠為零, 如附件的第一個例子,其值是"2"。

向版主報告此篇 | 查IP位址
Old Post 2015-07-06 17:45
tajenchung 現在離線 點選這裡查看 tajenchung 的個人資料 點選這裡給 tajenchung 傳送一條短訊 查找更多關於 tajenchung 的文章 增加 tajenchung 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18095

引用:
最初由 tajenchung 發表
price_rank 減 date_rank 的值 "不會" 永遠為零, 如附件的第一個例子,其值是"2"。


price_rank 減 date_rank
20150101 = 2
20150102 = -1
20150103 = -1

每3日總合 = 2 + (-1) + (-1) = 0
是零,並非2

向版主報告此篇 | 查IP位址
Old Post 2015-07-06 18:51
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
tajenchung
初級會員

註冊日期: Apr 2009
來  自:
文章數量: 11

其實我要求出的值是:

(price_rank 減 date_rank)*(price_rank 減 date_rank) 的每3日總合。

只是為了簡化問題,所以才寫成price_rank 減 date_rank。

沒想到版主這麼細心,看到結果都是0。

不好意思造成困擾。

向版主報告此篇 | 查IP位址
Old Post 2015-07-07 10:47
tajenchung 現在離線 點選這裡查看 tajenchung 的個人資料 點選這裡給 tajenchung 傳送一條短訊 查找更多關於 tajenchung 的文章 增加 tajenchung 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18095

引用:
最初由 tajenchung 發表
其實我要求出的值是:

(price_rank 減 date_rank)*(price_rank 減 date_rank) 的每3日總合。

只是為了簡化問題,所以才寫成price_rank 減 date_rank。

沒想到版主這麼細心,看到結果都是0。

不好意思造成困擾。



SS 就是您要的數值 (本公式計算負荷較重)

原碼:

CC
:=CWK:=C*0PRDR:=WK
SS:WK;
for 
i=3 to datacount do begin
  FtN
:=i-2;
  for 
j=i downto FtN do begin
    WK
[j]:=CC[j];
  
end;
  
x:=sortpos(WK,0,j+1,i);
  for 
j=i downto FtN do begin
    PRDR
[WK[j]]:=(i-j+1)-(WK[j]-FtN+1);
    
SS[i]:=SS[i]+POW(PRDR[WK[j]],2);
  
end;  
end;

向版主報告此篇 | 查IP位址
Old Post 2015-07-07 11:35
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
tajenchung
初級會員

註冊日期: Apr 2009
來  自:
文章數量: 11

完全符合我的需求,謝謝版主的解答,感激不盡!!!


程式中有一行,引起我對奇狐內部運算的好奇:

for j=i downto FtN do begin

WK[j]:=CC[j];

end;

x:=sortpos(WK,0,j+1,i);

為何x:=sortpos(WK,0,j+1,i)的j值,在for 執行完之後,會等於for最後的J值 減 1

例子:
I=3,J=3 downto 1,x:=sortpos(WK,0,j+1,i)的j值 =0

I=4,J=4 downto 2,x:=sortpos(WK,0,j+1,i)的j值 =1

蠻特別的,沒遇到還真不知道是如此呢...

向版主報告此篇 | 查IP位址
Old Post 2015-07-07 15:49
tajenchung 現在離線 點選這裡查看 tajenchung 的個人資料 點選這裡給 tajenchung 傳送一條短訊 查找更多關於 tajenchung 的文章 增加 tajenchung 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18095

引用:
最初由 tajenchung 發表
完全符合我的需求,謝謝版主的解答,感激不盡!!!


程式中有一行,引起我對奇狐內部運算的好奇:

for j=i downto FtN do begin

WK[j]:=CC[j];

end;

x:=sortpos(WK,0,j+1,i);

為何x:=sortpos(WK,0,j+1,i)的j值,在for 執行完之後,會等於for最後的J值 減 1

例子:
I=3,J=3 downto 1,x:=sortpos(WK,0,j+1,i)的j值 =0

I=4,J=4 downto 2,x:=sortpos(WK,0,j+1,i)的j值 =1

蠻特別的,沒遇到還真不知道是如此呢...



那跟 sortpos 沒有任何關係
並非奇狐的迴圈比較特別
許多程式語言皆是如此處理迴圈
例如:VBScript 也是相同處理方法

對迴圈來說,本來就是如此

for i=1 to 5 do begin
end;

該迴圈若無中途跳離, 迴圈跑完後 i = 6

i 是計數器
當 i=1 此輪的迴圈跑到最後一行
會碰到結尾的 End ,此刻系統就將 i +1,令 i =2
然後回到開頭的 for 那一行去做 Check
若 i >5 ,就會結束迴圈
若 i <=5,就會再進行新一輪

可以拿結束迴圈後的 i 值來判斷
去檢驗迴圈有無中途被跳開
正常跑完 i 會是6, 中途跳開 i 為 1 to 5

跑跑以下範例,就能更精確了解迴圈運作
downto 只是反過來跑而已(由大到小,每次減1)

//範例1
for i=1 to 5 do begin
if i=3 then break;
end;


//範例2
for i=1 to 5 do begin
i:=9;
end;

向版主報告此篇 | 查IP位址
Old Post 2015-07-07 17:08
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
tajenchung
初級會員

註冊日期: Apr 2009
來  自:
文章數量: 11

明白了,謝謝版主的熱心教學,感恩!!!

向版主報告此篇 | 查IP位址
Old Post 2015-07-07 17:48
tajenchung 現在離線 點選這裡查看 tajenchung 的個人資料 點選這裡給 tajenchung 傳送一條短訊 查找更多關於 tajenchung 的文章 增加 tajenchung 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18095

引用:
最初由 tajenchung 發表
明白了,謝謝版主的熱心教學,感恩!!!


不客氣 ^^

向版主報告此篇 | 查IP位址
Old Post 2015-07-07 17:55
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
全部時間均為台灣時間, 現在時間為21:36 發表新主題    回覆主題
  上一主題   下一主題
顯示可列印版本 | 訂閱此主題

論壇跳轉:
主題評分:

論壇規定:
你不可以發表新主題
你不可以回覆文章
你不可以上傳附件
你不可以編輯自己的文章
HTML語法禁止
vB 語法核准
表情符號核准
貼圖語法[IMG]核准
 

本站所有內容未經作者授權禁止轉貼節錄, 發表言論僅供參考勿作為投資決策依據。瀏覽本站請使用 IE 5.5 以上版本, 最佳瀏覽解析度 1024 x 768 全彩。

Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.

簡愛洋行 製作 Copyright 2003-. All Rights Reserved.  聯絡我們