選股結果會有一些條件外的

  •   190 
  • 最後發表   散財橘子  2023 一月 12
散財橘子 發文於   2023/01/08

找某段時間跳空

if CountIf (Low>(High[1]*1.03),15) >= 1  then begin  //15天內某天的低點大於前天高點

 

    value1 = getfield("Open", "D");

 

    value2 = getfield("High", "D");

 

    value3 = getfield("Low", "D");

 

    value7 = getfield("Close", "D"); //跳空當天開高低收

 

end;

  

ret= Value5>=value4 and Value5>=value6 and Value5>= value3 ;

 

outputfield(1, Value1, 2, "開");

outputfield(2, Value2, 2, "高");

outputfield(3, Value3, 2, "低");

outputfield(4, Value7, 2, "收"); 

 

  出來的結果都怪怪 哪裡錯了嗎

 

排序方式: 標準 | 最新
jo 發文於   2023/01/08

value4  Value5  value6 未定義

散財橘子 發文於   2023/01/08

有定義 沒po出來

value4 = average(C,13); //日5均

value5 = average(C,100); //日100均

Value6 = GetField("收盤價","D"); //今天收盤

jo 發文於   2023/01/08

有定義 沒po出來

value4 = average(C,13); //日5均

value5 = average(C,100); //日100均

Value6 = GetField("收盤價","D"); //今天收盤

ret= 

Value5>=value4 and Value5>=value6 and Value5>=value3 and CountIf (Low>(High[1]*1.03),15) >= 1;

散財橘子 發文於   2023/01/09

感謝大大指導 !! 

 value7 = getfield("Close", "D"); 不知道怎麼記錄跳空那天低點

 

 

散財橘子 發文於   2023/01/10

settotalbar(30);

value7 = average(C,13); //日均

value6 = average(C,100); //日均

Value5 = GetField("收盤價");

 

 

if  LoW>(High[1]*1.03)   then

 

value100 = 0 else value100 += 1;

    

 

if value100 > 0 then 

    value3 = Low[value100];

ret= Value5>=value7 and Value5>=value6 and Value5>= value3 ;

 

 

outputfield(3, Value3, 2, "低");

outputfield1(DATE[value100],"跳空日");

 

重寫成功了可是結果會有一些怪怪的

XQ小幫手 發文於   2023/01/11

Hello 散財橘子,

 

if CountIf (Low>(High[1]*1.03),15) >= 1  then begin  //15天內某天的低點大於前天高點

    value1 = getfield("Open", "D");

    value2 = getfield("High", "D");

    value3 = getfield("Low", "D");

    value7 = getfield("Close", "D"); //跳空當天開高低收

    end;

 

您這種寫法抓到的會是腳本運作條件符合當天的開高收低,而不是跳空那天的開高收低。

可以參考 countif 的說明。

 

一種比較單純的方法是用迴圈向前檢查15天,看是否有哪天低點大於前天高點。

舉例來說:

value2 = 0;

value3 = 0;

value4 = 0;

value5 = 0;

for value1 = 0 to 14 begin

    if low[value1] > (high[value1+1] * 1.03) then begin

        value2 = getfield("Open", "D")[value1];

        value3 = getfield("High", "D")[value1];

        value4 = getfield("Low", "D")[value1];

        value5 = getfield("Close", "D")[value1];

        break;

        end;

    end;

這樣只要過去15天內有條件符合的時候,就會記錄當根Bar的開高收低。

而沒有符合的話,變數則會維持0。

散財橘子 發文於   2023/01/11

Hello 散財橘子,

if CountIf (Low>(High[1]*1.03),15) >= 1  then begin  //15天內某天的低點大於前天高點

    value1 = getfield("Open", "D");

    value2 = getfield("High", "D");

    value3 = getfield("Low", "D");

    value7 = getfield("Close", "D"); //跳空當天開高低收

    end;

您這種寫法抓到的會是腳本運作條件符合當天的開高收低,而不是跳空那天的開高收低。

可以參考 countif 的說明。

一種比較單純的方法是用迴圈向前檢查15天,看是否有哪天低點大於前天高點。

舉例來說:

value2 = 0;

value3 = 0;

value4 = 0;

value5 = 0;

for value1 = 0 to 14 begin

    if low[value1] > (high[value1+1] * 1.03) then begin

        value2 = getfield("Open", "D")[value1];

        value3 = getfield("High", "D")[value1];

        value4 = getfield("Low", "D")[value1];

        value5 = getfield("Close", "D")[value1];

        break;

        end;

    end;

這樣只要過去15天內有條件符合的時候,就會記錄當根Bar的開高收低。

而沒有符合的話,變數則會維持0。

  •  感謝小幫手 
  • 我後來有重寫 
  • settotalbar(30);
  • value7 = average(C,13); //日均
  • value6 = average(C,100); //日均
  • Value5 = GetField("收盤價");
  •  
  •  
  • if  LoW>(High[1]*1.03)   then
  •  
  • value100 = 0 else value100 += 1;
  •     
  •  
  • if value100 > 0 then 
  •     value3 = Low[value100];
  • ret= Value5>=value7 and Value5>=value6 and Value5>= value3 ;
  •  
  •  
  • outputfield(3, Value3, 2, "低");
  • outputfield1(DATE[value100],"跳空日");
  •  
  • 重寫成功了可是結果會有條件外的

散財橘子 發文於   2023/01/11

 用小幫手 提供的也是會有錯誤

value2 = 0;

 

value3 = 0;

 

value4 = 0;

 

value5 = 0;

 

value6 = average(C,13); //日均

value7 = average(C,100); //日均

Value8 = getfield("Close", "D");

 

for value1 = 0 to 14 begin

 

    if low[value1] > (high[value1+1] * 1.03) then begin

 

        value2 = getfield("Open", "D")[value1];

 

        value3 = getfield("High", "D")[value1];

 

        value4 = getfield("Low", "D")[value1];

 

        value5 = getfield("Close", "D")[value1];

 

        break;

 

        end;

 

    end;

 

ret= Value8>=value7 and Value8>=value6 and Value8>= value4 ;

 

outputfield(1, Value2, 2, "開");

outputfield(2, Value3, 2, "高");

outputfield(3, Value4, 2, "低");

outputfield(4, Value5, 2, "收");

outputfield5(DATE[value1],"跳空日");

 

XQ小幫手 發文於   2023/01/12

Hello 散財橘子,

 

您的 ret 條件是  Value8>=value7 and Value8>=value6 and Value8>= value4;

如果過去15天沒有達成 low[value1] > (high[value1+1] * 1.03) 的話,那麼value2 ~ value4 就會是0, value 8 >= 4 也一定符合。

建議可以將條件修改為 ret= Value8>=value7 and Value8>=value6 and Value8>= value4 and value4 <> 0;

這樣就可以避開15天沒有達成跳空狀況的商品。

發表回覆
Close