回測跟我想的買賣點不一樣

  •   36 
  • 最後發表   mina2310  23 小時前
mina2310 發文於   2025/10/26

我在指標的地方寫了買賣點   然後我把它變成交易的模式去跑回測   但買賣點不同   不明白哪裡有錯誤了

 

已帆宣為例  我的指標上面沒有出現回測報告裡面序號27的交易  不明白為什麼回測裡面卻有   求解

 

 

截圖圖片

截圖圖片

指標程式碼如下

 

value200 = GetSymbolField("Underlying", "收盤價");

 

 

variable: intrabarpersist position_1(0);

condition5=false;

 

value1=average(GetSymbolField("Underlying", "收盤價"),5);

value2=average(GetSymbolField("Underlying", "收盤價"),20);

value3=average(GetSymbolField("Underlying", "收盤價"),60);

value43=average(GetSymbolField("Underlying", "收盤價"),43);

value4=average(GetSymbolField("Underlying", "收盤價"),87);

 

value5=average(GetSymbolField("Underlying", "收盤價"),10);

 

//大盤

value30=getsymbolField("TSE.TW","close","d");

value70=getsymbolField("otc.TW","close","d");

 

if value30>average(value30,43)  and value70>average(value70,43) then condition5=true; 

 

//現股均線向上

condition1=value1>value1[1] ;

condition2= value200>value2 and value200>value3 and value200>value4 and value200>value43;   //站在所有均線上

condition3=value200>value1; 

condition33= GetSymbolField("Underlying", "收盤價")[1]< average(GetSymbolField("Underlying", "收盤價")[1],5) ;  

//condition4=close<140 and value300>90;

 

 

condition100=condition1 and condition2 and condition3  and condition5 ;

condition200=value200<value5;

 

if position_1=0 then

begin 

if condition100 then 

begin

plot1(close,"Buy") ;  

position_1=1 ;

end;

end

else

begin

if condition200 then 

begin

plot2(close,"sell"); 

position_1=0;

end;

end;

 

交易程式碼如下

 

 

value200 = GetSymbolField("Underlying", "收盤價");

 

 

 

condition5=false;

 

value1=average(GetSymbolField("Underlying", "收盤價"),5);

value2=average(GetSymbolField("Underlying", "收盤價"),20);

value3=average(GetSymbolField("Underlying", "收盤價"),60);

value43=average(GetSymbolField("Underlying", "收盤價"),43);

value4=average(GetSymbolField("Underlying", "收盤價"),87);

 

value5=average(GetSymbolField("Underlying", "收盤價"),10);

 

//大盤

value30=getsymbolField("TSE.TW","close","d");

value70=getsymbolField("otc.TW","close","d");

 

if value30>average(value30,43)  and value70>average(value70,43) then condition5=true; 

 

//現股均線向上

condition1=value1>value1[1] ;

condition2= value200>value2 and value200>value3 and value200>value4 and value200>value43;   //站在所有均線上

condition3=value200>value1; 

condition33= GetSymbolField("Underlying", "收盤價")[1]< average(GetSymbolField("Underlying", "收盤價")[1],5) ;  

//condition4=close<140 and value300>90;

 

 

condition100=condition1 and condition2 and condition3  and condition5 ;

condition200=value200<value5;

 

 

variable: intrabarpersist position_1(0);

if position_1=0 then

begin 

if condition100 then 

begin

position_1=1 ;

end;

end

else

begin

if condition200 then 

begin 

position_1=0;

end;

end;

 

if condition100 then setposition(1);

 

if position>0 and condition200 then setposition(0);

 

 

 

排序方式: 標準 | 最新
虎科大許教授 發文於   2025/10/27

(1)你可以把所有的Condition都Print出來,確認每根K棒的條件。

(2)指標與交易的結果不同,主要來自洗價。日K的歷史K棒指標都是非逐筆洗價,均線都用收盤價計算,但交易腳本的日線都用逐筆洗價且是用1分鐘數據洗價,在回測時1分鐘算出來的均線可能已經符合條件,但收盤時可能不符合,這就會造成兩者有差異。

mina2310 發文於   2025/10/27

謝謝許教授的回答

1) 不好意思   小的我看了半天print怎麼用 還是不太了解  請問print是要使用在指標腳本內還是交易腳本內? 另外 我其實不明白要print出來甚麼資料  看到網路上的教學都是print value出來   另外我看網路上print 出來時 小圖標會改變   我的都沒有改變  不知道為什麼?

 

2)所以說 指標跟交易都會不一樣這件事沒辦法解決嗎?

 

截圖圖片

 

虎科大許教授 發文於   2025/10/27

(1)指標腳本及交易腳本都可以用Print。Print(currentTime, condition1, condition2);

(2)以5期均線而言,可用過去4期收盤價與本期最高價算5期的平均。其他均線比照辦理。

mina2310 發文於   2025/10/28

那為什麼我用最簡單的範本 執行那邊都沒

截圖圖片

有任何數據?

 

 

 

虎科大許教授 發文於   2025/10/28

若你將指標腳本加入指標,就可以在上述的資料夾裡面看到檔案。

發表回覆
Close