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

奇狐社區論壇 (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=22900)


由 fox1688 在 2021-04-02 10:20 發表:

由 數據列表 自設指標 數值 解讀 均線排列&走勢 , 並請教有否較簡潔的寫法

數值組成如下 :
整數部分 4 位 0/1/2/3 (均線由上而下排列) : 0=C , 1=MA1 短均線 , 2=MA2 中均線 , 3=MA3 長均線
小數部分 3 位 0/5/9 (對應左邊整數的各 MA) : 0=均線下彎 , 5=均線走平 , 9=均線上彎

呈現方式如下 :
0123.999 ==> 正式多頭 : C >= MA1 均線上彎 >= MA2 均線上彎 >= MA3 均線上彎
2103.950 ==> 一般排列 : MA2 均線上彎 >= MA1 均線走平 >= C >= MA3 均線下彎
3210.000 ==> 正式空頭 : MA3 均線下彎 >= MA2 均線下彎 >= MA1 均線下彎 >= C

請教 :
整數 4 位 : 共有 4*3*2*1=24 種組合 , 是否只能用 24 個 IF 判斷式 ? 有否更簡潔的寫法 ?


由 fox1688 在 2021-04-02 21:42 發表:

笨方法公式如下 : (似乎效用不大)

MA1 := MA(C,05);
MA2 := MA(C,10);
MA3 := MA(C,20);

MA1X := MA1 - REF(MA1,1);
MA2X := MA2 - REF(MA2,1);
MA3X := MA3 - REF(MA3,1);

MA1S := IF(MA1X>0,9,IF(MA1X<0,0,5));
MA2M := IF(MA2X>0,9,IF(MA2X<0,0,5));
MA3L := IF(MA3X>0,9,IF(MA3X<0,0,5));

線型走勢 :
IF(C>=MA1 AND MA1>=MA2 AND MA2>=MA3,123 + MA1S/10 + MA2M/100 + MA3L/1000,
IF(C>=MA1 AND MA1>=MA3 AND MA3>=MA2,132 + MA1S/10 + MA3L/100 + MA2M/1000,
IF(C>=MA2 AND MA2>=MA1 AND MA1>=MA3,213 + MA2M/10 + MA1S/100 + MA3L/1000,
IF(C>=MA2 AND MA2>=MA3 AND MA3>=MA1,231 + MA2M/10 + MA3L/100 + MA1S/1000,
IF(C>=MA3 AND MA3>=MA1 AND MA1>=MA2,312 + MA3L/10 + MA1S/100 + MA2M/1000,
IF(C>=MA3 AND MA3>=MA2 AND MA2>=MA1,321 + MA3L/10 + MA2M/100 + MA1S/1000,
IF(MA1>=C AND C>=MA2 AND MA2>=MA3,1023 + MA1S/10 + MA2M/100 + MA3L/1000,
IF(MA1>=C AND C>=MA3 AND MA3>=MA2,1032 + MA1S/10 + MA3L/100 + MA2M/1000,
IF(MA2>=C AND C>=MA1 AND MA1>=MA3,2013 + MA2M/10 + MA1S/100 + MA3L/1000,
IF(MA2>=C AND C>=MA3 AND MA3>=MA1,2031 + MA2M/10 + MA3L/100 + MA1S/1000,
IF(MA3>=C AND C>=MA1 AND MA1>=MA2,3012 + MA3L/10 + MA1S/100 + MA2M/1000,
IF(MA3>=C AND C>=MA2 AND MA2>=MA1,3021 + MA3L/10 + MA2M/100 + MA1S/1000,
IF(MA1>=MA2 AND MA2>=C AND C>=MA3,1203 + MA1S/10 + MA2M/100 + MA3L/1000,
IF(MA1>=MA3 AND MA3>=C AND C>=MA2,1302 + MA1S/10 + MA3L/100 + MA2M/1000,
IF(MA2>=MA1 AND MA1>=C AND C>=MA3,2103 + MA2M/10 + MA1S/100 + MA3L/1000,
IF(MA2>=MA3 AND MA3>=C AND C>=MA1,2301 + MA2M/10 + MA3L/100 + MA1S/1000,
IF(MA3>=MA1 AND MA1>=C AND C>=MA2,3102 + MA3L/10 + MA1S/100 + MA2M/1000,
IF(MA3>=MA2 AND MA2>=C AND C>=MA1,3201 + MA3L/10 + MA2M/100 + MA1S/1000,
IF(MA1>=MA2 AND MA2>=MA3 AND MA3>=C,1230 + MA1S/10 + MA2M/100 + MA3L/1000,
IF(MA1>=MA3 AND MA3>=MA2 AND MA2>=C,1320 + MA1S/10 + MA3L/100 + MA2M/1000,
IF(MA2>=MA1 AND MA1>=MA3 AND MA3>=C,2130 + MA2M/10 + MA1S/100 + MA3L/1000,
IF(MA2>=MA3 AND MA3>=MA1 AND MA1>=C,2310 + MA2M/10 + MA3L/100 + MA1S/1000,
IF(MA3>=MA1 AND MA1>=MA2 AND MA2>=C,3120 + MA3L/10 + MA1S/100 + MA2M/1000,
IF(MA3>=MA2 AND MA2>=MA1 AND MA1>=C,3210 + MA3L/10 + MA2M/100 + MA1S/1000,0)))))))))))))))))))))))),LINETHICK0,PRECISION3;


由 cgjj 在 2021-04-03 14:55 發表:

回覆: 由 數據列表 自設指標 數值 解讀 均線排列&走勢 , 並請教有否較簡潔的寫法

引用:
最初由 fox1688 發表
數值組成如下 :
整數部分 4 位 0/1/2/3 (均線由上而下排列) : 0=C , 1=MA1 短均線 , 2=MA2 中均線 , 3=MA3 長均線
小數部分 3 位 0/5/9 (對應左邊整數的各 MA) : 0=均線下彎 , 5=均線走平 , 9=均線上彎

呈現方式如下 :
0123.999 ==> 正式多頭 : C >= MA1 均線上彎 >= MA2 均線上彎 >= MA3 均線上彎
2103.950 ==> 一般排列 : MA2 均線上彎 >= MA1 均線走平 >= C >= MA3 均線下彎
3210.000 ==> 正式空頭 : MA3 均線下彎 >= MA2 均線下彎 >= MA1 均線下彎 >= C

請教 :
整數 4 位 : 共有 4*3*2*1=24 種組合 , 是否只能用 24 個 IF 判斷式 ? 有否更簡潔的寫法 ?




0123.999
在報表會顯示為 123.999 無法顯示為 0123.999

以下範例是改用 1234 (不用 0123)


原碼:
SS:C*0-1 NOAXIS linedot PRECISION3 colorred; MaxNo:=4; NS:=C*0; ND:=NS; N1:Close; N2:MA(C,3); N3:MA(C,6); N4:MA(C,9); MaxLB:=max(lbound(N2),max(lbound(N3),lbound(N4))); if lbound(N2)=0 or lbound(N3)=0 or lbound(N4)=0 then exit; if datacount<MaxNo+1 then exit; D1:=SGN(N2-ref(N2,1)); D1:=(D1+1)*5-(D1=1); D2:=SGN(N3-ref(N3,1)); D2:=(D2+1)*5-(D2=1); D3:=SGN(N4-ref(N4,1)); D3:=(D3+1)*5-(D3=1); for i = MaxLB+1 to datacount do begin NS[1]:=N1[i]; NS[2]:=N2[i]; NS[3]:=N3[i]; NS[4]:=N4[i]; ND[1]:=D1[i]; ND[2]:=D2[i]; ND[3]:=D3[i]; x:=SORTPOS(NS,1,1,4); S:=''; for j=1 to 4 do S:=S+numtostr(NS[j],0); S:=S+'.'; for j=1 to 4 do if NS[j]>1 then S:=S+numtostr(ND[NS[j]-1],0); SS[i]:=strtonum(S); end; x:=SETLBOUND(SS,MaxLB+1);


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


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

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