奇狐社區論壇
在這個頁面顯示本主題全部的 16 個文章

奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- 收盤價在排序中的位置標註紅色 (http://www.chiefox.com.tw/bbs/showthread.php?threadid=21700)


由 peter109 在 2018-12-29 11:08 發表:

收盤價在排序中的位置標註紅色

有N個(N>100)數據列 當中包含一個收盤價 經過排序後 使用DRAWTEXTEX做排序後的列表 並以每10行做換行

N:=131;
DTC:=DATACOUNT;
CC:=C;
VARIABLE:SLN[N]=0, SLNPOS[N]=0, SS[N]='', QQ[N]='';//SS=變數名稱
ss[1]:='收盤:'; ss[2]:='AW01: '; ss[3]:='AW02: '; ss[4]:='AW03: '; ss[5]:='AW04: '; ss[6]:='AW05: ';
ss[7]:='BW01: '; ...... ss[131]:='ZW05: ';
tmp:=SORT(SLN,1,1,N);
//===上述 列表 沒問題

FOR i=1 TO N DO BEGIN
SLNPOS[i]:=SLN[i];
tmp:=SORTPOS(SLNPOS,1,1,N);
END;
DRAWTEXTEX(1,0,5,0,SS[SLNPOS[1]]+NUMTOSTR(SLN[1],XS2)),Coloryellow;

請協助
1) 如何用不同顏色(例如 紅色)標示出 收盤價 的數值和收盤價的變數名稱
2) 不知哪錯了 對應的變數名稱全亂套了

謝謝您

__________________
至誠能勝天下至偽
至拙能勝天下至巧


由 peter109 在 2018-12-29 14:01 發表:

前述 SORTPOS書寫方式 經過DRAWTEXTEX列出後 還會出現變數名稱相同的現象 照說 變數名稱為唯一 不該有任何重複

__________________
至誠能勝天下至偽
至拙能勝天下至巧


由 peter109 在 2018-12-29 18:06 發表:

花了點時間進行比對
另外使用130條均線(參數從1到130並放大5倍 如 NX:=5; A1:=MA(C,1*NX),PRECISION3; A2:=MA(C,2*NX),PRECISION3; )做列表
經過逐一比對 變數名稱全部都有出現且沒重複 因此 前面SORTPOS會出現變數名稱重複"估計"主要是因為不同的變數出現相同的數值所導致

但是 變數名稱和他所對應的數值則錯的很厲害 也許是我在SORTPOS甚麼地方有錯誤 還請您指正

__________________
至誠能勝天下至偽
至拙能勝天下至巧


由 peter109 在 2018-12-31 16:00 發表:

引用:
最初由 peter109 發表
前述 SORTPOS書寫方式 經過DRAWTEXTEX列出後 還會出現變數名稱相同的現象 照說 變數名稱為唯一 不該有任何重複


拍謝 剛發現 這部分是因為我的疏忽所造成
變數名稱 全部都有出現

__________________
至誠能勝天下至偽
至拙能勝天下至巧


由 cgjj 在 2019-01-02 08:58 發表:


FOR i=1 TO N DO BEGIN
SLNPOS[i]:=SLN[i];
tmp:=SORTPOS(SLNPOS,1,1,N);
END;
DRAWTEXTEX(1,0,5,0,SS[SLNPOS[1]]+NUMTOSTR(SLN[1],XS2)),Coloryellow;


改這樣試試
FOR i=1 TO N DO BEGIN
SLNPOS[i]:=SLN[i];
END;
tmp:=SORTPOS(SLNPOS,1,1,N);
DRAWTEXTEX(1,0,5,0,SS[SLNPOS[1]]+NUMTOSTR(SLN[SLNPOS[1]],XS2)),Coloryellow;


由 peter109 在 2019-01-02 12:17 發表:

已經試過 變數名稱依然無法和相對應數值在同一位置

__________________
至誠能勝天下至偽
至拙能勝天下至巧


由 cgjj 在 2019-01-02 12:45 發表:

引用:
最初由 peter109 發表
已經試過 變數名稱依然無法和相對應數值在同一位置


tmp:=SORT(SLN,1,1,N); 此行是多餘的

精簡範例
原碼:
N:=6; XS2:=1; DTC:=DATACOUNT; CC:=C; VARIABLE:SLN[N]=0, SLNPOS[N]=0, SS[N]='', QQ[N]='';//SS=變數名稱 ss[1]:='收盤: '; ss[2]:='AW01: '; ss[3]:='AW02: '; ss[4]:='AW03: '; ss[5]:='AW04: '; ss[6]:='AW05: '; SLN[1]:=666;SLN[2]:=222; SLN[3]:=111;SLN[4]:=333; SLN[5]:=999; SLN[6]:=777; // tmp:=SORT(SLN,1,1,N); <== 請刪掉這行 FOR i=1 TO N DO SLNPOS[i]:=SLN[i]; tmp:=SORTPOS(SLNPOS,1,1,N); DRAWTEXTEX(1,0,5,0,SS[SLNPOS[1]]+NUMTOSTR(SLN[SLNPOS[1]],XS2)),Coloryellow; DRAWTEXTEX(1,0,5,20,SS[SLNPOS[2]]+NUMTOSTR(SLN[SLNPOS[2]],XS2)),Coloryellow; DRAWTEXTEX(1,0,5,40,SS[SLNPOS[3]]+NUMTOSTR(SLN[SLNPOS[3]],XS2)),Coloryellow; DRAWTEXTEX(1,0,5,60,SS[SLNPOS[4]]+NUMTOSTR(SLN[SLNPOS[4]],XS2)),Coloryellow; DRAWTEXTEX(1,0,5,80,SS[SLNPOS[5]]+NUMTOSTR(SLN[SLNPOS[5]],XS2)),Coloryellow; DRAWTEXTEX(1,0,5,100,SS[SLNPOS[6]]+NUMTOSTR(SLN[SLNPOS[6]],XS2)),Coloryellow;


由 peter109 在 2019-01-02 17:35 發表:

引用:
最初由 cgjj 發表
tmp:=SORT(SLN,1,1,N); 此行是多餘的

精簡範例
原碼:
N:=6; XS2:=1; DTC:=DATACOUNT; CC:=C; VARIABLE:SLN[N]=0, SLNPOS[N]=0, SS[N]='', QQ[N]='';//SS=變數名稱 ss[1]:='收盤: '; ss[2]:='AW01: '; ss[3]:='AW02: '; ss[4]:='AW03: '; ss[5]:='AW04: '; ss[6]:='AW05: '; SLN[1]:=666;SLN[2]:=222; SLN[3]:=111;SLN[4]:=333; SLN[5]:=999; SLN[6]:=777; // tmp:=SORT(SLN,1,1,N); <== 請刪掉這行 FOR i=1 TO N DO SLNPOS[i]:=SLN[i]; tmp:=SORTPOS(SLNPOS,1,1,N); DRAWTEXTEX(1,0,5,0,SS[SLNPOS[1]]+NUMTOSTR(SLN[SLNPOS[1]],XS2)),Coloryellow; DRAWTEXTEX(1,0,5,20,SS[SLNPOS[2]]+NUMTOSTR(SLN[SLNPOS[2]],XS2)),Coloryellow; DRAWTEXTEX(1,0,5,40,SS[SLNPOS[3]]+NUMTOSTR(SLN[SLNPOS[3]],XS2)),Coloryellow; DRAWTEXTEX(1,0,5,60,SS[SLNPOS[4]]+NUMTOSTR(SLN[SLNPOS[4]],XS2)),Coloryellow; DRAWTEXTEX(1,0,5,80,SS[SLNPOS[5]]+NUMTOSTR(SLN[SLNPOS[5]],XS2)),Coloryellow; DRAWTEXTEX(1,0,5,100,SS[SLNPOS[6]]+NUMTOSTR(SLN[SLNPOS[6]],XS2)),Coloryellow;



收到 謝謝您

請問 如何將收盤價的數值和其變數標註為紅色
目前 我是使用
CCP:IF(SLN[1]=CC[DTC],1,0); CCP:=IF(SLN[2]=CC[DTC],2,CCP); .....
也許您有比較好的解決方案

__________________
至誠能勝天下至偽
至拙能勝天下至巧


由 cgjj 在 2019-01-02 21:05 發表:

引用:
最初由 peter109 發表
收到 謝謝您

請問 如何將收盤價的數值和其變數標註為紅色
目前 我是使用
CCP:IF(SLN[1]=CC[DTC],1,0); CCP:=IF(SLN[2]=CC[DTC],2,CCP); .....
也許您有比較好的解決方案



DRAWTEXTEX(SLNPOS[1]=1,0,5,0,SS[SLNPOS[1]]+NUMTOSTR(SLN[SLNPOS[1]],XS2)),Colorred;
DRAWTEXTEX(SLNPOS[1]>1,0,5,0,SS[SLNPOS[1]]+NUMTOSTR(SLN[SLNPOS[1]],XS2)),Coloryellow;
DRAWTEXTEX(SLNPOS[2]=1,0,5,20,SS[SLNPOS[2]]+NUMTOSTR(SLN[SLNPOS[2]],XS2)),Colorred;
DRAWTEXTEX(SLNPOS[2]>1,0,5,20,SS[SLNPOS[2]]+NUMTOSTR(SLN[SLNPOS[2]],XS2)),Coloryellow;
DRAWTEXTEX(SLNPOS[3]=1,0,5,40,SS[SLNPOS[3]]+NUMTOSTR(SLN[SLNPOS[3]],XS2)),Colorred;
DRAWTEXTEX(SLNPOS[3]>1,0,5,40,SS[SLNPOS[3]]+NUMTOSTR(SLN[SLNPOS[3]],XS2)),Coloryellow;
DRAWTEXTEX(SLNPOS[4]=1,0,5,60,SS[SLNPOS[4]]+NUMTOSTR(SLN[SLNPOS[4]],XS2)),Colorred;
DRAWTEXTEX(SLNPOS[4]>1,0,5,60,SS[SLNPOS[4]]+NUMTOSTR(SLN[SLNPOS[4]],XS2)),Coloryellow;
........ 略 .........


由 peter109 在 2019-01-03 07:01 發表:

您辛苦了 謝謝您

__________________
至誠能勝天下至偽
至拙能勝天下至巧


由 cgjj 在 2019-01-03 09:09 發表:

引用:
最初由 peter109 發表
您辛苦了 謝謝您


不客氣 ^^


由 peter109 在 2019-01-05 16:00 發表:

還是忍不住想問

若使用 SORT(SLN,0,1,N)
經過排序後的SLN 是否可以直接和CC比對
若 SLN[i]=CC[DTC] 那麼CC在排序後的位置就是在第 i 個編號

__________________
至誠能勝天下至偽
至拙能勝天下至巧


由 cgjj 在 2019-01-06 11:02 發表:

引用:
最初由 peter109 發表
還是忍不住想問

若使用 SORT(SLN,0,1,N)
經過排序後的SLN 是否可以直接和CC比對
若 SLN[i]=CC[DTC] 那麼CC在排序後的位置就是在第 i 個編號



SORT(SLN,0,1,N) 跑完後
SLN 中的值已經被調換次序(案排列優先次序)
排序後 SLN[1] 存放的是SLN中最小的數

跑這段可體驗一下
CC[1]:=30; CC[2]:=20; CC[3]:=10; CC[4]:=40; CC[5]:=50;
x:=SORT(CC,0,1,5); PP:CC[1];


把 SORT 換成 SORTPOS
則 SLN[1] 得到的是,SLN 中最小的數,其原來在數列中的位置

跑這段可體驗一下
CC[1]:=30; CC[2]:=20; CC[3]:=10; CC[4]:=40; CC[5]:=50;
x:=SORTPOS(CC,0,1,5); PP:CC[1];


由 peter109 在 2019-01-06 16:26 發表:

引用:
最初由 cgjj 發表
SORT(SLN,0,1,N) 跑完後
SLN 中的值已經被調換次序(案排列優先次序)
排序後 SLN[1] 存放的是SLN中最小的數

跑這段可體驗一下
CC[1]:=30; CC[2]:=20; CC[3]:=10; CC[4]:=40; CC[5]:=50;
x:=SORT(CC,0,1,5); PP:CC[1];


把 SORT 換成 SORTPOS
則 SLN[1] 得到的是,SLN 中最小的數,其原來在數列中的位置

跑這段可體驗一下
CC[1]:=30; CC[2]:=20; CC[3]:=10; CC[4]:=40; CC[5]:=50;
x:=SORTPOS(CC,0,1,5); PP:CC[1];


您說的我懂
但我不懂的是
經過SORT(不是SORTPOS)的SLN數列 SLN[1] SLN[2]...SLN[N]為何不能和CC[DTC]做等值比較 並因此取得該 i 值也就是CC在SLN排序後的位置 i

__________________
至誠能勝天下至偽
至拙能勝天下至巧


由 cgjj 在 2019-01-06 19:16 發表:

引用:
最初由 peter109 發表
您說的我懂
但我不懂的是
經過SORT(不是SORTPOS)的SLN數列 SLN[1] SLN[2]...SLN[N]為何不能和CC[DTC]做等值比較 並因此取得該 i 值也就是CC在SLN排序後的位置 i



用 SORTPOS 可以對準原來發生的變數名稱(SS)是哪一個

若單純 SORT 搭配 SLN[i]=CC[DTC] 就會無法對準
抓到的可能不是原來該位置相對應的那個變數名稱(SS)
因為可能有好幾個位置,擁有相同的價格(SLN同值)

我前面給的例子,並沒有考量到多個等價的情況,只考量到相等位置的情況
分色顯示在多個等價時,是有可能會出現問題的。
也沒注意到您是以 CC[DTC] 當基準,而非用 SLN[1]當基準
需要改成以下方式,應該才較合乎您的需求:
DRAWTEXTEX(SLN[SLNPOS[1]]=CC[DTC],0,5,0,SS[SLNPOS[1]]+NUMTOSTR(SLN[SLNPOS[1]],XS2)),Colorred;
DRAWTEXTEX(SLN[SLNPOS[1]]<>CC[DTC],0,5,0,SS[SLNPOS[1]]+NUMTOSTR(SLN[SLNPOS[1]],XS2)),Coloryellow;
DRAWTEXTEX(SLN[SLNPOS[2]]=CC[DTC],0,5,20,SS[SLNPOS[2]]+NUMTOSTR(SLN[SLNPOS[2]],XS2)),Colorred;
DRAWTEXTEX(SLN[SLNPOS[2]]<>CC[DTC],0,5,20,SS[SLNPOS[2]]+NUMTOSTR(SLN[SLNPOS[2]],XS2)),Coloryellow;
DRAWTEXTEX(SLN[SLNPOS[3]]=CC[DTC],0,5,40,SS[SLNPOS[3]]+NUMTOSTR(SLN[SLNPOS[3]],XS2)),Colorred;
DRAWTEXTEX(SLN[SLNPOS[3]]<>CC[DTC],0,5,40,SS[SLNPOS[3]]+NUMTOSTR(SLN[SLNPOS[3]],XS2)),Coloryellow;
...........


由 peter109 在 2019-01-06 20:58 發表:

謝謝您的再次說明+指導

__________________
至誠能勝天下至偽
至拙能勝天下至巧


全部時間均為台灣時間, 現在時間為07:14
在這個頁面顯示本主題全部的 16 個文章


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

簡愛洋行 製作 Copyright 2003-. All Rights Reserved.