指標撰寫問題

  •   344 
  • 最後發表   蝸牛翔  2025 二月 08
蝸牛翔 發文於   2025/02/06

您好,我XS新手,我想寫一個指標,將每天開盤的第一根1分K的高低點,畫線段畫在3分K上面,但寫不出我要的效果,會變成標到第一根3分K的高低點,請XQ小編協助解惑,以下是程式碼:

if date <> date[1] then begin
    value1 = 0;
    value2 = 0;
end;

if time = 090000 and volume <> 0 and value1 = 0 then begin
    value1 = high;
    value2 = low;
end
else if time = 090200 and volume <> 0 and value1 = 0 then begin
    value1 = high;
    value2 = low;
end;

if BarInterval = 3 then begin
    if value1 > 0 and value2 > 0 then begin
        plot1(value1,"第一根1分K高點");
        plot2(value2,"第一根1分K低點");
    end;
end;

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

if barFreq<>"Min" or barinterval<>3 then raiseRunTimeError("限用3分鐘頻率");
var: myBar(0);
if date<>date[1] then
    begin
        value1=high;
        value2=low;
        myBar=currentBar;
    end;
plotline(1,myBar,value1,currentBar,value1,"第一根3分K高點",add:=1);
plotline(2,myBar,value2,currentBar,value2,"第二根3分K高點",add:=1);

蝸牛翔 發文於   2025/02/06

謝謝許教授回覆~

剛剛測試了您提供的程式碼,好像還是會畫成第一根3分K的高低點,而非第一根1分K的高低點,我是希望能將第一根1分K的高低點,畫線在3分K上

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

if barFreq<>"Min" or barinterval<>3 then raiseRunTimeError("限用3分鐘頻率");
var: myBar(0);
if date<>date[1] then
    if GetField("時間", "1")[2]=090000 then
        begin
            value1=GetField("最高價", "1")[2];
            value2=GetField("最低價", "1")[2];
            myBar=currentBar;
        end;
plotline(1,myBar,value1,currentBar,value1,"第一根1分K高點",add:=1);
plotline(2,myBar,value2,currentBar,value2,"第二根1分K低點",add:=1);

蝸牛翔 發文於   2025/02/07

許教授好,若考慮到有的個股會暫緩開盤兩分鐘,1分K的第一根跟第二根的成交量為0,會顯示的怪怪的,我有照著您的程式碼稍作修改,能力不足還是改不出來,跪求幫忙

 

if barFreq<>"Min" or barinterval<>3 then raiseRunTimeError("限用3分鐘頻率");
var: myBar(0);
if date<>date[1] then
    if GetField("時間", "1")[2]=090000 and volume <> 0 then
        begin
            value1=GetField("最高價", "1")[2];
            value2=GetField("最低價", "1")[2];
            myBar=currentBar;
        end
    else 
    begin
        value1=GetField("最高價", "1");
            value2=GetField("最低價", "1");
            myBar=currentBar;
    end;

plotline(1,myBar,value1,currentBar,value1,"第一根1分K高點",add:=1);
plotline(2,myBar,value2,currentBar,value2,"第一根1分K低點",add:=1);

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

if barFreq<>"Min" or barinterval<>3 then raiseRunTimeError("限用3分鐘頻率");
var: myBar(0);
if date<>date[1] then 
    if GetField("時間", "1")=090200 then
        begin
            if GetField("成交量", "1")[2]=0 then //延後開盤
                begin
                    value1=GetField("最高價", "1");
                    value2=GetField("最低價", "1");
                    myBar=currentBar;
                end
            else
                begin
                    value1=GetField("最高價", "1")[2];
                    value2=GetField("最低價", "1")[2];
                    myBar=currentBar-2;
                end;
        end;
plotline(1,myBar,value1,currentBar,value1,"第一根1分K高點",add:=1);
plotline(2,myBar,value2,currentBar,value2,"第二根1分K低點",add:=1);

蝸牛翔 發文於   2025/02/08

感謝許教授的幫忙!

發表回覆
Close