即將進入季節性多頭的股票如何改為一月

  •   64 
  • 最後發表   女人  4 週前
女人 發文於   2025/03/18

https://www.xq.com.tw/xstrader/%E5%8D%B3%E5%B0%87%E9%80%B2%E5%85%A5%E5%AD%A3%E7%AF%80%E6%80%A7%E5%A4%9A%E9%A0%AD%E7%9A%84%E8%82%A1%E7%A5%A8/

 

請問原本12月份想改為元月份,是不是把第6行的12改為1 即可呢? 其他月份以此類推呢?

m1[x]=(close[12*x-1]-close[12*x]);


排序方式: 標準 | 最新
虎科大許教授 發文於   2025/03/18

程式不用改。若你懂得迴圈的運算邏輯,你會發現,當你在去年12月底時跑這個程式,這個程式是用去年1月份的收盤價減掉前年12月份收盤價,算出價格是否上漲,若上漲,次數加1。接著,用去年2月份收盤價減去年1月份收盤價,若上漲,次數再加1。次數大於等於7就把股票選出來。

另外,這個程式要比較有效率跑,應該修改為在最後一根K棒才跑迴圈。

array:m1[10](0);
variable:x(0),count(0);
if isLastBar then
    begin   
        count=0;
        for x=1 to 10
            begin
                m1[x]=(close[12*x-1]-close[12*x]);
                if m1[x]>0
                then count=count+1;
            end;
        if count>=7 then ret=1;
        outputfield(1,count,0,"符合的次數");
    end;

XS小編 發文於   2025/03/19

Hello 女人,

 

小編補充,連結腳本中迴圈計算的是過去10年腳本執行的後一月 (現在的話就是4月) 的收盤價減掉當月 (現在的話就是3月) 的收盤價,判斷上漲的次數。

更白話一點就是計算 過去10年間執行當下這個月上漲的次數。

女人 發文於   2025/03/21

請問 :目前三月中,A)找出四月份容易上漲的股票,請問複製上述許教授的腳本即可,還是許教授的腳本那一行要變更?

                               B)要找出五月份容易上漲的股票,請問上述許教授的腳本哪裡要變更的嗎?

                               C)要變更上漲月份,請問上述許教授的腳本,那些"數字"要更改?

 

虎科大許教授 發文於   2025/03/21

這個問題最好改成用參數來設定計算的月份,例如設定3月份,則用3月底的收盤價往前計算10年,若計算2月份,則用2月底的收盤價往前計算10年。迴圈的close[12*x-1]-close[12*x]需要根據選擇的月份動態調整。

XS小編 發文於   2025/03/26

Hello 女人,

 

小編補充,要修改的話建議可以用當下月份加減幾個月當參數會比較容易寫。

舉例來說,增加個input: _month(1, "月份參數");

然後將 m1 改為 m1[x]=(close[12*x-_month]-close[12*x-_month+1]);

以當下月份3月來說,這樣設為1就是4月減3月收盤價,2就會是5月減4月收盤價。

女人 發文於   2025/03/26

這個問題最好改成用參數來設定計算的月份,例如設定3月份,則用3月底的收盤價往前計算10年,若計算2月份,則用2月底的收盤價往前計算10年。迴圈的close[12*x-1]-close[12*x]需要根據選擇的月份動態調整。

女人 發文於   2025/03/26

這個問題最好改成用參數來設定計算的月份,例如設定3月份,則用3月底的收盤價往前計算10年,若計算2月份,則用2月底的收盤價往前計算10年。迴圈的close[12*x-1]-close[12*x]需要根據選擇的月份動態調整。

女人 發文於   2025/03/26

謝謝許教授

女人 發文於   2025/03/26

感謝小編:很苦惱要如何設定月份參數,謝謝小編回覆~

虎科大許教授 發文於   2025/03/26

//從去年該月份開始處理
input: MNr(2, "分析月份", InputKind:=dict(
["一月", 1], ["二月", 2], ["三月", 3], ["四月", 4], 
["五月", 5], ["六月", 6], ["七月", 7], ["八月", 8], 
["九月", 9], ["十月", 10], ["十一月", 11], ["十二月", 12]));
setBarFreq("M");
array:m1[10](0); //10年
variable:x(0),count(0);
if isLastBar then
    begin
        count=0;
        value1=Month(date)-MNr;
        for x=1 to 10
            begin
                m1[x]=close[12*x+value1]-close[12*x+value1+1];
                if m1[x]>0
                then count=count+1;
                print(date[12*x+value1],m1[x]);
            end;
        if count>=7 then ret=1;
        outputfield(1,count,0,"符合的次數");     
    end;

顯示更多回應 發表回覆
Close