M頭

  •   241 
  • 最後發表   阿林  2023 四月 19
阿林 發文於   2023/04/12

小幫手您好 以下是我腳本 照理說我寫的腳本 今天2023/4/12 因該要在9點34分觸發1513中興電才對

可是沒有觸發 請問小幫手 我是哪裡有寫錯嗎 再麻煩小幫手了

if barfreq <> "Min" or Barinterval <> 2 then RaiseRuntimeError("請設定頻率為2分鐘");

input:StopUpdateTime(132500,"HHMMSS停止更新時間");

Value20 = GetQuote("振幅");

if time <> time[1] then value30 += 1;

if getfieldDate("date") <> getfieldDate("date")[1] then value30 = 0;

if time <= StopUpdateTime then value35 = value30;

//開盤以來開始計算

value1 = swinghigh(high,value35,3,3,1);

//這段時間的第一轉折最高點

value2 = swinghigh(high,value35,3,3,2);

//這段時間的第二轉折高點

value3 = swinglow(low,value35,3,3,1);

//這段時間的第一轉折低點

value4 = swinghighbar(high,value35,3,3,1);

//第一轉折高點距離現在幾根BAR

value5 = swinghighbar(high,value35,3,3,2);

//第二轉折高點距離現在幾根BAR

value6 = swinglowbar(low,value35,3,3,1);

//轉折低點距離現在幾根BAR

if absvalue(value1-value2)/value1*100 < 0.5 and 

//兩個高點差小於0.5%

value6 > value4 and value6 < value5 and // 轉折低點要在中間

value1 >= GetField("收盤價", "D")[1]*1.03 and value2 >= GetField("收盤價", "D")[1]*1.03 and//兩個高點漲幅要有3%

Value20 >= 2 and GetField("成交量", "D") >= 2000 and //震幅跟成交量

value1 >= value3*1.013 and value2 >= value3*1.013 then//M頭的兩個高點必須比轉折的低點大於1.3%

if value1 = GetField("最高價", "D") or value2 = GetField("最高價", "D") then ret = 1; // 第一個高點或第二個高點必須等於日最高價

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

Hello 阿林,

 

小幫手建議您可以將相關數值print出來檢查。

您的條件中 value6 > value4 不符合。

因為value6的回傳值是 -1。(沒有找到符合條件的Bar)

建議您可以調整swinglow和 swinglowbar 的左右肩參數。

阿林 發文於   2023/04/17

不好意思小幫手 我value6左右各是三筆 比較高的數值 這樣是沒有符合的嗎

9點14分那根k棒最高價115跟9點28分那根k棒最高價115 中間那樣是沒有符合value6的嗎

再麻煩小幫手解釋了 

 

XQ小幫手 發文於   2023/04/19

Hello 阿林,

 

根據您上方提供的腳本:

value6 = swinglowbar(low,value35,3,3,1);

 

value6找的是低轉折點的相對位置,且是用提供的數列來運算。

以value6來說的話,就是用 low 來判斷,所以您提到的最高價是不會用到的。

您可以在內建的函數腳本中確認 swinglowbar 是如何運作。

附帶一提, value6在 4/12 第一根找到的低轉折點為 09:36 那根Bar。

用Plot畫出或許會比較容易理解。

發表回覆
Close