平均振幅要如何寫比較好呢

  •   1.9K 
  • 最後發表   任任任  2023 九月 11
任任任 發文於   2021/12/12

請教小幫手,下面寫的十日平均振幅哪個地方寫錯了阿

Input: PriceLimit1(10,"股價下限");

Input: PriceLimit2(25,"股價上限");

Input: VolumeLimit1(200,"十日均量下限");

Input: VolumeLimit2(20000,"十日均量上限");

 

if Close> PriceLimit1 and Close< PriceLimit2 //開盤價大於10小於25

then begin

if Average(Volume,10)> VolumeLimit1 and Average(Volume,10)< VolumeLimit2 //十日均量大於200小於20000

then begin

if Average((High-Low)*100/Close[1],10)> 2

then ret=1;

SetOutputName1("十日均量");

OutputField1(Average(Volume,10));

SetOutputName2("十均振幅");

OutputField2(Average(High-Low/Close[1],10));

end;

end;

 

選股條件有個:近幾日至少幾日振幅都大於幾%

這類型的腳本要怎麼練習寫比較好呢?

感謝

 

排序方式: 標準 | 最新
bowen 發文於   2021/12/12

給你參考

input:w1(0,"幾日振幅")
     ,w2(0,"幾%");

var:i(0),x(0);
x=0;

for i = 0 to w1-1 begin

x += (getField("High","D")[i]-getField("Low","D")[i])/getField("Close","D")[i+1];

end;

x = x/w1;

if x >= w2/100 then ret=1;

任任任 發文於   2021/12/13

感謝幫忙,小弟我想請教關於i=0 to w1-1這個語法,實際上的意涵是從N天前計算到今日or今日回推到N天前啊?

謝謝~~

bowen 發文於   2021/12/13

比如要算5日均振福 w1=5  

(getField("High","D")[0]-getField("Low","D")[0])/getField("Close","D")[1]+

(getField("High","D")[1]-getField("Low","D")[1])/getField("Close","D")[2]+

(getField("High","D")[2]-getField("Low","D")[2])/getField("Close","D")[3]+

(getField("High","D")[3]-getField("Low","D")[3])/getField("Close","D")[4]+

(getField("High","D")[4]-getField("Low","D")[4])/getField("Close","D")[5]  / 5

等於 用迴圈 i=0 to 5-1  這樣OK嗎

bowen 發文於   2021/12/13

這樣寫 應該是最簡單

input:w1(0,"幾日振幅")
     ,w2(0,"幾%");

var:x(0);

x = average((getField("High","D")-getField("Low","D"))/getField("Close","D")[1],w1);

if x >= w2/100 then ret=1;

  • 按讚來自於
  • 陳柏任
任任任 發文於   2021/12/13

懂懂懂,熊熊忘記很重要很基礎的語法[1]是昨天[2]是前天......

感謝Bowen16幫忙

  • 按讚來自於
  • Bowen16
XQ小幫手 發文於   2021/12/16

Hello 任任任,

 

小幫手看了一下,您的平均振幅計算方式沒有錯,是 Average((High-Low)*100/Close[1],10)。 

選股是預設日頻率,所以不需特別使用 GetField,若是使用其他頻率的話則需要使用 GetField 來取得日頻率資訊。

不過在outputfield2時您沒有乘上 100,可能是這樣導致您覺得有誤。

另外您前面的判斷是可以縮減成一個 if 即可。

附上選股中心匯出檔供您參考,裡面有包含 bowen 提供的計算方法來比對,3個都是相同的。

 

另外關於 近幾日至少幾日振幅都大於幾% 要怎麼寫,您可以參考 TrueCount 函數。

舉例來說,近5日10均振福大於2%至少3次的話可以這樣寫:

if truecount(Average((High-Low)*100/Close[1],10) > 2, 5) >= 3 then ret = 1; 

 

感謝 bowen 的熱心回覆。

附加文件

  • 按讚來自於
  • 陳柏任
2330凱文 發文於   2023/09/02

請教這個選股邏輯不會選出ETF嗎?

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

Hello, 2330凱文.

選股設定中,可以在"範圍:"選取"普通股與ETF(系統)"這個範圍

就可以選出ETF。

 

謝謝。

附加文件

發表回覆
Close