盤中交易語法請教

  •   644 
  • 最後發表   Sagiter  2023 十一月 07
Sagiter 發文於   2023/10/25

請問當日09:05過後盤中出現最高價的k棒,同時也是最大量的k棒時,抓出k棒中關價當關鍵價,如果下根k棒收盤跌破關鍵價則出場。請問要怎麼寫。謝謝

// 大量1分k

// 宣告參數

variable: flag_k1(0),flag_k2(0);

Vars: close_big_avgclose (false), close_big_one_high(false), close_big_one_low(false);

Vars: candlestick_1k_big(0);

// 多方進場策略

// 爆量1分K的索引

candlestick_1k_big = getOneKBiggestVolumeIndexBeforTime(0);

value4=GetField("High", "1")[candlestick_1k_big];

value5=GetField("Low", "1")[candlestick_1k_big];

If CurrentTime >= 090500 Then close_big_avgclose = Close > GetField("均價", "5");

IF close_big_avgclose = true then close_big_one_high = Close > value4;// 目前股價 >= 爆量1分K最高價 

 

if position=0 and Filled = 0 and close_big_one_high =true then setposition(1);

// 多方出場策略:

close_big_one_low = Close < value5;

IF position=1 and Filled = 1 and close_big_one_low = true then setposition(0); //跌破爆量1分K關鍵k低點(停損)

condition1=;

if position=1 and Filled = 1 and condition1 then //獲利拉開時,見大量k,破中關價則停利

begin

value3 = (open+close)/2 ;

flag_k2 = 1;

END ;

if close < value3 AND flag_k2 = 1 then 

BEGIN

setposition(0);

flag_k2 = 0;

END;

排序方式: 標準 | 最新
XQ小幫手 發文於   2023/10/31

 Hello Sagiter,

 

您可以用變數來保存比較成交量和價格,並以此來判斷關鍵價。

舉例來說:

if issessionfirstbar then begin    //每日重置

    value1 = 0;    //用來保存最高價

    value2 = 0;    //用來保存最大量

    value3 = 0;    //用來保存關鍵價

    end;

 

if currenttime < 090500 then begin    //紀錄09:05以前的最高價和最大量

    if high > value1 then value1 = high;

    if volume > value2 then value2 = volume;

    end

else begin                            //紀錄09:05以後同時創大量和最高價的收盤價當作關鍵價

    if high > value1 and volume > value2 then begin

        value1 = high;

        value2 = volume;

        value3 = close;

        end

    else if high > value1 then value1 = high

    else if volume > value2 then value2 = volume;

    end;

    

需注意這要同時符合09:05以後最高價和最大量同時創新高時才會記錄當下的收盤價當作關鍵價,如果沒有達成的話 value3 就會是0。

Sagiter 發文於   2023/11/02

感謝小幫手的回答,我有再修改條件內容後(9:05後記錄創高k棒的高點及量,再之後未創高的k棒出現後抓取該跟k棒低點及前跟創高k棒的量),但再是跑3702這檔時,在9:7時應有未再創高,但卻沒記錄低點,但在9:10時確有記錄。是那裡有寫錯,請幫忙確認一下,謝謝。執行頻率是5分,採逐筆洗價回測。

另有幾點問題,1.print的量記錄的是單跟k棒的量還是累積量,如果要抓單量的話要怎摩改。

2.抓取前跟創高k棒的量語法有正確嗎?

謝謝

if issessionfirstbar then begin

    _VOLH = volume;

    _high = high;

  end;

//成交量創新高時更新量與價

if currenttime < 090500 then begin    //紀錄09:05以前的最高價和最大量

    if high > _high then _high = high;

    if volume > _VOLH then _VOLH = volume;

    end

else begin

if high > _high then begin    //紀錄09:05以後的最高價和該跟k棒量

_high = high;

_VOLH = volume;

   end

else if high < _high then begin //紀錄09:05以後的不在創高後該跟k棒低點及前跟創高k棒的量

_VOLH=VOLume[1];

_LOW = LOW;

end;

end;

附加文件

XQ小幫手 發文於   2023/11/07

Hello Sagiter,

 

小幫手不知道您print的是什麼資訊,不過需注意time是該根Bar開始的時間,所以5分鐘頻率下 090500 會是 09:05 ~ 09:10 這段時間,091000 是 09:10 ~ 09:15 這段時間的資訊。

 

1.volume 是使用頻率當根Bar的量。

 

2.沒有,您抓的會是前一根Bar的成交量,而非前根創高K棒的量。

由於 _VOLH 本身就會保存創高的量,在沒有變動的狀況下就會一直維持。

所以不需要另外紀錄,沒有創新高的情況下 _high 和 _VOLH 就會是上一次創新高的最高價和成交量。

 

另外您使用5分鐘頻率的話,小幫手會這樣寫:

if issessionfirstbar then begin

    _VOLH = volume;

    _high = high;

    end

else if high > _high  then begin

    _high = high;

    _VOLH = volume;

    end

else if high < _high then begin

    _low = low;

    end;

 

需注意這樣的情況下 _low 就只是沒有創新高的Bar的低點,而且每根Bar變動 (只要沒有創新高的話)。

發表回覆
Close