問題~如何上影線漲三個tcik~~取代漲上影線漲3%就通知我,腳本應該要如何研寫

  •   494 
  • 最後發表   Alumi  2023 三月 23
Alumi 發文於   2023/01/12

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

if high <= maxlist(opoen, close)*1.03

 

//不管小紅或小黑且這根1分收k上影線3%以就通知我

 

問題~這根1分收k~~~如何上影線漲三個tcik~~取代漲上影線漲3%就通知我,腳本應該要如何研寫

因為像股票價格價差太大,10元以上漲一個tcik0.05500以上漲一個tcik1元,而1000以上升降單位為5~~~用這樣上引線漲3%來固定計算,每支的股票誤差一點微小%數就會價格差很多。
像以下

10~49           升降一個ticks單位0.05

500~999       升降一個ticks單位1

1000元以上                升降一個單位5

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

Hello Alumi,

 

您可以寫 if ... else if ... 的判斷式來決定tick的價格。

舉例來說:

if close < 10 then value1 = 0.01

else if close <50 then valeu1 = 0.05

else if close < 100 then value1 = 0.1

else if close < 500 then value1 = 0.5

else if close < 1000 then value1 = 1

else if close >= 1000 then value1 = 5;

 

if (high - maxlist(open, close)) >= value1 * 3 then ret = 1;

value1 就會是1個tick的升降單位。

Alumi 發文於   2023/01/16

謝謝,我再來研究學習一下

~~~~~~~~~~~~~~~~
請問一下,限一份k  不管小紅或小黑且上影線3%以上就通知我,我用這腳本去試跑,很奇怪沒有到3%,也沒有上引線就通知警示,你能幫我看一下,是哪裡出錯嗎?~~謝謝您

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

if high<= maxlist(open,close)*1.03

//不管小紅或小黑且上影線3%以上就通知我

 

then ret=1;

 ..

..

XQ小幫手 發文於   2023/01/18

Hello Alumi,

 

條件應該是 if high >= maxlist(open,close)*1.03 then ret = 1; 才對,您撰寫的條件相反了。

Alumi 發文於   2023/02/08

謝謝你的回答!

我有看基礎影片  input (指定參數)     variable(變數),,還是搞不是很清楚,請問下面是你的回答,那前面我要如何宣告value 1 會是代表一個ticke的升降單位

我前面宣告是要怎麼寫??以下這樣對嗎?
var:tick(0)
tick=value1


以下是您之前的回答
您可以寫 if ... else if ... 的判斷式來決定tick的價格。
   

if close < 10 then value1 = 0.01

else if close <50 then valeu1 = 0.05

else if close < 100 then value1 = 0.1

else if close < 500 then value1 = 0.5

else if close < 1000 then value1 = 1

else if close >= 1000 then value1 = 5;

 

if (high - maxlist(open, close)) >= value1 * 3 then ret = 1;

value1 就會是1個tick的升降單位。



 

XQ小幫手 發文於   2023/02/09

Hello Alumi,

 

value1, value2, ..., value999 是內建幫您宣告好的變數,是為了方便編寫。

 

var: num(0);

num = 1;

這樣是宣告一個變數叫做num,並將其設為1。

 

小幫手之前的範例就是利用內建變數 value1,這樣就不用另外宣告。

如果您要將其叫作tick的話就是宣告一個tick的變數,然後將腳本中的value1替換成tick。

 

網站上有教學區,裡面有XS語法的基礎和應用可以閱覽,建議您可以從XS實戰7門課跟XS語法入門看起。

Alumi 發文於   2023/02/12

謝謝,我有爬文了解~~Condition1和Value1 都可以當成邏輯數值變數不用另外宣告


請教以下我用你給我的這段腳本,系統說『變數 "valeu1" 沒有宣告,請用 Vars: 的方式宣告,冒號後面是變數名稱再用括號填入預設值』。
所以我前面是要怎麼寫呢?  

 

 

if close < 10 then value1 = 0.01

else if close <50 then valeu1 = 0.05

else if close < 100 then value1 = 0.1

else if close < 500 then value1 = 0.5

else if close < 1000 then value1 = 1

else if close >= 1000 then value1 = 5;

 

if (high - maxlist(open, close)) >= value1 * 3 then ret = 1;




XQ小幫手 發文於   2023/02/14

Hello Alumi,

 

小幫手輸入錯誤, valeu1 應該修改為 value1。

如同之前所說, value1 是內建的變數。

 

網站上有教學區,裡面有XS語的基礎和應用可以參考。

Alumi 發文於   2023/02/14

sorry ,我也沒注意到單字問題,~~長的都差不多,就直接複制。。謝謝你可以編譯了

~~~~~~~
再請教您們!!

那反過來縮腳下影線跌3%(變成三個tick取代3%)//不管小紅或小黑且這根1分收k下影線3%以就通知我
是可以改成這樣嗎?用minlist 對吧


if close < 10 then value1 = 0.01

else if close <50 then value1 = 0.05

else if close < 100 then value1 = 0.1

else if close < 500 then value1 = 0.5

else if close < 1000 then value1 = 1

else if close >= 1000 then value1 = 5;

 

 

if (low - minlist(open, close)) >= value1 * 3 then ret = 1;

XQ小幫手 發文於   2023/02/15

Hello Alumi,

 

小幫手建議您可以先閱覽網站上的教學區,裡面有XS語法的基礎和應用。

 

if (low - minlist(open, close)) >= value1 * 3 then ret = 1;

當根Bar的 low 一定會小於等於 open 或 close,那麼 low - minlist(open, close) 就會小於等於 0。

所以這個條件一定不會成立。

您可以在腳本中使用 print 將相關數值印出,就可以看出問題所在。

 

應該要這樣寫才對:

if (minlist(open, close) - low) >= value1 * 3 then ret = 1;

 

Alumi 發文於   2023/02/16

謝謝你們的回覆,讓我更進步了。真的很感恩。我再多多研究參考教學配合運用。

 

顯示更多回應 發表回覆
Close