XS自動交易程式碼錯於何處?

  •   275 
  • 最後發表   XQYi  2024 五月 10
XQYi 發文於   2024/04/19

指標轉交易程式碼如下

1.在交易時常有指標並無此進場訊號,但自動交易時卻執行了?

2.程式主要是希望周線圖W在 EMA12/26金叉之後的日期,有出現日線圖D在 EMA12/26的金叉,且在W/D兩個金叉之間,不可以有W的 EMA/12/26的死叉發生時才可進場,如何避免? (在日線圖會有跨頻率周線的金叉死叉訊號多次發生"死-金-死",周線圖上則只有"死")

 

if xf_EMA("D", Close,12) cross Over xf_EMA("D", Close,26) then begin

value1=currentBar;

//Plot1(value1,"日多");

end;

 

if xf_EMA("W", Close,12) cross Over xf_EMA("W", Close,26) then begin

value2=currentBar;

//Plot2(value2,"週多");

end;

 

if xf_EMA("M", Close,12) cross Over xf_EMA("M", Close,26) then begin

value3=currentBar;

//Plot3(value3,"月多");

end;

 

if xf_EMA("d", Close,12) cross under xf_EMA("d", Close,26) then begin

value4=currentBar;

//Plot4(value4,"日空");

end;

 

if xf_EMA("W", Close,12) cross under xf_EMA("W", Close,26) then begin

value5=currentBar;

//Plot5(value5,"週空");

end;

 

if xf_EMA("M", Close,12) cross under xf_EMA("M", Close,26) then begin

value6=currentBar;

//Plot6(value6,"月空");

end;

 

condition1=value6 < value3;//月多之後無月空

condition2=value5 < value2;// 周多之後無周空

condition3=value4 < value1;//日多之後無日空

condition4=value2 < value1 ;//周多之後有日多

 

if  condition2 and condition3 and condition4  then setposition(1,market);

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

交易的商品是股票?還是期貨?

XQYi 發文於   2024/04/19

股票喔

虎科大許教授 發文於   2024/04/19

試著將月的跨頻率的Close改成getField("收盤價","M"),例如,xf_EMA("M", getField("收盤價","M"),12)

週的跨頻率的Close改成getField("收盤價","W") ,例如,xf_EMA("W", getField("收盤價","W"),12)

日的跨頻率的Close改成getField("收盤價","D") ,例如,xf_EMA("D", getField("收盤價","D"),12)

XQYi 發文於   2024/04/19

dear

如果方便的話請加個聯繫方式 a0926634323@gmail.com 或Line ID:ANB0915

經測試

選股出來的股票和原程式相同,與選股回測的股票還是有出入。

與自動交易的回測差異就又更大些,似乎與原來的情況相同對不太上。

指標、選股、選股回測、交易、交易回測 五種情況執行的進場商品,無一 一致。

現況執行出來的商品,有部分與所需指標訊號點不符,最為難

 

以下為指標程式碼,選股和交易都是以它為參考進場

input: A12(12,"12"),A26(26,"26");

if xf_EMA("D", Close,A12) cross Over xf_EMA("D", Close,A26) then begin

value1=currentBar;

Plot1(value1,"日多");

end;

 

if xf_EMA("W", Close,A12) cross Over xf_EMA("W", Close,A26) then begin

value2=currentBar;

Plot2(value2,"週多");

end;

 

if xf_EMA("M", Close,A12) cross Over xf_EMA("M", Close,A26) then begin

value3=currentBar;

Plot3(value3,"月多");

end;

 

if xf_EMA("d", Close,A12) cross under xf_EMA("d", Close,A26) then begin

value4=currentBar;

Plot4(value4,"日空");

end;

 

if xf_EMA("W", Close,A12) cross under xf_EMA("W", Close,A26) then begin

value5=currentBar;

Plot5(value5,"週空");

end;

 

if xf_EMA("M", Close,A12) cross under xf_EMA("M", Close,A26) then begin

value6=currentBar;

Plot6(value6,"月空");

end;

 

//condition1=value3 >= value6  ;//月多之後無月空

condition1=value1 >= value2 and value2 > value5;//日多之前有周多無周空

condition2=value2 >= value5  ;// 周多之後無周空

condition3=value1 >= value4  ;//日多之後無日空

condition4=value1 >= value2  ;//日多之前有周多

 

input:Length(5,"計算期間");

 variable: _Output(0);

 LinearReg(close, Length, 0, value7, value8, value9, value10);

 

 

input: Lengthb(20); SetInputName(1, "布林通道天數");

input: BandRange(2);SetInputName(2, "上下寬度");

input: MALength(10);SetInputName(3, "MA天期");

input: bM(80,"擴展"),bs(60,"緊縮");

variable: up(0), down(0), mid(0);

 up = bollingerband(Close, Lengthb, BandRange);

down = bollingerband(Close, Lengthb, -1 * BandRange);

 

if up - down = 0 then value11 = 0 else value11 = (close - down) * 100 / (up - down);

value12 = average(value11, MALength);

condition5= 判斷式; 

 

MACD(WeightedClose,12,26,9,value13,value14,value15);

condition6=判斷式;

 

if condition1 and  condition2 and condition3 and condition4 and 判斷式 and condition5 

and condition6

then plot7(close,"進場"); 

 

虎科大許教授 發文於   2024/04/20

在腳本第一行加入以下指令,應該就可以得到正確的指標數值。我用5分鐘頻率,需要這麼多根K,若是60分K,就可少一些。

settotalBar(30000);

XQYi 發文於   2024/04/20

經測試
設太大會卡住,設settotalBar(250),與150,結果都有指標上沒訊號但被選出來或回測出來的商品
設settotalBar( )倒是有防呆的用處,讀取資料有一致性,
之前我試過用SetBackBar(150)、SetBarBack(150),因為不清楚兩者差異。

指標程式碼若加上settotalBar(250),日頻率則會造成應有訊號但沒出現(時間太短)

選股中心最小頻率是日,所以我預設執行筆數26*5=130再加20=150

自動交易時也適用日頻率

 

以上都還是有執行結果商品不一致的情況,但最主要還是有商品不符合指標訊號的進場點。

虎科大許教授 發文於   2024/04/21

你有使用的跨頻率資料,準備的資料就要多一些,否則計算的指標數值就有誤。若數據不對,什麼都白搭,包含執行結果商品不一致及商品不符合指標訊號的進場點等等。須先確認指標的數值是否正確。

XQYi 發文於   2024/04/21

都是用日頻率操作,跨頻率週 EMA26,再加布林20日

5*26+20=150日K棒

但搜出來就是對不上才頭痛的

虎科大許教授 發文於   2024/04/21

日頻率之下,

測試xf_EMA("W", GetField("收盤價", "W"),26),我發覺需要settotalbar(600)指標數值才正確。

測試xf_EMA("M", GetField("收盤價", "M"),26),我發覺需要settotalbar(1900)指標數值才正確。

也就是說,你的準備資料至少要1900筆,指標的數值才會正確。

XQYi 發文於   2024/04/21

經測試,僅使用到週頻率 設600,

選股中心

選股 發生連線逾時 卡住

選股回測4/19 無任何資料

選回測4/18-19,交易次數共46筆,4/19有23筆

 

自動交易中心

交易回測4/19=>交易次數44筆

交易回測4/18-19,交易次數共104筆、4/18有74筆、4/19有30筆

 

如果程式碼沒問題,應該是系統問題或那裡設定錯誤(執行設定都是預設直)

 

顯示更多回應 發表回覆
Close