到奇狐勝券首頁 奇狐社區論壇 購買奇狐勝券 試用奇狐勝券
 
論壇首頁 你可以在這裡編輯你的資料,查看短訊,訂閱主題和論壇參數等等 免費會員註冊 會員列表 論壇幫助 論壇日曆 論壇搜索 加入我的最愛 登出論壇  
奇狐社區論壇 : Powered by vBulletin version 2.3.0 奇狐社區論壇 > 指標公式 > [進階教學] > 05. 排序函數 SORT, SORTPOS 《適用4.0版》
  上一主題   下一主題
作者
主題 發表新主題    回覆主題
cgjj
總版主

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

05. 排序函數 SORT, SORTPOS 《適用4.0版》

【語句】SORT

【用途】
將數列中的數值依大小次序重新排列(一般以排序稱之)
 
【語法】

SORT(NAry, Mode, N1, N2)


【參數】

NAry 為欲排序的數列
Mode 用於設定排序的方式( 0.由小排到大, 1.由大排到小 )
N1 為排序的起始位置
N2 為排序的終止位置(N2的數值需大於N1,否則無效)


【說明】
若前頭有指定變數, 例如 XX:=SORT(NAry, Mode, N1, N2)
則該變數(XX)取得的運算值為已排序的數據量(即 N2-N1+1 的值)

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

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

【語句】SORTPOS

【用途】
取得將數列中的數值依大小次序重新排列,存放排序後該數值原來所在K棒的位置
SORT 是將排序後的數值存放於原數列中
SORTPOS 則是將排序後該數值原來所在K棒的位置(序號)存放於原數列中
 
【語法】

SORTPOS(NAry, Mode, N1, N2)


【參數】

NAry 為欲排序的數列
Mode 用於設定排序的方式( 0.由小排到大, 1.由大排到小 )
N1 為排序的起始位置
N2 為排序的終止位置(N2的數值需大於N1,否則無效)


【說明】
若前頭有指定變數, 例如 XX:=SORTPOS(NAry, Mode, N1, N2)
則該變數(XX)取得的運算值為已排序的數據量(即 N2-N1+1 的值)

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

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

【範例1】將成交量由小排到大

■原來用 FOR 語句以氣泡式排序撰寫(跑的很慢)
VV:vol;
StartNo:= lbound(VV);
EndNo:= ubound(VV);
for i = StartNo to EndNo-1 do begin
  for j = i+1 to EndNo do begin
    if VV[i]>VV[j] then begin
      temp:=VV[i]; VV[i]:=VV[j]; VV[j]:=temp;
    end;
  end;
end;


■改用內建 SORT 排序函數的寫法(程式很短且跑的非常快)
VV:vol;
StartNo:= lbound(VV);
EndNo:= ubound(VV);
tmp:= SORT(VV, 0, StartNo, EndNo);

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

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

【範例2】將最近五十日的成交量由大排到小

VV:vol;
EndNo:= ubound(VV);
tmp:= SORT(VV, 1, EndNo-50+1, EndNo);
註: 運算後 tmp 的值為50

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

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

【範例3】找出成交量最大的那根K棒位置

VV:=vol;
StartNo:= lbound(VV);
EndNo:= ubound(VV);
tmp:= SORTPOS(VV, 0, StartNo, EndNo);
MaxVPos: VV[EndNo];

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

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

【範例4】找出最近50根K棒,高的第一高和第二高

N1:=datacount-50+1;
N2:=datacount;

GetHH:=H;
x:=SORT(GetHH, 1, N1, N2);
前一高:GetHH[N1];
前二高:GetHH[N1+1];

PosHH:=H;
x:=SORTPOS(PosHH, 1, N1, N2);
前一高位置:PosHH[N1] LINETHICK0;
前二高位置:PosHH[N1+1] LINETHICK0;

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

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

【範例5】找出最大量的價(用於分筆成交週期)
 註:此例延續 數列運算(陣列運算) 之 [範例7 求當日那一個價成交量最多]
   運算速度大幅提升


UseSC:=C;
UseSV:=V;
UseCP:=UseSC;
UseVP:=V;

//以價大小排序
x:=SORT(UseSC,0,1,datacount); //排序後將結果存入 UseC
x:=SORTPos(UseCP,0,1,datacount); //排序後將原本位置存入 UseCP

//將量依據前面排序結果位置存放入 UseSV
for i=1 to datacount do begin
  UseSV[i]:=UseVP[UseCP[i]];
end;

//標示每個價的起點(StP=1)
StP:=barpos=1 or ref(UseSC,1)<UseSC;
//加總每個價的量
SVV:=sum(UseSV,barslast(StP)+1);

//找出最大量的價的位置
HVP:=hhvbars(SVV,0);
HVP:=datacount-HVP[datacount];
MaxVolC:UseSC[HVP];
MaxVolV:SVV[HVP];

 與原範例不同的是若碰到有兩個價都是量最多時, 其是取價位較高的價(而非取離目前時間最近的價)

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

論壇跳轉:
主題評分:

論壇規定:
你不可以發表新主題
你不可以回覆文章
你不可以上傳附件
你不可以編輯自己的文章
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.  聯絡我們