各位前輩好,
如下圖,請問該如何不畫出穿越現價的線。
想有上下的Banding,但數據穿越的時候就不用畫,
這樣畫面看起來比較乾淨。

//繪圖樣式的型式改成線段
value1=average(c,20);
plot1(value1);
if value1 cross over c or value1 cross under c then noplot(1);
感謝教授回覆,但實作後結果不理想,
這個語法是不畫穿越後的點,但實際是需要的,
同時,這個語法在去除穿越點後,他往下一個點連過去了。
線段還是橫跨了現價線。

使用下列語法的結果也是不行,
他會跳過不需要畫線的點位,直接連結二端的位置,
而不是留空白。
if close >= value1 then plot1(Value2)
else plot2(Value3);

不是要有以下的效果嗎?

類似,但不完全。
我的原始程式碼如下,
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棒都有一個標準差的位置,沒有中間跳過不顯示。
但收盤價在均線上的時候顯示均線上的標準差位置,
收盤價在均線下的時候顯示均線下的標準差位置,
收盤價橫跨均線時,上邊界與下邊界的點不用連結,
只連結同一邊的相鄰標準差點位。
有可能某天只有單獨一點在一邊,前後日都在另一邊,
沒有相鄰點,此時以一點表示。

醍醐味 您好,
這腳本應該能達成您要的效果:
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只能繪製線條與線段,無法繪製點。
5 評論