請問末跌高的寫法?

  •   429 
  • 最後發表   acefrank  2024 十一月 25
acefrank 發文於   2024/11/24

設定90日最低點為波段低點並以波段低點為起點尋找末跌高(第一個轉折高點),但是始終跑出來的轉折高點都是以今天開始的最近一期轉折高而非低點開始的最新一期轉折高.
請問:該如何正確的編輯?時間該如何設定?

// 尋找最近90日的最低點並設置為波段低點
Vars: lowestPriceIdx(0), lowestPrice(0), swingHighIdx(0), keyPrice(0);

// 找出最近90日內的最低點
lowestPriceIdx = LowestBar(Low, 90);
lowestPrice = Low[lowestPriceIdx]; // 記錄波段低點的價格
outputField1(Date[lowestPriceIdx], "波段低點日期"); // 標記波段低點日期
outputField2(lowestPrice, "波段低點價格"); // 標記波段低點價格


Vars: startDate(0), endDate(0);

// 設定搜尋轉折高的起點和結束日期
startDate = Date[lowestPriceIdx]; // 波段低點日期往前20日
endDate = DateAdd(Date[lowestPriceIdx], "D", -20); // 波段低點日期作為結束日期

value1 = SwingHighBar(High, 20, 2, 2, 1);
if value1 = -1 then begin
    outputField5("未找到轉折高點"); // 標記未找到轉折高點的情況
end;
if value1 >= 0 then begin // 確保找到轉折高點後再進行操作
    keyPrice = High[value1]; // 記錄轉折高點的價格,並設置為關鍵價位
    outputField3(Date[value1], "轉折高點日期"); // 標記轉折高點日期
    outputField4(keyPrice, "關鍵價位"); // 標記關鍵價位

// 選股條件: 今日收盤價大於轉折高點,且昨天收盤小於等於轉折高點
If Close > keyPrice And Close[1] <= keyPrice Then Begin
    Ret = 1;
End Else Ret = 0;
end;

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

value1 = SwingHighBar(High[lowestPriceIdx], 20, 2, 2, 1);

acefrank 發文於   2024/11/24

謝謝教授,我將value1 = SwingHighBar(High, 20, 2, 2, 1);替換成value1 = SwingHighBar(High[lowestPriceIdx], 20, 2, 2, 1);

出現的數值仍然錯誤不知道是哪邊出錯了?

// 尋找最近90日的最低點並設置為波段低點
Vars: lowestPriceIdx(0), lowestPrice(0), swingHighIdx(0), keyPrice(0);

// 找出最近90日內的最低點
lowestPriceIdx = LowestBar(Low, 90);
lowestPrice = Low[lowestPriceIdx]; // 記錄波段低點的價格
outputField1(Date[lowestPriceIdx], "波段低點日期"); // 標記波段低點日期
outputField2(lowestPrice, "波段低點價格"); // 標記波段低點價格


Vars: startDate(0), endDate(0);

// 設定搜尋轉折高的起點和結束日期
startDate = Date[lowestPriceIdx]; // 波段低點日期往前20日
endDate = DateAdd(Date[lowestPriceIdx], "D", -20); // 波段低點日期作為結束日期

value1 = SwingHighBar(High[lowestPriceIdx], 20, 2, 2, 1);
if value1 = -1 then begin
    outputField5("未找到轉折高點"); // 標記未找到轉折高點的情況
end;
if value1 >= 0 then begin // 確保找到轉折高點後再進行操作
    keyPrice = High[value1]; // 記錄轉折高點的價格,並設置為關鍵價位
    outputField3(Date[value1], "轉折高點日期"); // 標記轉折高點日期
    outputField4(keyPrice, "關鍵價位"); // 標記關鍵價位

// 選股條件: 今日收盤價大於轉折高點,且昨天收盤小於等於轉折高點
If Close > keyPrice And Close[1] <= keyPrice Then Begin
    Ret = 1;
End Else Ret = 0;
end;

虎科大許教授 發文於   2024/11/24

(1)你要找末跌段的轉折高點,左右各兩根較低K棒,找到的高點會與預期差很多。我改成各15根。

(2)以聯發科為例,正確的程式碼如下:

// 尋找最近90日的最低點並設置為波段低點
Vars: lowestPriceIdx(0), lowestPrice(0), keyPrice(0);
// 找出最近90日內的最低點
lowestPriceIdx = LowestBar(Low, 90);
lowestPrice = Low[lowestPriceIdx]; // 記錄波段低點的價格
value1 = SwingHighBar(High[lowestPriceIdx], 120, 15, 15, 1);
if value1 >= 0 and symbol="2454.TW" then 
    begin // 確保找到轉折高點後再進行操作
        keyPrice = High[value1+lowestPriceIdx]; // 記錄轉折高點的價格,並設置為關鍵價位
        // 選股條件: 今日收盤價大於轉折高點,且昨天收盤小於等於轉折高點
        ret = 1;
        outputField1(Date[lowestPriceIdx], "波段低點日期"); // 標記波段低點日期
        outputField2(lowestPrice, "波段低點價格"); // 標記波段低點價格
        outputField3(Date[value1+lowestPriceIdx], "轉折高點日期"); // 標記轉折高點日期
        outputField4(keyPrice, "關鍵價位"); // 標記關鍵價位
    end;

acefrank 發文於   2024/11/25

感謝教授指導好人一生平安!已解決我的疑惑^^

發表回覆
Close