在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)
---
另外還有些比較不常用上...
public void eventShowInput()
public void eventHilightMovin(int t)
---
最後用一個簡單的範例來對照流程
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")); } } |
版主您好,我下載了新版(4.33 r130818)解壓縮然後執行,
回覆刪除在更新資料後,卻出現"系統未搜尋到JDK,腳本將無法執行",請問該如何才能正常執行程式?謝謝!
不好意思,我沒看清楚,下載JDK中...
回覆刪除看了您檔案中技術指標的script,相關指標的函數,如stddev,macd,kd,rsi,atr...等等.
回覆刪除好像都已內建於主程式裡,直接呼叫取用,不知是否正確?
因想試看看CCI,但找不到.
另參數調整後無法存檔,是否沒找到位置?
對於上面問題找到了,在script\library\default\customCore.java裡,真不簡單,寫的鉅細靡遺,
回覆刪除精神可嘉,程式師有人會暴肝的原因在此.辛苦了.多謝!
作者已經移除這則留言。
回覆刪除老師恭喜發財
回覆刪除請問選擇標準授權可請老師寫指標嗎?