語法問題

  •   228 
  • 最後發表   阿林  2021 八月 18
阿林 發文於   2021/07/25

請問小編我下列語法是哪裡有問題

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

variable:high_count(0);

if date <> date[1] then if high[4] = GetField("最高價", "D") and high[3] < high[4] and high[2] < high[4] and

high[1] < high[4] then high_count = 1; 

if high_count >= 3 then ret = 1;

上述腳本我希望能找到當日有三個高點 然後用變數去記錄每一個高點

high[4]如果是等於最高價 然後接下來的三根都沒有大於high[4] 

就記錄起來為一個高點這樣

然後只要high_count >= 3請電腦通知我 可是好像不行 不知道是哪裡出問題了 再麻煩小編了

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

Hello 阿林,

 

首先,您要做的應該是換日時重置 high_count。

所以應該是 if date <> date[1] then high_count = 0;

接者當符合條件時,high_count要增加1。

所以應該是 high_count += 1; 或是 high_count = high_count + 1;

附上小幫手修改過的警示腳本供您作參考。

附加文件

阿林 發文於   2021/08/08

感謝小幫手提供腳本 但我發現這樣變成會找到三個同樣的相同最高價

例如我希望是找到可能當天 三個高點 例如第一個高點83 第二個高點82 第三個高點83

小幫手提供的腳本沒問題 但是會找到三個同樣的日最高價 例如

第一個高點83 第二個高點83 第三個高點83 也會被找到

請問要怎樣修改 才能讓他三個高點 是不一樣的 而不是相同的最高價這樣

再麻煩小幫手了

XQ小幫手 發文於   2021/08/11

Hello 阿林,

 

由於您是在盤中即時使用 GetField("最高價", "D"),這個值是當日最高點,只會越來越大,不會變小。

所以您舉的例子是不可能發生的。

您需要先定義您的高點為何,如果是轉折的話您可以參考 SwingHigh 函數的定義:高於左右兩側的點。

舉例而言,您可以將腳本內 high[4] = GetField("最高價", "D") 修改成:

if high[4] > high[5] and high[5] > high[6]

這樣的話就會抓出轉折點,而不是當日最高點。

阿林 發文於   2021/08/11

小編你好 我的意思就是轉折點 當日的第一個高點 跟第二個高點 跟第三個高點

就是high[4] = GetField("最高價", "D") 然後記錄起來 例如是50

但是如果等等 可能過了好幾根k棒 然後high[4]又剛好 = GetField("最高價", "D")

而且這個日最高價也剛好又是50 他也會又記錄起來一次 所以會找出三個高點是一樣的這樣

再麻煩小編了

 

XQ小幫手 發文於   2021/08/13

Hello 阿林,

 

所以您希望的是找出來的三個點都是不同的價位。

那麼您只要記錄這次所找出的高點價位,且多加個條件讓 high[4] <> 前次紀錄高點即可。

需注意您有要求要 high[4] = GetField("最高價", "D"),所以下一個高點一定要比前一點高。

附上小幫手修改的警示腳本供您參考。

附加文件

阿林 發文於   2021/08/15

感謝小編 請問小編

例如我想要宣告一個變數 例如

value1 = time < 093000; 可是會顯示左右型態不同

請問要怎樣寫 才能寫出這個變數代表說時間是小於093000呢

再麻煩小編了

 

XQ小幫手 發文於   2021/08/18

Hello 阿林,

 

如果您是需要一個變數紀錄當根Bar開始時間是否小於093000的話,那麼可以用以下兩種寫法。

condition1 = time < 093000;

這樣的話condition1就是一個紀錄 True / False 的變數。

 

if time < 093000 then value1 = 1 else value1 = 0;

由於value1只能記錄數值,所以就需要這樣作轉換,符合條件的時候value1為1,不符合時value1為0。

發表回覆
Close