如何寫不同頻率的布林通道

  •   63 
  • 最後發表   FRANKWU  4 週前
FRANKWU 發文於   2024/08/07

我用10分頻率交易  做多條件確立時  除了10分的布林通道需開口擴大外  30分的布林通道也要開口擴大

我的定義如下  這樣對嗎

input:length(22);

variable:up1(0),down1(0),mid1(0),bbandwidth1(0);

up1 = bollingerband(Close, Length, 2);

down1 = bollingerband(Close, Length, -2);

mid1 = (up1 + down1) / 2;

input:length2(66);

variable:up2(0),down2(0),mid2(0),bbandwidth2(0);

up2 = bollingerband(Close, Length, 2);

down2 = bollingerband(Close, Length, -2);

mid2 = (up2 + down2) / 2;

 

Condition1=up1[0]>up1[1] and up2[0]>up2[1] ;

Condition2=down1[0]<down1[1] and down2[0]<down2[1] ;

Condition3=mid1[0]>mid1[1] and mid2[0]>mid2[1] ;

結果不太對  不知錯在何處 

排序方式: 標準 | 最新
虎科大許教授 發文於   2024/08/07

問題出在跨頻率的前一期數值。up2[1]是30分通道上緣前10分鐘的數值,而非前30分鐘的數值。你需要用xfMin_GetValue("30",up2,1)抓前30分鐘的上緣。此外,在10分鐘頻率下,計算布林通道,不能用up2 = bollingerband(Close, Length, 2);,要改用xfMin相關的函數計算。

FRANKWU 發文於   2024/08/07

我是新手  改成這樣  還是不對   請教授幫我改正

input:length1(22);

variable:up1(0),down1(0),mid1(0),bbandwidth1(0);

up1 = bollingerband(Close, Length1, 2);

down1 = bollingerband(Close, Length1, -2);

mid1 = (up1 + down1) / 2;

 

input:length2(22);

variable:up2(0),down2(0),mid2(0),bbandwidth2(0);

up2 = xfmin_getValue("30",up2,0);

down2 =xfmin_getValue("30",down2,0);

mid2 = (up2 + down2) / 2;

 

Condition1=up1[0]>up1[1] and up2[0]>up2[1] ;

Condition2=down1[0]<down1[1] and down2[0]<down2[1] ;

Condition3=mid1[0]>mid1[1] and mid2[0]>mid2[1] ;

結果不太對  不知錯在何處 

虎科大許教授 發文於   2024/08/08

若主頻率是10分鐘,則計算跨30分鐘頻率的布林指標,需要另外寫跨頻率的布林函數,不能直接用bollingerband函數。XQ內建函數沒有這個函數,需要自己寫。

XS小編 發文於   2024/08/14

Hello FRANKWU,

 

BollingerBand 函數可以直接使用跨頻率的資料來計算。

所以 bollingerband(GetField("Close", "30"), Length, 2); 計算出的就會是30分鐘頻率的布林通道。

xfmin_getValue 是當需要抓取在不同頻率前一根Bar的變數資訊時使用的。

您的寫法是錯誤的,因為 up2 / down2 從頭到尾都是0,而且抓的期數是0,就相當於 up2。

 

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

發表回覆
Close