請問我這樣寫有錯嗎?回測好像怪怪的?

  •   279 
  • 最後發表   阿二  2022 五月 25
阿二 發文於   2022/05/22

 

以3-8均線為主 黃金交叉買進一口 死亡交叉平倉 順便做空一口 以此類推

另外:有斐波那契擴展線 編譯碼嗎?

 

 

 

// 宣告參數

input: Shortlength(3,"短期均線期數"), Longlength(8,"長期均線期數");

 

// 資料讀取筆數設定

settotalbar(8);

setbarback(maxlist(Shortlength,Longlength,6));

 

// 多方進場策略:短期均線「黃金」交叉長期均線。出場策略:長期均線「死亡」交叉短期均線。

if Average(Close,Shortlength) Cross Above Average(Close,Longlength) then setposition(1);

if Average(Close,Shortlength) Cross Below Average(Close,Longlength) then setposition(0);

 

{

範例: 

 

當發生做多情境時, 買進1口

做多後發生出場情境時, 多單出場(變成空手)

}

 

var: 

long_condition(false), { 是否做多 }

exit_long_condition(false); { 是否多單出場 }

 

Position=0時判斷是否要做多, 

Position=1時判斷是否要出場 

}

if Position = 0 and long_condition then SetPosition(1);

if Position = 1 and exit_long_condition then SetPosition(0);

 

 

 

// 空方進場策略:長期均線「死亡」交叉短期均線。出場策略:短期均線「黃金」交叉長期均線。

if Average(Close,Shortlength) Cross Below Average(Close,Longlength) then setposition(-1);

if Average(Close,Shortlength) Cross Above Average(Close,Longlength) then setposition(0);

 

{

範例: 

 

當發生做空情境時, 賣出1口(做空)

做空後發生出場情境時, 空單出場(變成空手)

}

 

var: 

short_condition(false), { 是否做空 }

exit_short_condition(false);{ 是否空單出場 }

 

Position=0時判斷是否要做空, 

Position=-1時判斷是否要回補 

}

if Position = 0 and short_condition then SetPosition(-1);

if Position = -1 and exit_short_condition then SetPosition(0);

XQ小幫手 發文於   2022/05/25

Hello 阿二,

 

網站有教學區,小幫手建議您可以先閱讀裡面的文章,會對XS語法的基礎和應用有些了解。

如果您下面的程式碼全都是一個腳本的話,首先不同SetPosition同時觸發時,只會執行第一個。

所以您基本上只會執行到

if Average(Close,Shortlength) Cross Above Average(Close,Longlength) then setposition(1);

if Average(Close,Shortlength) Cross Below Average(Close,Longlength) then setposition(0);

這兩行。

第二,您重複令 long_condition 等 True/False 變數,但沒有條件給其判斷,所以該變數會一直都是False。

 

如果您是要 黃金交叉買進一口 死亡交叉平倉 順便做空一口 的話,其實可以這樣寫:

input: Shortlength(3,"短期均線期數"), Longlength(8,"長期均線期數");

 

// 資料讀取筆數設定

settotalbar(8);

setbarback(maxlist(Shortlength,Longlength,6));

 

// 多方進場策略:短期均線「黃金」交叉長期均線。出場策略:長期均線「死亡」交叉短期均線。

if Average(Close,Shortlength) Cross Above Average(Close,Longlength) then setposition(1);

if Average(Close,Shortlength) Cross Below Average(Close,Longlength) then setposition(-1);

這樣策略就會在黃金交叉時買進1張,死亡交叉時放空1張。

 

至於斐波那契擴展線內建的腳本並沒有此項功能,小幫手簡單寫了個範例函數供您參考。

其會計算出過去一段時間內的最大值與最低值和之間的斐波那契線。

假設是用在指標上的話,可以這樣使用:

fibonacci(10, value1, value2, value3, value4, value5, value6);

plot1(value1);

plot2(value2);

plot3(value3);

plot4(value4);

plot5(value5);

plot6(value6);

附加文件

發表回覆
Close