2013年8月19日 星期一

腳本運作的流程

AC裡腳本的執行流程與一般Java程式的執行流程不同,Java程式語言的進入點是一個static的main函數,進入後流程的控制權就完全交給程式設計師了,一旦離開main函數,程式完全消滅,但AC的腳本不是這樣。

在AC裡執行Java腳本時,是以事件驅動的方式執行,大流程是由事件觸發,小流程是由設計師控制。所謂事件,舉例來說,像是腳本一開始被執行時處在尚未初始化的狀態,AC就會呼叫腳本裡的init函數(大流程),執行開發者的初始化流程,開發者可以趁機做一些變數的宣告或初始化的動作(小流程),當離開init函數後程式也不會結束,只是靜靜的等待下個事件的到來,下個事件很可能是'發生新的報價'或'游標移動到某根K棒'。以事件觸發的方式來驅動流程,可以很容易的區別每個函數的工作,我們先簡單看看常用的三個事件函數:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
public class MyScript extends ScriptCore
{
 public void init()
 {
 }

 public void run()
 {
 }

 public void endOfPeriod(int type)
 {
 }
}


---


public void init()
通知腳本可以開始執行初始化流程。


public void run()
通知腳本有新的報價資料出現(報價可能來自歷史資料,或即時接收到的報價),這時候可以做一些指標的運算,或數值的分析等。


public void endOfPeriod(int type)
通知腳本某種週期結束(EO事件),像是EOB(1根K棒結束)、EOD(一天結束)、EOH(歷史報價結束)等。此時就可以做一對應的工作,例如當歷史報價結束時(EOH),可以檢查選股邏輯是否成立等。

---

另外還有些比較不常用上...


public void eventShowInput()
通知腳本有顯示參數選單的需求,這時後可以決定要輸出什麼樣的選單給使用者看。


public void eventHilightMovin(int t)
通知腳本滑鼠游標移動到某根K棒上,這時候可以更新圖格標題顯示的時間或報價訊息。

---

最後用一個簡單的範例來對照流程

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
lib "personal";

public class MyScript extends CustomCorePersonal
{
 public void init()
 {
  //對CustomCore_UI初始化
  CustomCore_UI_INIT();
  
  dbg.open();
  dbg.print("初始化...");
 }

 public void run()
 {
  if (t == 100)
   dbg.print("執行到t=="+t);
 }

 public void endOfPeriod(int type)
 {
  if (type == EOH)
   dbg.print("歷史報價結束了!");
 }

 public void eventShowInput()
 {
  //更新選單
  updateInput("空白選單");
 }

 public void eventHilightMovin(int t)
 {
  //更新圖格標題
  updateTitle("t="+t+"; " + date2Str(date.get(t), "yyyy-MM-dd HH:mm:ss"));
 }
}


6 則留言:

  1. 版主您好,我下載了新版(4.33 r130818)解壓縮然後執行,
    在更新資料後,卻出現"系統未搜尋到JDK,腳本將無法執行",請問該如何才能正常執行程式?謝謝!

    回覆刪除
  2. 不好意思,我沒看清楚,下載JDK中...

    回覆刪除
  3. 看了您檔案中技術指標的script,相關指標的函數,如stddev,macd,kd,rsi,atr...等等.
    好像都已內建於主程式裡,直接呼叫取用,不知是否正確?
    因想試看看CCI,但找不到.
    另參數調整後無法存檔,是否沒找到位置?

    回覆刪除
  4. 對於上面問題找到了,在script\library\default\customCore.java裡,真不簡單,寫的鉅細靡遺,
    精神可嘉,程式師有人會暴肝的原因在此.辛苦了.多謝!

    回覆刪除
  5. 作者已經移除這則留言。

    回覆刪除
  6. 老師恭喜發財
    請問選擇標準授權可請老師寫指標嗎?

    回覆刪除

本人僅以個人知識經驗分享,多所無知,難免有錯,還請見諒。