關於累加腳本中連續達成條件的次數

  •   276 
  • 最後發表   Benson_  2023 四月 28
Benson_ 發文於   2023/04/22

小幫手 您好

   我有一個關於累加次數的問題要請教。

   下面的腳本中,我需要計算這五個條件可以連續達成幾個並顯示出來,但如果中間有一個條件沒有達成的話,則停止計數然後把計數的次數顯示出來

例如:達成5個條件的話就顯示5,如果連續達成3個條件,但是第四個條件無法達成的話,則停止計算後面的條件,然後把3回傳顯示

請協助中斷計數這一段要怎麼寫,謝謝。

var:counts1(0),ma1(0), ma2(0), ma3(0), ma4(0), ma5(0);//宣告計數器

counts1=0;//每根bar計算前計數器要歸零

settotalbar(10);  //讀取資料筆數

        ma1 = Closew(0) - open[0] ;

if ma1 < open[0] then counts1=counts1+1;

ma2 = Closew(0) - open[1];

if ma2 < open[1] then counts1=counts1+1;

ma3 = Closew(0) - open[2];

if ma3 < open[2] then counts1=counts1+1;

ma4 = closew(0) - open[3];

if ma4 < open[3] then counts1=counts1+1;

ma5 = closew(0) - open[4];

if ma5 < open[4] then counts1=counts1+1;

outputfield1(counts,0,"顯示連續達成條件數");

XQ小幫手 發文於   2023/04/28

Hello Benson_,

 

依照您腳本的寫法,這邊可以使用迴圈搭配break。

或是也可以用多層的if。

舉例來說:

var:counts1(0),ma1(0), ma2(0), ma3(0), ma4(0), ma5(0);

counts1=0;

for value1 = 0 to 4 begin

    value2 = closew(0) - open[value1];    //value2 就相當於 ma1 ~ ma5

    if value2 < open[value1] then counts1 += 1 else break;

    end;

這樣 counts1 在遇到條件不符合時就會中斷。

 

另外一種則是:

counts1=0;

if ma1 < open[0] then begin

    counts1+=1;

    if ma2 < open[1] then begin

        counts1+=1;

        if ...

            end;

        end;

    end;

這樣就只有在下一層條件符合時才會再多加1。

發表回覆
Close