麻煩幫我看進場時我敲定的數值,這樣編寫是否正確

  •   299 
  • 最後發表   奇怪的人  2025 三月 07
奇怪的人 發文於   2025/03/07

幫我看一下

我進場時會要固定我的進場價entryP

以及用entryP計算出來得停利停損winCL跟lossCL

 

在編譯上沒問題

不過讓交易系統下去跑

感覺是錯的

麻煩幫我看一下哪裡出問題

//--------------------------------------計算開始------------------------



var: winCL(0), lossCL(0), entryP(0);

input: QWE(2, "停利停損倍數");



// 條件判斷(進場)

condition1 = trueall(trueAll(xfmin_EMA("10",close,6) > xfmin_EMA("10",close,24) and xfmin_EMA("60",close,6) > xfmin_EMA("60",close,24) , 2), 2);

condition2 = trueall(trueAll(xfmin_EMA("10",close,6) < xfmin_EMA("10",close,24) and xfmin_EMA("60",close,6) < xfmin_EMA("60",close,24) , 2), 2);



if position=0  and filled = 0 then begin

if condition1 then begin//condition1

  entryP = FilledRecordPrice(FilledRecordCount);

  setposition(10, market, label:="【多單】 - 進場");

  winCL = (entryP + 2*QWE*20);

  lossCL = (entryP - 1*QWE*20);

  value12 = winCL-entryP ;

end else

if condition2 then begin//condition2

  entryP = FilledRecordPrice(FilledRecordCount);

  setposition(-10, market, label:="【空單】 - 進場");

  winCL = (entryP - 2*QWE*20);

  lossCL = (entryP + 1*QWE*20);

  value12 = entryP - winCL ;

end;

end;







// **停損或停利出場**

if position > 0  and filled > 0 then begin

    // 當價格達到分批獲利1時

    if position = 10 and close cross Over entryP + 0.2 * value12 then begin

        setposition(8, market, label:="【多單】 - 分批獲利1");

        // 停損位置不變

    end 

    // 當價格達到分批獲利2時

    else if position = 8 and close cross Over entryP + 0.4 * value12 then begin

        setposition(6, market, label:="【多單】 - 分批獲利2");

        lossCL = entryP;  // 停損設定為初始進場價格

    end 

    // 當價格達到分批獲利3時

    else if position = 6 and close cross Over entryP + 0.6 * value12 then begin

        setposition(4, market, label:="【多單】 - 分批獲利3");

        lossCL = entryP + 0.2 * value12;  // 停損設定為第一次分批獲利的價格

    end 

    // 當價格達到分批獲利4時

    else if position = 4 and close cross Over entryP + 0.8 * value12 then begin

        setposition(2, market, label:="【多單】 - 分批獲利4");

        lossCL = entryP + 0.4 * value12;  // 停損設定為第二次分批獲利的價格

    end 

    // 最後的停利

    else if close cross Over winCL then begin

        setposition(0, market, label:="【多單】 - 獲利");

    end 

    // 停損平倉

    else if close cross Under lossCL then begin

        setposition(0, market, label:="【多單】 - 虧損");

    end;

end;



if position < 0  and filled < 0 then begin

    // 當價格達到分批獲利1時

    if position = -10 and close cross Under entryP - 0.2 * value12 then begin

        setposition(-8, market, label:="【空單】 - 分批獲利1");

        // 停損位置不變

    end 

    // 當價格達到分批獲利2時

    else if position = -8 and close cross Under entryP - 0.4 * value12 then begin

        setposition(-6, market, label:="【空單】 - 分批獲利2");

        lossCL = entryP;  // 停損設定為初始進場價格

    end 

    // 當價格達到分批獲利3時

    else if position = -6 and close cross Under entryP - 0.6 * value12 then begin

        setposition(-4, market, label:="【空單】 - 分批獲利3");

        lossCL = entryP + 0.2 * value12;  // 停損設定為第一次分批獲利的價格

    end 

    // 當價格達到分批獲利4時

    else if position = -4 and close cross Under entryP - 0.8 * value12 then begin

        setposition(-2, market, label:="【空單】 - 分批獲利4");

        lossCL = entryP + 0.4 * value12;  // 停損設定為第二次分批獲利的價格

    end 

    // 最後的停利

    else if close cross Under winCL then begin

        setposition(0, market, label:="【空單】 - 獲利");

    end 

    // 停損平倉

    else if close cross Over lossCL then begin

        setposition(0, market, label:="【空單】 - 虧損");

    end;

end;

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

應該是計算EMA數值與預期不同。資料筆數要足夠。不能用預設的100筆。

奇怪的人 發文於   2025/03/07

我主要是發現entryP,winCL,lossCL數值不對

我後來有用print來看

只有進場當下瞬間的數值是對的

後面就跑掉了

 

不過我將這份改成指標
指標的標註卻都沒有問題

也都有在進場時才做調整數值

所以想了兩天都抓不到理由

 

虎科大許教授 發文於   2025/03/07

這幾個變數都要用intrabarpersist宣告。

  • 按讚來自於
  • dick615106
奇怪的人 發文於   2025/03/07

完美~

太感謝了

 

發表回覆
Close