週頻率選股策略 repeat 語法用不出來

  •   132 
  • 最後發表   isaac  2020 四月 23
isaac 發文於   2020/04/20

小編你好

我嘗試在週頻率上計算MACD oscValue 有幾根綠棒

在日頻率使用相同語法可行, 但換到週頻率就跑不出結果

input: FastLength(12), SlowLength(26), MACDLength(9);

variable: difValue(0), macdValue(0), oscValue(0),i(0),

          _1st_G_1stBar(0),_1st_G_lastBar(0);

setbarfreq("W");

SetTotalBar((maxlist(FastLength,SlowLength,6) + MACDLength) * 4);

MACD(weightedclose, FastLength, SlowLength, MACDLength, difValue, macdValue, oscValue);

condition1 = Close > PriceLimit;

condition2 = difValue >0;

condition3 = macdValue >0;

condition4 = oscValue >0;

If condition1 and condition2 and condition3 and condition4 then 

 

begin

 

i=0;

 

Repeat

  Begin

    if oscValue[i]>=0 then

    i = i + 1;

  End;

Until oscValue[i]<0;

 

_1st_G_1stBar =i; //第一根綠棒

Repeat

  Begin

    if oscValue[i]<=0 then

    i = i + 1;

  End;

Until oscValue[i]>0;

_1st_G_lastBar= i-1 ;//最後一根綠棒

排序方式: 標準 | 最新
isaac 發文於   2020/04/21

Hi , 我把condition3 = macdValue >0; 改成<0就可以了

這是什麼bug嗎?

一定有情況是difvalue >0 , macdvalue>0, oscValue >0 的時候呀

isaac 發文於   2020/04/21

如果只留一個condition4 = oscValue >0 ; 也不行

一定要oscValue >0 且 macdValue <0 才行

請幫忙解惑 謝謝 

isaac 發文於   2020/04/21

input: FastLength(12), SlowLength(26), MACDLength(9);

variable: difValue(0), macdValue(0), oscValue(0),i(0),_1st_G_1stBar(0),_1st_G_lastBar(0);

setbarfreq("W");

 

SetTotalBar((maxlist(FastLength,SlowLength,6) + MACDLength) * 4);

 

MACD(weightedclose, FastLength, SlowLength, MACDLength, difValue, macdValue, oscValue);

 

if macdvalue>0 and oscValue>0 and difValue >0 then

begin

Print("date=", date,"dif=",difvalue,"macd=",macdvalue,"osc= ",oscvalue);

ret=1;

end;

這樣是跑得出來的

看起來是在if裡面的repeat 出了問題嗎'?

我有改成while來寫,配上三個>0 也一樣不能執行

XQ小幫手 發文於   2020/04/23

Hi isaac

您好,小幫手這有有收到您的問題了

請您給小幫手一點時間,後續有消息再回覆您,謝謝。

isaac 發文於   2020/04/23

Hi 小幫手, 感謝您的測試

關於settotalbar

理論上我只計算MACD, 應該是26+9 就可以計算出當日K棒的MACD

當日K棒往前讀取35根K棒, 但在選股腳本會從讀取資料的第一根開始運算ret是否為1

所以猜測有錯的部分應該是 第一根K棒如果最大引用範圍不夠大會算不出oscValue[i] 的資料 (if 的內容)

但我後來有加入setbarback (1000) 給予夠大的引用資料也不行

試到最後變成一定要讀取資料夠大 現在給予的是 (26+9)*12 才能計算單一支股票

如果一次回測多支(所有上市上櫃)又不行了(出現!選股策略在此資料範圍沒有篩選出任何商品)

想問說定調"週頻率"的計算時,settotalbar 指的是日K棒數 還是週K棒數?

 

發表回覆
Close