怪了?多加這行,為什麼就不會觸發

  •   374 
  • 最後發表   Osmond  2019 七月 09
Osmond 發文於   2019/07/01

您好:
我寫了一個觸發後SInOK = true,讓它不會被"再"觸發

但加了這一行就...從頭到尾 不會發生觸發,為什麼??

照流程一定會先 ret=1 觸發啊??

 

if SInOK= false then begin < === 沒有這一行 才會觸發??

   //盤初作多條件

   if q_Last > q_DailyOpen and q_PriceChangeRatio>-4 then begin

      if MaxHPrice<>MaxLPrice and q_Last > MaxHPrice then begin

         SInOK= true;           

         ret=1;

      end;

   end;

end;

 

 

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

Hi Osmond,

您好,謝謝您的回饋,

小幫手無法編譯成功您附上的程式碼,故請您提供:

策略雷達匯出檔案(*.DSRX)記得匯出時勾選包含自訂腳本,

至此,以利小幫手查看問題的原因,謝謝。

 

Osmond 發文於   2019/07/04

寫了多隻雷達,除錯找問原因找的要死,邏輯上我看不到問題
最後發現只要用這樣架構寫的--全死,但我不知為何????

用個比較簡單的例子:

Var:SinOK(false);

if SInOK= false then begin     < === 沒有這一行 才會觸發??

   if q_Last > q_DailyOpen and q_DailyLow <q_DailyOpen then begin

      SInOK= true;           

      ret=1;

   end;

end;

 

請試試,告訴我原因為何,感謝!

寫跨頻會出的問題好多,要print出來才會發現,雷達僅能簡單寫 x-X

 

XQ小幫手 發文於   2019/07/05

Hi Osmond,

您好,謝謝您提供相關資訊,因為執行資料讀取筆數的時候「if SInOK= false then begin」判斷式會通過,

故需加入 getinfo("IsRealTime") 判斷在即時成交更新資料時,才跑判斷式,如以下範例語法:

Var:SinOK(false);
if getinfo("IsRealTime") = 1  and SInOK= false then begin //需加入 getinfo("IsRealTime") 判斷是即時資料才能運算
   if q_Last > q_DailyOpen and q_DailyLow <q_DailyOpen then begin
      SInOK= true;           
      ret=1;
   end;
end;

以上說明與方向供您參考,謝謝。

Osmond 發文於   2019/07/05

執行時,還有分現在是 [資料讀取]、[成交更新] 啊!??
我們編寫程式很單純就是 -- 用邏輯寫出流程
可否清楚的教我一下
 [資料讀取]、[成交更新] 是什麼?

XQ小幫手 發文於   2019/07/08

Hi Osmond,

 [資料讀取]、[成交更新] 是什麼?

您好,資料讀取是在跑雷達前會先跑以前的歷史資料,以利運算相關技術分析指標數值(例如:KD、MACD、RSI...等等)

即時成交更新資料是盤中即時更新的資料,只有在盤中時間在洗價的時候才是即時成交更新資料,

以上說明,謝謝。

P.S. 關於資料讀取說明,可以參考 資料讀取範圍與腳本執行的關係 此篇文章所述。

Osmond 發文於   2019/07/09

謝謝!

  • 按讚來自於
  • b24524658
發表回覆
Close