當突破五日均線時標記最高點及跌破五日均線時標記最低點

  •   435 
  • 最後發表   1誠1  2025 二月 07
1誠1 發文於   2025/02/06

目前遇到的問題是可以標記突破或者跌破的點,但是如果有更高價與更低價時沒有辦法自動更新,我該如何修改才可以自動更新呢

以下是我的程式碼,懇請各位熱心版友以及XQ小幫手為我解答,萬分感謝

// 1. 宣告變數
Vars: MA5(0), FLAG(0), LAST_FLAG(0), HIGH_POINT(-1), LOW_POINT(-1), PLOT_VALUE(-1);

// 2. 計算 5 日均線
MA5 = Average(Close, 5);  // 計算 5 日均線

// 3. 繪製 5 日均線
Plot1(MA5, "5日均線", checkbox:=1);  // 繪製均線

// 4. 判斷正價與負價
If Close > MA5 Then 
    FLAG = 1  // 收盤價在均線上方,標記為正價
Else 
    FLAG = -1;  // 收盤價在均線下方,標記為負價

// 5. 標記高點與低點
If FLAG = 1 And LAST_FLAG = -1 Then  // 收盤價從均線下方突破到均線上方
Begin
    HIGH_POINT = High;  // 標記突破時的高點
    LOW_POINT = -1;  // 重置低點為無效值
End
Else If FLAG = -1 And LAST_FLAG = 1 Then  // 收盤價從均線上方跌破到均線下方
Begin
    LOW_POINT = Low;  // 標記跌破時的低點
    HIGH_POINT = -1;  // 重置高點為無效值
End
Else 
Begin
    HIGH_POINT = -1;  // 非轉折點時重置高低點為無效值
    LOW_POINT = -1;
End;

// 6. 繪製高點與低點(分別用 Plot2 和 Plot3 繪製)
If HIGH_POINT > 0 Then
    Plot2(HIGH_POINT, "高點", checkbox:=1);  // 繪製高點
If LOW_POINT > 0 Then
    Plot3(LOW_POINT, "低點", checkbox:=1);  // 繪製低點

// 7. 整合高低點到連接線
If HIGH_POINT > 0 Then
    PLOT_VALUE = HIGH_POINT  // 如果是高點,設置為 HIGH_POINT
Else If LOW_POINT > 0 Then
    PLOT_VALUE = LOW_POINT  // 如果是低點,設置為 LOW_POINT
Else
    PLOT_VALUE = -1;  // 非高點或低點,設置為無效值

// 8. 繪製連接線
If PLOT_VALUE > 0 Then  // 排除無效值,僅繪製有效值
    Plot4(PLOT_VALUE, "高低點連接", checkbox:=1);  // 同時繪製高低點連接線

// 9. 更新 LAST_FLAG 為當前 FLAG 的值
LAST_FLAG = FLAG;  // 儲存當前 FLAG 狀態

 

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

其實不是很懂你的問題是什麼。若能繪圖標記問題點,會比較容易提供協助。

  • 按讚來自於
  • peter1050310
1誠1 發文於   2025/02/07

以這張圖舉例,可以看到當突破五日均線時,我有標記突破的點(籃框處),但我希望如果有更高的點(紫框處)程式可以幫我更新到最高點

附加文件

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

看看這樣是否符合你的需求。

var: MA5(0),myH(0),myL(999999);
MA5 = Average(Close, 5);
plot1(MA5, "5日均線");
if c>MA5 then
    begin
        if h>myH then 
            begin
                myH=h;
                noplot(3);
                plot2(myH+1,"高點");
            end;
        myL=999999;     
    end;
if c<MA5 then
    begin
        if L<myL then 
            begin
                myL=L;
                noplot(2);
                plot3(myL-1,"低點");
            end;
        myH=0;
    end;

1誠1 發文於   2025/02/07

是的 感謝虎科大教授的回覆!

萬分感謝

發表回覆
Close