請問我該如何寫這樣的條件?

  •   191 
  • 最後發表   503  2023 三月 01
503 發文於   2023/02/23

您好:我想要寫條件為進場當天跌至前一天的1%以下出場,進場第二天跌至第一天的1%以下出場,第三天以後跌破前一天的最低價的0.95出場,請問我該如何寫?

var yesterday_close = Ref(Close, -1);  // 定義前一天的收盤價格

var enter_price = Open;  // 定義進場價格

 

// 定義停損價格和止盈價格

var stop_loss_price = yesterday_close * 1.01;  // 停損價格為前一天收盤價格的1.01倍

var take_profit_price = yesterday_close / 1.01;  // 止盈價格為前一天收盤價格的1/1.01倍

 

// 定義出場條件

var exit_condition = false;

if (DaysSinceEntry() == 0) {  // 進場當天

    exit_condition = Low <= stop_loss_price;  // 最低價格低於停損價格就出場

} else if (DaysSinceEntry() == 1) {  // 進場的隔天

    var yesterday_low = Ref(Low, -1);  // 取得前一天的最低價格

    exit_condition = Open <= yesterday_close / 1.01 || Low <= stop_loss_price;  // 進場價格低於前一天收盤價格的1.01倍,或者最低價格低於停損價格就出場

} else {  // 進場第三天以後

    var yesterday_low = Ref(Low, -1);  // 取得前一天的最低價格

    exit_condition = Low <= yesterday_low* 0.95;  // 最低價格低於前一天最低價格的0.95倍就出場

}

 

// 當收到賣出訊號時,根據出場條件判斷是否出場

if (Signal == "sell") {

    if (exit_condition) {

        Sell(1, "exit");  // 出場

    }

}

謝謝您的指正回覆

XQ小幫手 發文於   2023/03/01

 Hello 503,

 

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

因為您附上的腳本是其他的程式語言。

 

您可以用變數紀錄進場的日期,或是用交易函數來查詢。

接著用日頻率的 Date 來判斷過了幾天,要用幾%來判斷。

 

舉例來說,假設value1紀錄的進場的日期:

value2 = 100 * (close - getfield("Close", "D")[1]) / getfield("Close", "D")[1];

value3 = 100 * (close - getfield("low", "D")[1]) / getfield("low", "D")[1];

 

if getfield("Date", "D") = value1 and value2 < -1 then setposition(0, market)

    else if getfield("Date", "D")[1] = value1 and value2 < -1 then setposition(0, market)

    else if getfield("Date", "D")[2] >= value1 and value3 < -0.95 then setposition(0, market);

 

需注意若策略有中斷過的話,腳本是無法紀錄上次執行的交易日期。

發表回覆
Close