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]);
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]);
程式不用改。若你懂得迴圈的運算邏輯,你會發現,當你在去年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;
Hello 女人,
小編補充,連結腳本中迴圈計算的是過去10年腳本執行的後一月 (現在的話就是4月) 的收盤價減掉當月 (現在的話就是3月) 的收盤價,判斷上漲的次數。
更白話一點就是計算 過去10年間執行當下這個月上漲的次數。
請問 :目前三月中,A)找出四月份容易上漲的股票,請問複製上述許教授的腳本即可,還是許教授的腳本那一行要變更?
B)要找出五月份容易上漲的股票,請問上述許教授的腳本哪裡要變更的嗎?
C)要變更上漲月份,請問上述許教授的腳本,那些"數字"要更改?
這個問題最好改成用參數來設定計算的月份,例如設定3月份,則用3月底的收盤價往前計算10年,若計算2月份,則用2月底的收盤價往前計算10年。迴圈的close[12*x-1]-close[12*x]需要根據選擇的月份動態調整。
Hello 女人,
小編補充,要修改的話建議可以用當下月份加減幾個月當參數會比較容易寫。
舉例來說,增加個input: _month(1, "月份參數");
然後將 m1 改為 m1[x]=(close[12*x-_month]-close[12*x-_month+1]);
以當下月份3月來說,這樣設為1就是4月減3月收盤價,2就會是5月減4月收盤價。
這個問題最好改成用參數來設定計算的月份,例如設定3月份,則用3月底的收盤價往前計算10年,若計算2月份,則用2月底的收盤價往前計算10年。迴圈的close[12*x-1]-close[12*x]需要根據選擇的月份動態調整。
這個問題最好改成用參數來設定計算的月份,例如設定3月份,則用3月底的收盤價往前計算10年,若計算2月份,則用2月底的收盤價往前計算10年。迴圈的close[12*x-1]-close[12*x]需要根據選擇的月份動態調整。
謝謝許教授
感謝小編:很苦惱要如何設定月份參數,謝謝小編回覆~
//從去年該月份開始處理 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;
11 評論