關於回測

  •   36 
  • 最後發表   zx781211  2025 九月 03
zx781211 發文於   2025/08/26

// 簡易測試版:每天開倉,隔天收盤平倉

 

// 宣告變數

Vars: myPos(0);

 

// 取得目前倉位

myPos = Pos(0);

 

// 如果今天沒有持倉 → 進場做多

if myPos = 0 then 

    Buy(1);   // 市價買進 1 口

 

// 如果今天已經持有多單 → 平倉

if myPos = 1 then 

    Sell(1);  // 市價賣出 1 口

因為之前所寫的,回測時都無法正常的開倉及交易
所以寫了一個極為簡單用來測試回測之功能
以下是跑回測之結果

有請各位幫忙解惑.
版本為 個人版3.16.04250730

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

var: intraBarPersist hasOrdered(false);
if isFirstCall("Date") then hasOrdered=false;
if Position = 0 and hasOrdered=false then 
    begin
        Buy(1);   // 市價買進 1 口
        hasOrdered=true;
    end;
if position = 1 and hasOrdered=false then 
    begin
        Sell(1);  // 市價賣出 1 口
        hasOrdered=true;
    end;

XS小編 發文於   2025/09/03

Hello zx781211,

 

小編補充,建議您先閱覽網站上的教學區教學影片,會比較清楚該如何撰寫腳本。

您的腳本中 pos 函數是將輸入的數值轉為正數,要取得部位應該是position。

另外,如果要送出市價單的話,最簡單的方式是後面加上 market,如 setposition(1, market)。

交易函數使用 setposition 會比較容易控管部位。

發表回覆
Close