到奇狐勝券首頁 奇狐社區論壇 購買奇狐勝券 試用奇狐勝券
 
論壇首頁 你可以在這裡編輯你的資料,查看短訊,訂閱主題和論壇參數等等 免費會員註冊 會員列表 論壇幫助 論壇日曆 論壇搜索 加入我的最愛 登出論壇  
奇狐社區論壇 : Powered by vBulletin version 2.3.0 奇狐社區論壇 > 指標公式 > 問題交流 > 由 數據列表 自設指標 數值 解讀 均線排列&走勢 , 並請教有否較簡潔的寫法
  上一主題   下一主題
作者
主題 發表新主題    回覆主題
fox1688
中級會員

註冊日期: Feb 2004
來  自:
文章數量: 82

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

數值組成如下 :
整數部分 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 判斷式 ? 有否更簡潔的寫法 ?

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

註冊日期: Feb 2004
來  自:
文章數量: 82

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

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;

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

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

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

引用:
最初由 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);

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

論壇跳轉:
主題評分:

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