腳本問題

  •   307 
  • 最後發表   阿林  2021 三月 11
阿林 發文於   2020/12/27

問題1 請小編幫我檢查下面腳本我這樣寫有問題嗎 因為我發覺我寫的條件 每天符合條件該跳出來的 都會漏掉1~2檔

而且 我腳本上寫的 if trueall(close*100>close[1]*99.3) 那邊 策略雷達還是會跑出來很多拉回來超過-0.7%的股票 腳本如下

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

variable:barnumberoftoday(0);

if date <> date[1] then

    barnumberoftoday = 1

else

 barnumberoftoday+=1;

 

if  barnumberoftoday = 4 then begin

value1 = countif(close*100>close[1]*101,4); // 意思是這四根內 要有漲幅大於1%的兩分k棒

if GetField("最高價","D")*100 > GetField("開盤價","D")*103.5 and value1 > 1 then // 意思是今天開盤價要大於最高價3.5% 而且至少有一根大於1%的兩分k棒

if trueall(close*100>close[1]*99.3,4) // 然後這四根k棒 每一根k棒拉回來不能大於-0.7%  

then ret=1;end;

 

if  barnumberoftoday = 5 then begin

value1 = countif(close*100>close[1]*101,4);

if GetField("最高價","D")*100 > GetField("開盤價","D")*103.5 and value1 > 1 then

if trueall(close*100>close[1]*99.3,4)   

then ret=1;end;

 

if  barnumberoftoday = 6 then begin

value1 = countif(close*100>close[1]*101,4);

if GetField("最高價","D")*100 > GetField("開盤價","D")*103.5 and value1 > 1 then

if trueall(close*100>close[1]*99.3,4)   

then ret=1;end;

 

if  barnumberoftoday = 7 then begin

value1 = countif(close*100>close[1]*101,4);

if GetField("最高價","D")*100 > GetField("開盤價","D")*103.5 and value1 > 1 then

if trueall(close*100>close[1]*99.3,4)   

then ret=1;end;

 

if  barnumberoftoday = 8 then begin

value1 = countif(close*100>close[1]*101,4);

if GetField("最高價","D")*100 > GetField("開盤價","D")*103.5 and value1 > 1 then

if trueall(close*100>close[1]*99.3,4)   

then ret=1;end;

 

if  barnumberoftoday = 9 then begin

value1 = countif(close*100>close[1]*101,4);

if GetField("最高價","D")*100 > GetField("開盤價","D")*103.5 and value1 > 1 then

if trueall(close*100>close[1]*99.3,4)   

then ret=1;end;

 

問題2 請問小編 nthhighest 這個函數可以找第幾個高點 但是有個問題就是 例如 如果我想要用兩分k棒

找到昨天的第2個高點 然後今天股價來到昨天的第2個高點 可是如果例如nthhighest(2,high,135)

因為昨天總共是135根兩分k棒 可是隨著今天開盤時間一直走 變成這個135根k棒就不準了 變成例如 今天開盤

六分鐘了 那我寫這樣nthhighest(2,high,135) 就不代表昨天的一整天了會跑掉 那有沒有什麼辦法可以

找到昨天的第二個高點而不會隨著今天時間再走 而跑掉這樣

 

排序方式: 標準 | 最新
XQ小幫手 發文於   2020/12/29

阿林 您好

 

if GetField("最高價","D")*100 > GetField("開盤價","D")*103.5 and value1 > 1 then // ??

//意思是今天開盤價要大於最高價3.5% 而且至少有一根大於1%的兩分k棒

這段您的意思應該是最高價大於開盤價的3.5%?

if trueall(close*0.93>close[1],4) //??
// 然後這四根k棒 每一根k棒拉回來不能大於-0.7%  

這個地方是不是用小數點來計算會比較直觀一點?

---

是否可以請您舉例幾檔 您覺得應該觸發

而未觸發的股票 與時間點給小幫手

這樣我會比較好幫您看問題在哪

----

問題二

您可以另外撰寫一段code 並利用一個變數value1把它紀錄下來

用時間限制,別寫在主程式中,他就不會隨著時間改變了

 

阿林 發文於   2020/12/30

好的 感謝小編 我會在PO上來 是哪些股票未觸發

 

問題二

您可以另外撰寫一段code 並利用一個變數value1把它紀錄下來

用時間限制,別寫在主程式中,他就不會隨著時間改變了

 

上述這邊我看不太懂 可以請小編稍微舉例或是再說詳細一點嘛

XQ小幫手 發文於   2020/12/31

阿林 您好

關於第二個問題

就像是我要紀錄9:00時的分鐘頻率 20ma 

我可以寫

if time=090000 then 
value1=average(close,20);

if close>value1 then ret=1;

上面為記錄用  下面為觸發條件

阿林 發文於   2021/01/17

小編您好 我用您的方法 用value1 去紀錄 但跳出來的股票還是一樣怪怪的 不像是我腳本寫得那樣 請小編看看是哪裡有問題

 

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

 

if time = 090000 then

 

value1 = swinglow(low,54,5,5,2); 

這邊我希望找到昨天的第二個低點 然後昨天5分k棒總共是54根 代表是昨天

 

if low > value1*0.097 and low < value1*1.003 and low < GetField("收盤價","D")[1] and

low > GetField("最低價","D")[1] then ret = 1; 

 這邊我希望low 有來到昨天第二個低點的上下0.3%內的區間 然後low必須是在盤下這樣

阿林 發文於   2021/01/17

然後還有一個腳本請小編幫忙看看哪裡有問題

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

variable:ss(0);

variable:kk(0);

ss = nthhighest(1,GetField("最高價","D"),20);   20天內的最高價

kk = nthlowest(1,GetField("最低價","D"),20);    20天內的最低價

 

if ss > kk*1.08 and GetField("最高價","D")[1] <> ss then  

if high > ss*0.097 and high < ss*1.003 then ret = 1;

 

20天內的最高價必須大於20天的最低價8% 而且昨天的最高價不等於 20天內的最高價

然後今天high有來到20天內的最高價的上下0.3%得區間 

但是腳本下去跑還是有問題 都會找出不是我要的條件 不知道是哪裡有問題 請小編檢查

XQ小幫手 發文於   2021/01/19

阿林 您好

所謂"第二個低點" 這個您是否是應該用lowest 語法才對? 

swinglow的意思是"計算數列最近N個的轉折低點數值"

您可以參考以下連結的介紹

https://xshelp.xq.com.tw/XSHelp/?HelpName=SwingLow&group=TRENDFUNC

以下是我用print 功能確認的數字  

數值是沒問題的

XQ小幫手 發文於   2021/01/19

腳本二

if high > ss*0.097 and high < ss*1.003 then ret = 1;

這個應該是 ss*0.997 

阿林 發文於   2021/01/24

lowest的意思不是指找最小值嗎 但我希望找到的是第二個最小值

所以我用swinglow這個函數不行嗎 swinglow這個函數不是找出

第幾個轉折低點嗎  就像我想要今天股價有來到圖片中畫圈圈的地方這樣

就是第二個低點這樣 再麻煩小編解答

XQ小幫手 發文於   2021/01/25

阿林 您好

第二個低點的表示方式就是 lowest(close,5)[2]

swinglow並非拿來找低點用的,

一檔股票今天有轉折 不太表她就一定跌到最低點吧? 

 

阿林 發文於   2021/03/10

小編你好 今天3/10號 依我上面寫的腳本 6138跟3092 因該是要觸發的才對 可是卻沒有觸發

其他該有觸發的也是都有觸發 但就是每天都會漏掉個幾檔這樣 6138因該要在9點20分觸發 但未觸發

然後3092因該在9點8分觸發也未觸發 再麻煩小編看問題是在哪裡了

顯示更多回應 發表回覆
Close