請問程式哪裡要修改

  •   425 
  • 最後發表   小梯子  2025 五月 29
小梯子 發文於   2025/05/28

 

請問大盤多空對策判斷分數,放在個股日頻率技術分析的副圖上,線形出不來,請問哪裡要修改.

 

if barfreq <> "D" then raiseruntimeerror("僅支援日頻率");

 

variable: XData(0),YData(0),ZData(0),Z(0),count(0);

 

//透過Z的時間安排來決定現在用的是那一根Bar的資料 

if currenttime > 180000 

or currenttime < 083000 then 

Z =0 

else 

Z=1;

 

//每天的分數都先歸零

if date <> date[1] then 

count=0;

 

//外資買超

XData = GetField("外資買賣超金額")[Z];

if xdata > 0 then 

count=count+1;

 

//投信買超

YData = GetField("投信買賣超金額")[Z];

if ydata > 0 then

count=count+1;

 

//自營商買超

ZData = GetField("自營商買賣超金額")[Z];

if zdata > 0 then 

count=count+1;

 

//上漲量超過一半

value6 = GetField("上漲量");

if value6/volume > 0.5 then

count=count+1;

 

//外盤量超過一半

value7 = GetField("外盤量");

if value7/volume>0.5 then

count=count+1;

 

//RSI多頭

value8=rsi(close,5);

value9=rsi(close,10);

if value8 > value9 and value8 < 90 then

count=count+1;

 

//MACD 多頭

variable:Dif_val(0), MACD_val(0), Osc_val(0);

MACD(Close, 12, 26, 9, Dif_val, MACD_val, Osc_val);

if osc_val > 0 then

count=count+1;

 

//MTM  多頭

value10=mtm(10);

if value10 > 0 then

count=count+1;

 

//KD多頭

variable:rsv1(0),k1(0),d1(0);

stochastic(9,3,3,rsv1,k1,d1);

if k1 > d1 and k1 < 80 then

count=count+1;

 

//+DI>-DI

variable:pdi_value(0),ndi_value(0),adx_value(0);

DirectionMovement(14,pdi_value,ndi_value,adx_value);

if pdi_value > ndi_value then

count=count+1;

 

//AR趨勢向上

value14=ar(26);

value15=linearregslope(value14,5);

if value15 > 0 then 

count=count+1;

 

//ACC大於零

value16=acc(10);

if value16 > 0 then 

count=count+1;

 

//TRIX多頭

value17=trix(close,9);

value18=trix(close,15);

if value17 > value18 then

count=count+1;

 

//SAR多頭

value19=SAR(0.02, 0.02, 0.2);

if close > value19 then

count=count+1;

 

//週線大於月線

if average(close,5) > average(close,20) then

count=count+1;

 

//計算平均分數

value11=average(count,10);

plot1(value11,"分數");

Plot2(10,"多");

plot3(5,"空");

 

 

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

你不能使用日頻率,因為日頻率之下date <> date[1]永遠成立,count每次都被歸零。

 

小梯子 發文於   2025/05/28

虎科大許教授 : 再請教一下,不能使用日頻率,因為日頻率之下date <> date[1]永遠成立,count每次都被歸零

這隻程式用在大盤的日頻率,圖形有出來.....

大盤日頻率圖形有出來的基礎下,裏面的條件:外資買超,投信買超,自營商買超,上漲量超過一半,外盤量超過一半.RSI多頭,MACD 多頭,MTM  多頭,KD多頭,+DI>-DI,AR趨勢向上,ACC大於零,TRIX多頭,SAR多頭,週線大於月線,計算平均分數. 都可以寫在個股上,但是個股日頻率的副圖上,線形卻出不來, 請虎科大許教授, 再指導一下,

 

 

 

 

 

虎科大許教授 發文於   2025/05/28

Sorry,問題不是出在date<>date[1],其實在日頻率之下,if date<>date[1] 應該改成 if isFirstCall("D")。

這個指標無法使用在個股,主要因為GetField("外資買賣超金額")、 GetField("投信買賣超金額") GetField("自營商買賣超金額")只可使用於大盤。把它們改成GetField("外資買賣超")、 GetField("投信買賣超") GetField("自營商買賣超")應該就可以了。

小梯子 發文於   2025/05/28

感謝虎科大許教授的指導,我來試試.

小梯子 發文於   2025/05/28

是用 isfirstcall("Date") 此交易日的第一次洗價

還是用 isfirstcall("Realtime") 此交易日進入即時洗價區間的第一次洗價?

小梯子 發文於   2025/05/28

外資 投信 自營商全改為買賣超, 但不論是改為 isfirstcall("Date") 或是改為 isfirstcall("Realtime") , 圖形仍是沒有出現,請再指導一下,

以下是更改的地方

if isFirstCall("DATE") then 

count=0;

 

//外資買超

XData = GetField("外資買賣超")[Z];

if xdata > 0 then 

count=count+1;

 

//投信買超

YData = GetField("投信買賣超")[Z];

if ydata > 0 then

count=count+1;

 

//自營商買超

ZData = GetField("自營商買賣超")[Z];

if zdata > 0 then 

count=count+1;

虎科大許教授 發文於   2025/05/28

根據我的建議修改,測試是可以的。

小梯子 發文於   2025/05/29

虎科大教授 哪個環節錯了,請再指導一下.

if barfreq <> "D" then raiseruntimeerror("僅支援日頻率");

 

variable: XData(0),YData(0),ZData(0),Z(0),count(0);

 

//透過Z的時間安排來決定現在用的是那一根Bar的資料 

if currenttime > 180000 

or currenttime < 083000 then 

Z =0 

else 

Z=1;

 

//每天的分數都先歸零

if isFirstCall("DATE") then 

count=0;

 

 

//外資買超

XData = GetField("外資買賣超")[Z];

if xdata > 0 then 

count=count+1;

 

//投信買超

YData = GetField("投信買賣超")[Z];

if ydata > 0 then

count=count+1;

 

//自營商買超

ZData = GetField("自營商買賣超")[Z];

if zdata > 0 then 

count=count+1;

 

//上漲量超過一半

value6 = GetField("上漲量");

if value6/volume > 0.5 then

count=count+1;

 

//外盤量超過一半

value7 = GetField("外盤量");

if value7/volume>0.5 then

count=count+1;

 

//RSI多頭

value8=rsi(close,5);

value9=rsi(close,10);

if value8 > value9 and value8 < 90 then

count=count+1;

 

//MACD 多頭

variable:Dif_val(0), MACD_val(0), Osc_val(0);

MACD(Close, 12, 26, 9, Dif_val, MACD_val, Osc_val);

if osc_val > 0 then

count=count+1;

 

//MTM  多頭

value10=mtm(10);

if value10 > 0 then

count=count+1;

 

//KD多頭

variable:rsv1(0),k1(0),d1(0);

stochastic(9,3,3,rsv1,k1,d1);

if k1 > d1 and k1 < 80 then

count=count+1;

 

//+DI>-DI

variable:pdi_value(0),ndi_value(0),adx_value(0);

DirectionMovement(14,pdi_value,ndi_value,adx_value);

if pdi_value > ndi_value then

count=count+1;

 

//AR趨勢向上

value14=ar(26);

value15=linearregslope(value14,5);

if value15 > 0 then 

count=count+1;

 

//ACC大於零

value16=acc(10);

if value16 > 0 then 

count=count+1;

 

//TRIX多頭

value17=trix(close,9);

value18=trix(close,15);

if value17 > value18 then

count=count+1;

 

//SAR多頭

value19=SAR(0.02, 0.02, 0.2);

if close > value19 then

count=count+1;

 

//週線大於月線

if average(close,5) > average(close,20) then

count=count+1;

 

//計算平均分數

value11=average(count,10);

plot1(value11,"分數");

Plot2(10,"多");

plot3(5,"空");

虎科大許教授 發文於   2025/05/29

你程式的頻率限制使用日頻率,而技術分析圖表卻選擇還原日頻率。

小梯子 發文於   2025/05/29

原來如此,懂了!

發表回覆
Close