如何同時執行兩個宣告

  •   399 
  • 最後發表   文德  2025 四月 08
文德 發文於   2024/09/17

請教各位大大:

要如何編譯修改以下程式才能同時宣告多個參數不起衝突同時執行並同時回傳顯示天數及KD值

setbarfreq("D");

input:D(10, "天期數"),tank(5,"買超天數");

variable: Sum1(0),Sum2(0),Sum3(0);

settotalbar(D);

value1 = 0; //  初始化

if IsLastBar = false then return;//IsLastBar 為 「false/否」時執行 return

//  統計在10日內投信買超的天數

for value100 = 0 to D - 1

    if GetField("投信買賣超")[value100]>0 then

    value1 += 1;

condition1= TrueAny(GetField("投信買賣超")>0 ,D);

//  10日投信買超

//if condition1 then ret = 1;

if value1 >= tank then ret = 1;

 

// KD指標, K值由下往上穿越D值

input: Length(9), RSVt(3), Kt(3);

variable: rsv(0), k(0), _d(0);

SetTotalBar(maxlist(Length,6) * 3);

SetInputName(1, "天數");

SetInputName(2, "RSVt權數");

SetInputName(3, "Kt權數");

Stochastic(Length, RSVt, Kt, rsv, k, _d);

Ret = k crosses above 75;

 

排序方式: 標準 | 最新
虎科大許教授 發文於   2024/09/17

呼叫多次SetTotalBar函數時,只有最後一次呼叫有效,前面的都會被蓋過。

文德 發文於   2024/09/18

沒有其他方式函數可以用嗎

虎科大許教授 發文於   2024/09/18

你這是兩個腳本,有兩個ret=1,若寫在一起,也會只有最後一個ret=1被執行。可以把兩個腳本寫成一個,只用一個ret=1。同時使用兩個最大的settotalbar 數值。

穩穩賺 發文於   2025/03/31

所以 請問教授使用 KD 同1分K下, 用這樣程式定義想"個別抓取" Length(9/18天數), RSVt(權數),  Kt(權數) 取得 _K與_D2的數值

是不是一樣 "呼叫多次SetTotalBar函數時,只有最後一次呼叫有效,前面的都會被蓋過。"?

或是 有其他的解決方式 ?

// 宣告參數

input: Length1(9, "計算期數"), RSVt1(3, "RSVt權數"), Kt1(3, "Kt權數"), LowBound1(25, "低檔區"), HighBound1(75, "高檔區");

variable: _rsv1(0), _k1(0), _d1(0);

 

input: Length2(18, "計算期數"), RSVt2(3, "RSVt權數"), Kt2(3, "Kt權數"), LowBound2(25, "低檔區"), HighBound2(75, "高檔區");

variable: _rsv2(0), _k2(0), _d2(0);

 

// 資料讀取筆數設定

SetTotalBar(maxlist(Length1,6) * 3 + 8);

Stochastic(Length1, RSVt1, Kt1, _rsv1, _k1, _d1);

 

SetTotalBar(maxlist(Length2,6) * 3 + 8);

Stochastic(Length2, RSVt2, Kt2, _rsv2, _k2, _d2);

 

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

已經說過,同一個腳本,只有最後一個SetTotalBar有效,下面第一個是無效的。

SetTotalBar(maxlist(Length1,6) * 3 + 8); //筆數較少

SetTotalBar(maxlist(Length2,6) * 3 + 8); //筆數較多

你可以只宣告筆數比較多的第二個SetTotalBar。第一個是白寫的。

穩穩賺 發文於   2025/03/31

感謝教授解說 ~~ 

XS小編 發文於   2025/04/08

Hello 穩穩賺,

 

小編補充, SetTotalBar 函數有調整過,目前會採用其中最大數值作為最終的K棒總數。

所以您可以多次呼叫該函數,但只有最大的那一個會被使用。

發表回覆
Close