大大好:
均線在跨頻率(日線圖/周線圖)取值的問題
程式碼如下:
Var:CloseDay(0),CloseWeek(0),CloseMonth(0) ; SetTotalBar(100); //股價站下日線圖的5ma/10ma/20ma/60ma value1 = xf_WeightedClose("AD"); CloseDay = xf_GetValue("AD",value1,0); condition1 = false; if CloseDay < EMA(CloseDay,5) and CloseDay < EMA(CloseDay,10) and CloseDay < EMA(CloseDay,20) and CloseDay < EMA(CloseDay,60) then Begin condition1 = true; End; //股價站下周線圖的20ma value2 = xf_WeightedClose("AW"); CloseWeek = xf_GetValue("AW",value2,0); condition2 = false; if CloseWeek < xf_EMA("AW", CloseWeek,20) then Begin condition2 = true; End; //總結 //if condition1 and condition2 and condition3 and condition9 and condition8 if condition1 and condition2 then Begin //print(file("C:\print\"),date,symbol,close); ret=1; print(file("c:\temp\xq_短線空方選股.log"),"選股日期:"+datetoString(date) ); print(file("c:\temp\xq_短線空方選股.log"),"股票名稱:"+symbolName); print(file("c:\temp\xq_短線空方選股.log"),"股票代碼:"+symbol); print(file("c:\temp\xq_短線空方選股.log"),Text("上引線:",High-close) ); print(file("c:\temp\xq_短線空方選股.log"),Text("實體棒:",close-open) ); print(file("c:\temp\xq_短線空方選股.log"),Text("收盤價:",CloseDay) ); print(file("c:\temp\xq_短線空方選股.log"),Text("EMA5:",xf_EMA("AD", CloseDay,5)) ); print(file("c:\temp\xq_短線空方選股.log"),Text("EMA10:",xf_EMA("AD",CloseDay,10)) ); print(file("c:\temp\xq_短線空方選股.log"),Text("EMA20:",xf_EMA("AD",CloseDay,20)) ); print(file("c:\temp\xq_短線空方選股.log"),Text("EMA60:",xf_EMA("AD",CloseDay,60)) ); print(file("c:\temp\xq_短線空方選股.log"),Text("周收盤價:",CloseWeek) ); print(file("c:\temp\xq_短線空方選股.log"),Text("周EMA20:",xf_EMA("AW", CloseWeek,20)) ); End;選出的股票.如恆大
log內容
------------- 選股日期:2025/03/14 股票名稱:恆大 股票代碼:1325.TW 上引線:0.250000 實體棒:0.200000 收盤價:28.662500 EMA5:29.143159 EMA10:29.855960 EMA20:30.802945 EMA60:30.966845 周收盤價:28.925000 周EMA20:30.088750 EPS=0.000000 -------------
我剛學習XS.所以有很多疑問??而且看很一堆文件.想不透
1.跨頻率
xf_WeightedClose("W"); //計算週線的加權平均價
計算週線的加權平均價.這個是什麼意思???
2.跨頻率
"D", "W", "M".我能猜得出來!!!
"AD", "AW", "AM" 什麼意思???
3.log內容錯誤的數值如下:
日線圖EMA60
周線圖EMA20
這兩個...我修改很多次.就是想不透錯在哪???
均線在跨頻率(日線圖/周線圖)取值的問題
- 533
- 最後發表 小荷包 2025 三月 20
大大:
感謝快速回復.我花了一個下午時間去釐清問題.
1.加權平均收盤價..這個太複雜了
我只要SMA
2.EMA.根據手冊說明
"有一些指標,例如EMA均線,或是MACD指標,由於計算時會不斷的引用前一筆計算的數值做累計的平均,像這樣子的腳本,就會需要一個比較大的資料讀取筆數。"
我發覺這個只會讓我的選股走偏了
其實我只是簡單選股而已.思考了.SMA就可以了
3.
1)資料讀取筆數區間
發覺設1時.只會執行一次
發覺設5時.只會執行5次.也就是5天內符合的列出
但至少MA60
Average(Close,60)
這個我還以為資料讀取筆數區間60
計算會導致錯誤..實際測試.正常
2)程式加上這個
SetTotalBar(60);
SMA...實際測試.正常
4.目前是使用日線圖.等下再加上周線圖
大大:
感謝再次回復..
我有修改了程式碼.加入周頻率
發文前的程式碼如下:
Var:CloseDay(0),CloseWeek(0),CloseMonth(0) ;
//在日頻率的腳本加
setBarFreq("D");
//setTotalBar(1500);
//股價站下日線圖的5ma/10ma/20ma/60ma
condition1 = false;
if Close < Average(Close,5) and Close < Average(Close,10) and Close < Average(Close,20) then
Begin
condition1 = true;
End;
//在周頻率的腳本加
//setBarFreq("W");
//setTotalBar(1500);
SetBackBar(30, "W");
//在周頻率的腳本加SetTotalBar(5000);
//股價站下周線圖的20ma
//CloseWeek = getfield("close","W");
CloseWeek = CloseW(0);
value1 = CloseW(0)+CloseW(1)+CloseW(2)+CloseW(3)+CloseW(4)+CloseW(5)+CloseW(6)+CloseW(7)+CloseW(8)+CloseW(9)+CloseW(10);
value1 = value1+CloseW(11)+CloseW(12)+CloseW(13)+CloseW(14)+CloseW(15)+CloseW(16)+CloseW(17)+CloseW(18)+CloseW(19);
value2 = value1/20;
condition2 = false;
if CloseWeek < Average(CloseWeek ,20) then
Begin
condition2 = true;
End;
//N 日簡單移動平均數值(SMA)=N 日收盤價加總/ N 日
//總結
//if condition1 and condition2 and condition3 and condition9 and condition8
if condition1 and condition2 then
Begin
//print(file("C:\print\"),date,symbol,close);
ret=1;
//省略log..print...省略..貼文有字數限制
End;
貼文有字數限制...我省略了省略log..print...省略..
目前發覺到有幾個問題:
1.正要發文時..看到教授的文
知道周MA20是程式碼錯物..
CloseWeek = CloseW(0);
Average(CloseWeek ,20)
用教授的.就正常了
average(getField("收盤價","W"),20)
2.關於周日跨頻問題
使用日頻率之前..我設了這個
setBarFreq("D");
setTotalBar(10);
setTotalBar..設定10
只需要當天顯示即可..
(log檔案內..發覺10天內符合結果會跑出來..設少一點..程式會快一點)
使用周頻率之前..我設了這個
SetBackBar(30, "W");
讀取30各棒(周線圖)
不知道是否符合邏輯???
感謝大大!!!!我再去測試.非常感謝你
Hello 小荷包,
小編補充,關於資料讀取筆數(settotalbar) 和 資料引用筆數(setbackbar),可以參考 資料讀取範圍與腳本執行的關係 裡的說明。
若您使用的是選股,那麼資料引用筆數並不用另外設定,因為選股預設就是拉出所有的資訊。
至於頻率的設定可參考 GetField 欄位說明。
7 評論