變數紀錄

  •   437 
  • 最後發表   雅雅  2024 十二月 16
雅雅 發文於   2024/11/04

小幫手您好 

假設我用value1記錄當天的日最低價

然後接下來value1有記錄到了 

那假設我要寫close如果有大於value1那value2+=1

可是我發覺他close有可能會記錄到value1成立之前的close

意思就是我想要他value1成立了之後 value2只記錄接下來的close

而不要去記錄到value1成立之前的close

再麻煩小幫手看是要在加什麼語法 還是我哪裡有理解錯誤這樣 感恩

 

 

 

 

排序方式: 標準 | 最新
虎科大許教授 發文於   2024/11/04

Value1及Value2都改用命名的變數,並用intrabarpersist宣告,就可解決這個問題。

雅雅 發文於   2024/11/11

謝謝許教授 可以在請問您一個問題嗎

也是關於變數問題

variable:intrabarpersist vva(0);

if low > low[1] and low[2] > low[1] then vva = low[1];

我發現這個我記錄的vva 他會一直複寫過去 例如

9點10分紀錄一次low[1] 那等等9點20分再發生同樣情況又繼續記錄一次

要怎麼寫才能讓vva這個變數只記錄到第一次就好 接下來就不要再複寫紀錄這樣呢

感謝許教授

 

虎科大許教授 發文於   2024/11/11

(1)可以用Once處理,但要小心跑歷史K棒時就執行。

(2)可再加一個變數來控制。剛開始設這個變數為false,第一次記錄之後就設定為true,這樣就可控制只在第一次記錄。

雅雅 發文於   2024/11/11

請問第二個方式(2)true false

variable:intrabarpersist vva(0);

variable: vva(false);

if low > low[1] and low[2] > low[1] then vva = low[1];

那接下來我該怎麼寫true上去呢 不太理解 再麻煩許教授您了

 

 

 

 

 

虎科大許教授 發文於   2024/11/11

vva是系統函數,不可以用來命名變數。

variable: intrabarpersist myLow(0);
variable: intrabarpersist hasIn(false);
if isFirstCall("Date") then hasIn = false;
if hasIn = false and low > low[1] and low[2] > low[1] then
      begin
            myLow = low[1];
            hasIn = true;
      end;

雅雅 發文於   2024/12/16

謝謝許教授 另外再請教您一個問題

假設腳本如下

variable: intrabarpersist vv(0);

variable: intrabarpersist hasIn(false);

 

if high > low then vv+=1; 

 

if isFirstCall("Date") then hasIn = false;

 

if hasIn = false and vv = 2 then ret = 1; 

hasIn = true;

 

以上腳本我是希望vv=2 那腳本觸發一次後 就不要再觸發了

 

但我觸發設定是需要設定k棒內單次觸發 因為我可能還會寫別的情況

 

例如可能if close > low then tt+=1; 

 

所以還是有可能會有tt觸發 所以腳本觸發設定只能設定k棒內單次觸發

 

請問要怎樣寫才能例如vv觸發後就別再觸發了呢 因為我發現我上面改這樣是錯的

 

再麻煩教授了!!

 

 

 

虎科大許教授 發文於   2024/12/16

單根K棒觸發一次,可參考以下範例:

 

if barfreq <> "Min" or barinterval <> 5 then raiseruntimeerror("限用5分鐘");
var: intraBarPersist myTime(0);
if GetInfo("IsRealTime") = 0 then return;
if c cross over highest(h[1],3) and  Time<>myTime then
   begin
       SetPosition(Position+1);
       myTime=Time; 
   end;

雅雅 發文於   2024/12/16

許教授您好 我可能解釋的不夠好

我意思是想說 假設我設定兩個變數

一個是vv 一個是tt 

那假設 腳本內如下

vv = 2 then ret = 1; 

tt = 2 then ret = 1; 

 

那我要怎樣寫才能限制住 例如

只要vv=2 然後腳本觸發後 如果還有相同條件 我就不要再執行了 或是

只要tt=2 然後腳本觸發後 如果還有相同條件 我就不要再執行了

腳本內寫兩個觸發條件 所以 觸發設定是需要設定k棒內單次觸發

我希望 vv 跟 tt 就都各只觸發一次就好

感謝您

      

虎科大許教授 發文於   2024/12/16

var: intrabarpersist hasin1(false);

var: intrabarpersist hasin2(false);

if vv=2 and hasin1=false then

   begin

      ret=1;

      hasin1=true;

   end;

if tt=2 and hasin2=false then

   begin

      ret=1;

      hasin2=true;

   end;

雅雅 發文於   2024/12/16

謝謝許教授 感謝您

發表回覆
Close