奇怪 回測只交易一 次

  •   164 
  • 最後發表   花花草草  2024 六月 02
花花草草 發文於   2024/05/26

Input: Length(10,"天數");

Input: Multiplier(3,"ATR倍數"); 

var: v1(0), v2(0);

 

if currentBar = 1 then begin

    v1 = 99999;

    v2 = 0;

end;

 

if currentBar > 1 then begin 

    if close > v1 then begin 

        v1 = close + atr(Length) * Multiplier;

    end;

    

    if close < v2 then begin 

        v2 = close - atr(Length) * Multiplier;

    end;

end;

 

Var: Condition1Flag(close > v1);

Var: Condition2Flag(close < v2);

 

if Position <= 0 and filled <= 0 and Condition1Flag then begin

    SetPosition(1, MARKET);  // 以市價買進

end;

 

if Position >= 0 and filled >= 0 and Condition2Flag then begin

    SetPosition(-1, MARKET);  // 以市價賣出

end;

 

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

雖然你預設V1與V2都是0,但在跑第一根K棒時,你卻讓V1等於99999。這造成跑後面K棒時,close > v1,亦即close>99999及close<v2,亦即close小於0,這兩個條件永遠不成立。

回測只會成交一筆,應該是你採用日資料,第一根K棒洗價時,雖然V1被改為99999,但因為沒有加intrabarpersist,所以第二個Tick進來時,它恢復成為預設的0,因此Condition1Flag為True,所以買進一張。當第一根K棒跑完之後,v1就變成99999,後面就所有條件都不會符合,所以沒有交易。

  • 按讚來自於
  • 0973555633
花花草草 發文於   2024/05/27

謝謝您 好難搞

花花草草 發文於   2024/05/27

所以v2不能是0

XS小編 發文於   2024/05/30

Hello 花花草草,

 

小編建議您先觀看網站上的教學區教學影片,裡面有XS語法的基礎和應用可以閱覽。

 

如果想看書的話,可以參考 三週學會程式交易

 

除此之外,在腳本中使用 print 函數讓腳本運作時印出相關數值確認,會比較容易理解XS腳本如何運作的。

 

感謝 虎科大許教授 的熱心回覆。

  • 按讚來自於
  • 0973555633
花花草草 發文於   2024/06/01

Vars: Volumestamp(0);  // 宣告 Volumestamp 變數並設定預設值為 0

 

Input: Length(10,"天數");

Input: Multiplier(3,"ATR倍數"); 

 

variable: intrabarpersist v1(0);         //計數器

variable: intrabarpersist v2(0);         // 另一個變數的宣告,如果需要的話

 

Volumestamp = q_DailyVolume;

 

if Date > date[1] then 

    v1 = 0; // 開盤那根要歸0次數

 

if q_tickvolume > 100 then 

    v1 += 1; // 量夠大就加1次

 

if v1 > 10  then begin

    ret = 1;

    v1 = 0;

end;

 

Var: Condition1Flag(close > v1);

Var: Condition2Flag(close < v2);

 

if Position <= 0 and filled <= 0 and Condition1Flag then

    SetPosition(1, MARKET);  // 以市價買進

 

if Position >= 0 and filled >= 0 and Condition2Flag then

    SetPosition(-1, MARKET);  // 以市價賣出

 

花花草草 發文於   2024/06/01

在「交易」腳本中無法使用「ret」。

請問有替代ret語法嗎

 

虎科大許教授 發文於   2024/06/02

交易腳本的警示用Alert。

  • 按讚來自於
  • 0973555633
發表回覆
Close