變數記錄問題

  •   214 
  • 最後發表   阿林  2023 十二月 12
阿林 發文於   2023/11/27

小幫手您好 以下是我腳本

if barfreq <> "Min" or Barinterval <> 2 then RaiseRuntimeError("請設定頻率為2分鐘");

var:ss(0);

value1 = GetQuote("振幅");

if CurrentTime >= 101500 and value1 <= 2.5 and GetField("最高價", "D") <= GetField("收盤價", "D")[1]*0.97 and

   GetField("最低價", "D") >= GetField("收盤價", "D")[1]*0.96 and ss <= 1 then ss += 1;

if CurrentTime >= 101500 then begin

if ss >= 1 and close <= close[1]*0.99 and volume >= 100 then ret = 1;end;

請問ss這個變數要怎樣寫 才不會close <= close[1]*0.99這個條件成立了 

但是不管ss這個變數只限制他增加一次或是增加多次 都有可能在

close <= close[1]*0.99這個條件成立之前變成不是我要的條件

我希望在close <= close[1]*0.99這個條件成立之前 

能夠確認我ss這個變數的條件是成立的這樣

就是close <= close[1]*0.99這根兩分k棒 在條件成立之前

今天開盤到前一根兩分k棒這中間的時間確定是有達到ss這個變數的條件這樣

再麻煩小幫手了!!

 

 

排序方式: 標準 | 最新
XQ小幫手 發文於   2023/11/29

 Hello 阿林,

 

小幫手不太確定您想表達什麼。

不過您的腳本中 ss 並沒有重置,所以如果要確保前日和101500之前的條件不會影響到今日 ss 的數值的話,建議您可以在 101500 之前重置 ss。

 

舉例來說:

if currenttime < 101500 then ss = 0

else if CurrentTime >= 101500 and value1 <= 2.5 and GetField("最高價", "D") <= GetField("收盤價", "D")[1]*0.97 and GetField("最低價", "D") >= GetField("收盤價", "D")[1]*0.96 then ss += 1;

 

這樣之前的 ss 的數值就不會影響當日的運算。

阿林 發文於   2023/12/01

小幫手您好 我表達得不好 我換個方式說

現在是10點半過後 我頻率使用兩分鐘 

然後如果有兩分k振幅超過2%請電腦通知我

但是在這一根兩分k振幅出現2%之前的前一根

到開盤 也就是今天開盤到這一根出現振幅

有2%的兩分k之前的當日振幅 我希望要

小於1%  請問要怎麼寫呢

 

 

 

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

Hello 阿林,

 

小幫手不確定您要的是2分K的振幅,還是當日的振幅。

請注意 振幅 欄位回傳的是當日的振幅。

如果您要計算2分K的振幅,可以用 (high - low) / close[1] * 100 來作替代。

 

如果是要 103000 以前的振幅小於1%的話,您可以用變數來記錄,舉例來說:

if issessionfirstbar then value1 = 0;    //每日重置value1

if time < 103000 and GetQuote("振幅") > 1 then value1 = 1;   //如果103000以前震幅有大於1的話 value1 就會記錄

if time >= 103000 and value1 = 0 and GetQuote("振幅") > 2 then ret = 1;    //如果103000以前振福沒有大於1,且103000以後震幅大於2的話警示

 

網站上有教學區,裡面有XS語法的基礎和應用可以閱覽。

阿林 發文於   2023/12/07

小幫手 感謝回答 但我上述還有個問題是 

如果使用兩分鐘頻率 例如今天開盤然後到了11點的那根兩分k

出現2%的振幅之前 我希望日振幅<1.5% 要怎麼寫

他才不會當日振幅去計算到11點的那根兩分k的振幅

也就是例如今天開盤到11點出現2%振幅的兩分k之前

當日振幅只有1% 可是要是到了11點出現2%的振幅的兩分k了

那這樣日振幅不就也會增加上去 要怎樣才可以寫個變數

讓他只記錄今天開盤到出現單根振幅2%以上的兩分k之前的日振幅呢

也就是怎樣紀錄例如現在出現單根振幅2%的兩分k了 那要怎樣紀錄

這根出現單根振幅2%的兩分k的前一根兩分k到開盤這段時間的日振幅呢

感謝小幫手!!

 

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

Hello 阿林,

 

小幫手建議您先閱覽教學區,裡面有XS語法的基礎和應用。

 

上面已經給您了範例,只需要修改時間和百分比即可。

if issessionfirstbar then value1 = 0;    //每日重置value1

if time < 110000 and GetQuote("振幅") > 1.5 then value1 = 1;   //如果110000以前震幅有大於1.5的話 value1 就會記錄

if time >= 110000 and value1 = 0 and GetQuote("振幅") > 2 then ret = 1;    //如果110000以前振福沒有大於1.5,且110000以後震幅大於2的話警示

 

if time < 110000 and GetQuote("振幅") > 1.5 then value1 = 1; 這行腳本就會判斷在11點以前振福如果有大於1.5%的話,value1就會變成1。

若變成1的話後面的11點以後要大於2%就算符合了也不會警示,因為該條件同時要求 value1 要等於0。

 

小幫手並沒有提供撰寫腳本的服務。

發表回覆
Close