畫線不穿越現價

  •   400 
  • 最後發表   醍醐味  2025 二月 20
醍醐味 發文於   2024/12/04

各位前輩好,

如下圖,請問該如何不畫出穿越現價的線。

想有上下的Banding,但數據穿越的時候就不用畫,

這樣畫面看起來比較乾淨。

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

//繪圖樣式的型式改成線段

value1=average(c,20);

plot1(value1);

if value1 cross over c or value1 cross under c then noplot(1);

醍醐味 發文於   2024/12/05

感謝教授回覆,但實作後結果不理想,

這個語法是不畫穿越後的點,但實際是需要的,

同時,這個語法在去除穿越點後,他往下一個點連過去了。

線段還是橫跨了現價線。

 

使用下列語法的結果也是不行,

他會跳過不需要畫線的點位,直接連結二端的位置,

而不是留空白。

if close >= value1 then plot1(Value2)
    else plot2(Value3);

 

 

 

虎科大許教授 發文於   2024/12/05

不是要有以下的效果嗎?

醍醐味 發文於   2024/12/05

類似,但不完全。

我的原始程式碼如下,

input : n(10,"Days");
input : ct(3,"Stdev");

Value1 = average(c,n);
Value2 = value1+ct*standardDev(c,n,1);
Value3 = value1-ct*standardDev(c,n,1);

if c >= value1 then value4=value2
    else value4 = value3;
    
plot1(value4);

 

 

加了if c cross over value1 or c cross under value1 then noplot(1);

input : n(10,"Days");
input : ct(3,"Stdev");

Value1 = average(c,n);
Value2 = value1+ct*standardDev(c,n,1);
Value3 = value1-ct*standardDev(c,n,1);

if c >= value1 then value4=value2
    else value4 = value3;
    
plot1(value4);
if c cross over value1 or c cross under value1 then noplot(1);

但預期的線圖應該是這樣,

每一根K棒都有一個標準差的位置,沒有中間跳過不顯示。

但收盤價在均線上的時候顯示均線上的標準差位置,

收盤價在均線下的時候顯示均線下的標準差位置,

收盤價橫跨均線時,上邊界與下邊界的點不用連結,

只連結同一邊的相鄰標準差點位。

有可能某天只有單獨一點在一邊,前後日都在另一邊,

沒有相鄰點,此時以一點表示。

XS小幫手 發文於   2025/02/20

醍醐味 您好,

 

這腳本應該能達成您要的效果:

input : n(10,"Days");
input : ct(3,"Stdev");

Value1 = average(c,n);
Value2 = value1+ct*standardDev(c,n,1);
Value3 = value1-ct*standardDev(c,n,1);

condition1 = c >= value1;
if condition1 then begin
    plot1(value2);
    noPlot(2);
end
else begin
    plot2(value3);
    noPlot(1);
end;

if condition1 and condition1[1] = false then plot3(value2)
else noPlot(3);
if condition1= false and condition1[1] then plot4(value3)
else noPlot(4);

設定:價位座標、plot1 2為線段、plot3 4為點

"沒有相鄰點,此時以一點表示"以目前的功能,要硬寫是可以的(參考plot3、plot4的邏輯),只是必然會在線段起始點的位置,畫出的點與線段(plot1、plot2)重疊。所以線段需要設定粗一點、點要設定小一點,兩者在視覺上才能盡量重疊。

 

這是無可避免的,若是點與線段不想重疊,代表要被畫點的那根K棒,需要參考下一根K棒的狀態(c與value1的關係,必須依序是下上下或上下上),再回頭繪製點。目前可以回頭繪製的只有plotline,但是plotline只能繪製線條與線段,無法繪製點。

發表回覆
Close