請教小幫手 "正式"跌破均線寫法

  •   245 
  • 最後發表   小雷  2022 十一月 09
小雷 發文於   2022/11/09

請教小幫手,我想抓前一根30分K棒收盤價"正式"跌破均線後平倉,請問是如下的寫法嗎?

謝謝您

 

if barFreq <> "Min" or barinterval <> 30 then raiseRunTimeError("請使用30分鐘頻率");

if position > 0 then begin

 

setBackBar(100, "30");

value1 = xfMin_XAverage("30",GetField("Close","30"),20);

value2 = xfMin_GetValue("30",close,1);

if value2 < value1 then SetPosition(0, MARKET);  //前一根30分K收盤低於20MA

end;

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

 Hello 小雷,

 

小幫手不太確定您指的 "正式" 是什麼意思。

如果是要K棒結束後才判斷,那麼您可以不要勾選逐筆洗價,或是逐筆洗價狀況下使用上根Bar的數值作判斷。

另外指數移動平均是種需要前期運算值的指標,所以需要設定資料讀取筆數。

您可以將 setbackbar 改為 settotalbar,然後依據頻率換算所需的資料筆數。

不過就腳本看來您使用的頻率和商品頻率相同,那麼其實可以直接使用 xaverage 函數即可。

建議您可以將運算的數值print出來確定是否有如您所想的運作。

小雷 發文於   2022/11/09

謝謝小幫手回覆,不好意思,其實我就是想用逐筆洗價狀況以上一根K棒(30分K)的收盤價作為決定,收盤價在均線以下就平倉,

所以改成下面這樣是正確的嗎?

PS:我的使用的頻率和商品頻率是相同

 

if barFreq <> "Min" or barinterval <> 30 then raiseRunTimeError("請使用30分鐘頻率");

if position > 0 then begin

 

settotalBar(100, "30");

value1 = XAverage("30",GetField("Close","30"),20);

value2 = GetValue("30",close,1);

if value2 < value1 then SetPosition(0, MARKET);  //前一根30分K收盤價低於20MA

end;

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

Hello 小雷,

 

就小幫手所知,應該沒有GetValue這個函數,xaverage也不是這樣寫。

您直接用 [n] 的方式就可以取前n期的資料,並且可以在 XSHelp 上查詢函數如何使用。

小幫手會這樣寫:

if barFreq <> "Min" or barinterval <> 30 then raiseRunTimeError("請使用30分鐘頻率");

settotalBar(100, "30");

 

value1 = XAverage(Close, 20);

condition1 = close < value1;

 

if position > 0 and condition1[1] then SetPosition(0, MARKET);  //前一根30分K收盤價低於20MA

為了避免函數與條件因為在 position > 0  的條件符合時才計算導致錯誤的資訊,會建議您讓其每次腳本運算時都執行。

小雷 發文於   2022/11/09

小幫手謝謝您,我再來弄清楚一點。

感謝幫忙

發表回覆
Close