訊號出不來

  •   507 
  • 最後發表   old mane  2017 十月 05
old mane 發文於   2017/09/27

小編你好

想請敎一下指標畫不出來的問題

想在宊破 value3 這條水平線時幫我畫秀出一個訊號

腳本如下

if barfreq<> "Min" or barinterval <> 5 then raiseruntimeerror("僅適用5分鐘線");

// if date <> date[1] then return;

//settotalbar(54);

 

variable:bsflag(0);

variable:bprice(0);

 

 

if time=090000 then

begin

value1 = GetField("收盤價","5");

value2 =GetField("收盤價","15");

end;

 

if time>= 091500 then

begin

   value3=iff(value1 >= value2,value1,value2);

   plot2(Value3,"value3");

end;

 

//========================================================================

 

condition1 = time>= 091500 and 

  o <= value3 and C > Value3 or

  c[1]=value3 and o > value3 and 

  c > o and bsflag=0;

  

if bsflag=0 

   and condition1

then begin

bsflag=1;

bprice=Value3;

plot3(bprice,"訊號");

end;

感謝教導

附加文件

排序方式: 標準 | 最新
XQ小幫手 發文於   2017/09/27

你好:

小幫手看了一下你的程式碼,改了一下,請詳見以下修改

if barfreq<> "Min" or barinterval <> 5 then raiseruntimeerror("僅適用5分鐘線");

// if date <> date[1] then return;

//settotalbar(54);



variable:bsflag(0);

variable:bprice(0);


bsflag=0;


if time=090000 then

begin

value1 = GetField("收盤價","5");

value2 = GetField("收盤價","15");


end;



if time>= 091500 then

begin

   value3=iff(value1 >= value2,value1,value2);

   plot3(Value3,"value3");

end;



//========================================================================



condition1 = time>= 091500 and 

  (o <= value3 and C > Value3) or

  (c[1]=value3 and o > value3 and  

  c > o) and bsflag=0;



if bsflag=0 and 
condition1

then begin

bsflag=1;

bprice=Value3;

plot4(bprice,"訊號");

end;

 

主要差異如下:

1.因為你有設定bsflag,你原先的問題會造成第一筆訊號劃出後,後面bsflag一直等於1的情況下,會造成condition1不會過,因此沒有訊號產生,這部分需要在執行過後重置。

2. condition1部分,由於小幫手看到你這邊有or ,因此判斷這邊的判斷是應該是分為兩部分,第一種條件為 o <= value3 and C > Value3,第二種條件為c[1]=value3 and o > value3 and  c > o,所以小幫手幫你多加了小括號區分兩部分的條件,假如小幫手判斷有錯,請你在自行更改即可

 

這樣更正後,就會有訊號出現了

另外建議你訊號的畫法可以參考:進出場訊號-置頂、置底、最高、最低

以上說明。

 

old mane 發文於   2017/09/27

小幫手你好

另一個問題請敎

我想將5分K的前3支K棒的量取其最大量當今天5分K的基準量

當5分K的量 > 基準量時將當下5分K的量記錄為最大量

往後每5分K的量都跟最大量比較直到量創新高重新記錄高

並畫出新高的位置

腳本如下

 

if barfreq<> "Min" or barinterval <> 5 then raiseruntimeerror("僅適用5分鐘線");

 

Var:V5c(0),V10c(0),V15c(0);

 

if time = 090000 then V5c = GetField("成交量","5");

if time = 090500 then V10c = GetField("成交量","5");

if time = 091000 then V15c = GetField("成交量","5");

 

value1=maxlist(V5c,V10c,V15c);

 

if v > value1 then v = value2;

if value2 < v then v = value2;

 

plot4(value2);

 

請問腳本內容錯誤在那

感謝小幫手的解惑

 

XQ小幫手 發文於   2017/09/28

你好:

小幫手不太清楚你if value2 < v then v = value2;  這一行的意思,可以請你解釋一下嘛??

 

old mane 發文於   2017/09/28

小幫手你好

可能是我寫錯了

我的想法是把 value1 當做基本量能

當量創新高時記錄新高量為 value2

如果新高量 < 量時則量=新高量 //if value2 < v then v = value2;

然後畫出新量

結論是我想在副圖指標中畫出每次量創高的位置

謝謝小幫手的教導

XQ小幫手 發文於   2017/09/29

你好:

  你這邊應該是if v > value1 then value2 = v ;   就可以了,等於是value2一直是創新高時才會更新,所以if value2 < v then v = value2;  這一行就可以不用,你可以先試試看,有問題再找小幫手討論,以上說明

 

old mane 發文於   2017/09/29

小幫手你好

有一點問題
"量沒創新高不畫"

如下圖


XQ小幫手 發文於   2017/09/30

你好:

  目前用線條顯示無法使用不畫的功能,如果要使用不畫的功能,目前僅點的模式可以支援,語法部分可以參考NoPlot - (內建函數) ,以上說明

old mane 發文於   2017/10/02

小幫手你好

可能我表的方式有問題所以誤解了

我的想法是
當5,10,15分K的成交量產生時
我將3根棒的成交量取其大
稱為max量

當成交量 >  max量時當下成交量就變成max量

可是我的max量只在當下成立

下一根K棒max量又回到啟始

我想問的是如何記錄新高量一直到收盤

以下是我的腳本

請小幫手教導

感謝

 

if date <> currentdate then return; //只從今天開始計算

 

if barfreq <>"Min" or barinterval<> 5 then raiseruntimeerror("歹勢,本腳本只適用於5分鐘線");

 

if date <> date[1] then  //做前一天資料清除

begin

    value1 = 0;

end;

 

 

variable:V5c(0),V10c(0),V15c(0);

 

if time = 090000 then V5c = GetField("成交量","5");

if time = 090500 then V10c = GetField("成交量","5");

if time = 091000 then V15c = GetField("成交量","5");

 

value1 = maxlist(V5c,V10c,V15c);

 

if time >= 091500 and V > value1 then value1 = V;

 

plot1(V5c,"5分量");

plot2(V10c,"10分量");

plot3(V15c,"15分量");

plot4(value1,"max 量");

XQ小幫手 發文於   2017/10/05

你好:

小幫手嘗試編譯後,程式碼如下:

if date <> currentdate then return; //只從今天開始計算



if barfreq <>"Min" or barinterval<> 5 then raiseruntimeerror("歹勢,本腳本只適用於5分鐘線");



if date <> date[1] then  //做前一天資料清除

begin

    value1 = 0;

end;





variable:V5c(0),V10c(0),V15c(0);



if time = 090000 then V5c = GetField("成交量","5");

if time = 090500 then V10c = GetField("成交量","5");

if time = 091000 then V15c = GetField("成交量","5");



if time < 091500 then
begin
value1 = maxlist(V5c,V10c,V15c);
end
else if   V > value1 
then begin
value1 = V;
end;


plot1(V5c,"5分量");

plot2(V10c,"10分量");

plot3(V15c,"15分量");

plot4(value1,"max 量");

 

在看一下有沒有達成你的需求,以上說明

  • 按讚來自於
  • HUMBLE99
old mane 發文於   2017/10/05

是的這是我要的感謝小幫手的教導謝謝

發表回覆
Close