請教開高後下殺進場寫法

  •   360 
  • 最後發表   joE0403  2025 一月 09
joE0403 發文於   2025/01/08

求助:以下寫法哪裡有問題,進場價不會在昨天收盤價之下
{進場設定:

1.進場時間為0901分起,至0929分59秒止

2.今日開高0.5%~6%之間

3.進場價格為小於昨天收盤價的2%

4.可買賣現沖}

// 宣告參數

input: StartTime(090100, "開始進場時間");

input: EndTime(093000, "停止進場時間");

input: _entryPercent(2, "進場百分比"); // 進場價格為平盤下的百分比

 

// 宣告變數

var: _entryPrice(0), _position(0);

// 進場條件

if Time >= StartTime and Time <= EndTime ///時間

and (OPEND(0) / CloseD(1)) < 1.06 and (OPEND(0) / CloseD(1)) > 1.004  ///開高0.5%~6%之間

and GetSymbolInfo("IsDayTrading")= true ///買賣現沖

then begin

    _entryPrice = CLOSED(1) * (1 - _entryPercent / 100); // 進場價格為平盤下  %

         IF CLOSE < _entryPrice THEN

SetPosition(1, market); // 進場做多

   

    _position = 1; // 更新持倉狀態 

 

end;

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

試試看這樣是否可以。

// 宣告參數
input: StartTime(090100, "開始進場時間");
input: EndTime(093000, "停止進場時間");
input: _entryPercent(2, "進場百分比"); // 進場價格為平盤下的百分比
// 宣告變數
var: _entryPrice(0), _position(0);
// 進場條件
if Time >= StartTime and Time <= EndTime ///時間
    and (GetField("開盤價", "D") / GetField("參考價", "D")) < 1.06 
    and (GetField("開盤價", "D") / GetField("參考價", "D")) > 1.004  ///開高0.5%~6%之間
    and GetSymbolInfo("IsDayTrading")= true then ///買賣現沖
    begin
        _entryPrice = GetField("參考價", "D") * (1 - _entryPercent / 100); // 進場價格為平盤下  %
        IF CLOSE < _entryPrice then
            begin
                SetPosition(1, market); // 進場做多
                _position = 1; // 更新持倉狀態 
            end;
    end;

  • 按讚來自於
  • SCYTHE
joE0403 發文於   2025/01/08

謝謝許教授,您這樣寫是對的。
想請問OPEND(0)跟GetField("開盤價", "D")、CloseD(1)跟GetField("參考價", "D")的差別?為什麼我原本的寫法會抓不到價格

 

虎科大許教授 發文於   2025/01/09

OpenD(0)其實是GetField("開盤價","D")[0],兩者基本上是一樣的,但用來運算就可能有差異。

  • 按讚來自於
  • SCYTHE
joE0403 發文於   2025/01/09

感謝教授

發表回覆
Close