XS程式問題

  •   422 
  • 最後發表   Jay08957  2024 十月 30
Jay08957 發文於   2024/10/24

// 宣告變數

var: avgP(0);

 

// 計算10日移動平均線

avgP = Average(Close, 10);

 

// 第一根紅K突破10日均線條件

if Close[2] > Open[2] and Close[2] > avgP[2] and Close[3] < avgP[3] then 

    if Close[1] > Open[1] and Close[1] > avgP[1] then  // 第二根紅K條件

        if position = 0 and Open > avgP then  // 第三根K棒開盤時進場條件

            setposition(1, market);  // 市價進場

 

// 賣出條件:當價格跌破10日均線時

if position > 0 and Close < avgP then 

    setposition(0, market);  // 市價出場

 

我到底該如何避免他在同一根K棒一直被重複洗出又買進
而是讓程式碼轉而去回測接下來的K棒
具體可以看台指10/17 5分 K

附加文件

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

一直被你的「10日移動平均線」誤導,以為你是使用日頻率。

看起來你應該是使用5分鐘頻率。不讓同一根K棒買進又賣出,可以不勾逐筆洗價,讓程式每5分鐘執行一次。

當然,可能這樣的處置不符合需求,例如出場就不能等到5分鐘收K時才出場,這時就需要勾逐筆洗價,並利用變數控制。不過,你的問題似乎是進出場條件的問題。5分K的10期平均線很可能與5分收盤價(當根K是即時成交價)糾結,一下子黃金交叉,一下子死亡交叉,因此可以思考修改參數10為較大的數值。

Jay08957 發文於   2024/10/25

請問教授
有什麼代碼可以解決這問題嗎?
5分鐘執行一次有點困擾
畢竟我是守10MA
測試了整晚他就是會在
51 53 56一分鐘內出場又進場

虎科大許教授 發文於   2024/10/25

若不修改10期參數,又想在盤整時不要頻繁交易,就只能加濾網,在盤整時不接受訊號。

XS小編 發文於   2024/10/30

Hello Jay08957,

 

小編補充,您可以使用變數來控制,避免同一根K棒連續交易。

舉例來說:

var: intrabarpersist _cond(0);

 

condition1 = 進場條件...;

condition2 = 出場條檢...;

 

if condition1 and _cond <> currentbar then setposition(1, market);

if condiiton2 then begin

    _cond = currentbar;

    setposition(0, market);

    end;

 

這樣 _cond 就會記錄出場的K棒編號,並用來在進場時判斷是否有不同 (相同的話代表還在同一根K棒上)。

發表回覆
Close