如何標示MACD每個多空波段間的最高和最低值的位置和數值?

  •   45 
  • 最後發表   xqyi  2024 六月 18
xqyi 發文於   2024/06/18

value1 = MACD(WeightedClose,12,26,9,value2,value3,value4);  

if

value4[1] <0 and value4 > 0 then begin

value5=currentBar;//紀錄空轉多位置K號

end;

 

if value4[1] > 0 and value4 < 0 then begin

value6=currentBar; //紀錄多轉空位置K號

end;

value7=absValue(value6-value5);//計算多空之間的K棒數

 

//如何找出區間Value4最大值 的位置K(日期)

value8=  如何找出下一個空轉多, value4 最小值的位置?

 

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

可以透過SwingHigh、SwingHighBar、SwingLow、SwingLowBar這四個函數處理。

xqyi 發文於   2024/06/18

太難了
寫不出來所需取用的標示位置和數值

value1 = MACD(WeightedClose,12,26,9,value2,value3,value4);  

if

value4[1] < 0 and value4 > 0 then begin //轉多

value5=currentBar;

plot1(value5,"B1");

end;

 

if value4[1] > 0 and value4 < 0 then begin //轉空

value6=currentBar;

plot2(value6,"S1");

end;

 

value7=value6-value5;//計算多空之間的K棒數

plot3(absValue(value7),"N1");

 

if value6 > value5 then 

 plot4( Fastlowest(value6,value7),"Hmacd");//往空走 找區間最小值

 

if value6 < value5 then  

 plot5(Fasthighest(value5,value7),"Lmacd");//往多走 找區間最大直

 lot6(currentBar,"NOW");// K棒號

虎科大許教授 發文於   2024/06/18

我建議使用的四個函數,能夠找出你要的高低點,但無法繪製指標。由於XS是逐筆執行程式,就算跑到最高點,仍然無法得知此處是否就是最高點(需要統統跑完才知道,但跑完之後,又無法再返回畫指標);所以,所有嘗試標記高低點的指標,XS都無能為力。

xqyi 發文於   2024/06/18

恩恩

望圖興嘆! 感謝,不然跟GPT4o不知還得玩多久

vars: values1(0), values2(0), values3(0), values4(0), values5(0), values6(0), values7(0),

      maxDuringBull(-9999), minDuringBear(9999), isBull(false),

      maxBullPos(0), minBearPos(0), bullPeakPos(0), bearTroughPos(0);

 

values1 = MACD(WeightedClose, 12, 26, 9, values2, values3, values4);

 

if values4[1] < 0 and values4 > 0 then begin

    if not isBull then begin

        // 標示前一個空頭波段的最小值及位置

        plot5(minDuringBear, "Min MACD in Bear");

        plot7(minBearPos, "Min Bear Position");

    end;

    values5 = currentBar;

    plot1(values5, "B1");

    isBull = true;

    maxDuringBull = values4;  // 初始化多頭波段期間的MACD最大值

    maxBullPos = currentBar;  // 記錄多頭波段期間最大值的位置

end;

 

if values4[1] > 0 and values4 < 0 then begin

    if isBull then begin

        // 標示前一個多頭波段的最大值及位置

        plot4(maxDuringBull, "Max MACD in Bull");

        plot6(maxBullPos, "Max Bull Position");

    end;

    values6 = currentBar;

    plot2(values6, "S1");

    isBull = false;

    minDuringBear = values4;  // 初始化空頭波段期間的MACD最小值

    minBearPos = currentBar;  // 記錄空頭波段期間最小值的位置

end;

 

if isBull then begin

    if values4 > maxDuringBull then begin

        maxDuringBull = values4;  // 更新多頭波段期間的MACD最大值

        maxBullPos = currentBar;  // 更新多頭波段期間最大值的位置

    end;

    bullPeakPos = maxBullPos;  // 保存多頭波段最大值的位置

end else begin

    if values4 < minDuringBear then begin

        minDuringBear = values4;  // 更新空頭波段期間的MACD最小值

        minBearPos = currentBar;  // 更新空頭波段期間最小值的位置

    end;

    bearTroughPos = minBearPos;  // 保存空頭波段最小值的位置

end;

 

values7 = values6 - values5;  // 計算多空之間的K棒數

plot3(absvalue(values7), "N1");

 

// 在波段結束時標示最大和最小值

if values4[1] < 0 and values4 > 0 then begin

    plot4(maxDuringBull, "Max MACD in Bull");

    plot6(bullPeakPos, "Max Bull Position");

end;

 

if values4[1] > 0 and values4 < 0 then begin

    plot5(minDuringBear, "Min MACD in Bear");

    plot7(bearTroughPos, "Min Bear Position");

 

end;

 

發表回覆
Close