ScriptBasic - 腳本基礎
ScriptBasic中沒有任何的執行機制,純粹就是宣告常數,與一些常用的數學與系統函數。ScriptCore也繼承了這個類別,所以這些常數與函數都是可以直接使用的。
---
基礎數學運算。
函數 | 說明 |
double abs(double a) | 取絕對值 |
long round(double a) | 四捨五入 |
double round(double value, int digi) | 保留小數的四捨五入 |
double ceil(double a) | 無條件進位 |
double floor(double a) | 無條件捨去 |
double pow(double a, double n) | 次方運算 |
double sqrt(double a) | 開根號 |
double log(double a) | 取對數 |
double log(double a, double base) | 取對數 |
double random(double min, double max) | 取隨機值 |
double chgrate(Number value, Number base) | 回傳變動率 |
---
"動態陣列"運算。寫指標或策略時這部分是最常用的。
因為同名函數的變形太多,這裡僅列出函數名稱,並以avg做概括說明。
函數名稱 | 說明 |
highest | 取最大值 |
lowest | 取最小值 |
sum | 取總和 |
avg | 取平均值 |
median | 取中位數 |
stddev | 取標準差 |
linear | 取線性回歸值 |
change | 取變動值 |
change_rate | 取變動率 |
函數 | 說明 |
double avg(NumSet nset, int range) | 取nset陣列在range內的平均值 |
double avg(NumSet nset, int shift, int range) | 取nset陣列位移shift在range內的平均值 double ma5 = avg(close, 0, 5); |
在函數參數裡有一個叫NumSet(數字集合)類別,其實就是MovinNum的父類別,所以丟"動態陣列"進去是完全ok的。
這裡大致解釋一下t跟sft的關係。t是我們比較習慣用來描述時間進行的方向,t等於零就是"最早的時候",t越大表示時間經過越久。而sft的概念剛好顛倒,sft等於零是最"接近現在的時候",sft越大表示離現在越遠,如下圖所示。
\ | 前天 | 昨天 | 今天 |
t | 0 | 1 | 2 |
sft | 2 | 1 | 0 |
close | 100 | 105 | 108 |
---
Java原生數字陣列運算。
因為同名函數的變形太多,這裡僅列出函數名稱,並以highest做概括說明。
函數名稱 | 說明 |
highest | 取最大值 |
lowest | 取最小值 |
sum | 取總和 |
avg | 取平均值 |
median | 取中位數 |
stddev | 取標準差 |
linear | 取線性回歸值 |
函數 | 說明 |
double highest(double value, double... arr) | highest(1.5, 4.3, 3.1) 回傳4.3 |
double highest(double[] arr) | 取最陣列中大值 |
---
時間函數。
函數 | 說明 |
int YMD(Date date) | 日期轉數字 例如20130101 |
int HMS(Date date) | 日期轉數字 例如134500 |
long YMDHMS(Date date) | 日期轉數字 例如20130101134500 |
int getTimeOfDay(Date date) | 取得日期當天經過的毫秒數 |
int date2Int(Date date, String fmt) | 日期轉數字 |
String date2Str(Date date, String fmt) | 日期格式化 |
Date str2Date(String str, String fmt) | 日期字串轉物件 |
boolean sameDate(Date date1, Date date2) | 檢查兩個日期是否為同一天 |
boolean sameDate(long time1, long time2) | 檢查兩個日期是否為同一天 |
boolean sameHour(Date date1, Date date2) | 檢查兩個日期是否為同一小時 |
long daysBetween(Date date1, Date date2) | 取得兩日期的天數差 |
便捷條件或選擇。
函數 | 說明 |
T iif(boolean bool, T a, T b) | 便捷條件。若條件成立則回傳a,否則回傳b |
T iif(double a, double b, T r1, T r2, T r3) | 便捷條件。若數字a大於數字b則回傳r1,或數字a小於數字b則回傳r2,否則回傳r3 |
T select(int idx, T... obj) | 便捷選擇。回傳與索引值相當序數的物件, 例如select(0, a, b, c)會回傳a |
排序與搜尋。
函數 | 說明 |
T sort(T coll, int keyidx, boolean sortAsc) | 排序 (排序的集合需繼承或實作Sortable) |
int find(T sroted_coll, int keyidx, boolean sortAsc, int find_type, double target) | 搜尋 (排序的集合需繼承或實作Sortable). |
double[] sort(double[] arr) | 數字陣列排序. (衍生於Java的Arrays物件) |
int[] sort(NumSet num, int shift, int range, boolean sortAsc) | 排序後回傳索引(偏移位置)陣列. |
boolean isS2B(double... arr) | 檢查數字排列是否由小到大 |
boolean isB2S(double... arr) | 檢查數字排列是否由大到小 |
boolean isSeq(double... arr) | 檢查數字排列是否有順序 |
其他函數。
函數 | 說明 |
void sleep(int us) | 暫停(微秒) |
String hex(int value) | 十進制數字轉十六進制字串 |
String hex(Color color) | 顏色轉十六進制字串 |
Color transp(Color color, int transp) | 顏色加入透明度(透明度 0~255 0是完全透明) |
Point getCrossPoint(Point L1A, Point L1B, Point L2A, Point L2B) | 取得兩線交叉座標 |
void mailto(String usermail, String password, String toaddr, String subject, String contents) | 寄出郵件 (僅支援gmail) |
void sound(File file) | 撥放聲音 |
String[] getSymbolCates() | 取得符號分類選單陣列(做選單用) |
String[] getCateSymbols(String cate) | 取得特定符號分類的全部符號 |
String[] listSymbol(String match) | 列出符號 |
String getSymbolName(String symbol) | 取得符號名稱 |
boolean confirmDialog(String title, String msg) | 彈出確認對話框 |
void msgDialog(String title, String msg) | 彈出訊息對話框 |
String inpDialog(String title, String msg, String init_value) | 彈出字串數入對話框 |
String fmtNum1(double value) | 鉅額數字格式化1 例如'1億2345萬' |
String fmtNum2(double value) | 鉅額數字格式化2 例如'1.23億' |
String readTextFile(File file) | 讀取文字檔(一次讀完) |
String readTextFile(File file, String charsetName) | 讀取文字檔(一次讀完) |
boolean saveTextFile(String text, File file) | 寫入文字檔 |
boolean saveTextFile(String text, File file, String charsetName) | 寫入文字檔 |
boolean saveImage(Component comp, String type, int width, int height, File file) | 儲存圖檔 |
void webBrowser(String url) | 開啟瀏覽器 |
--以下為常數定義--
方位。現僅用於畫字串(drawString)時指定方位。
型別 | 名稱 | 說明 |
int | CENTRAL | 中央 |
int | TOP | 上 |
int | BUTTON | 下 |
int | LEFT | 左 |
int | RIGHT | 右 |
int | TOP_RIGHT | 右上 |
int | TOP_LEFT | 左上 |
int | BUTTON_RIGHT | 右下 |
int | BUTTON_LEFT | 左下 |
列表方向。用於列表物件,寫法大致如tbl.setListMode(TBL_LIST_UP);。
型別 | 名稱 | 說明 |
int | LIST_DOWN | 向下表列 |
int | LIST_UP | 向上表列 |
資料刻度。
型別 | 名稱 | 說明 |
int | PRECISE_AUTO | 自動(通常會選擇'日') |
int | PRECISE_DAY | 日 |
int | PRECISE_MIN | 分 |
int | PRECISE_SEC | 秒 |
int | PRECISE_TICK | Tick |
K線週期。
名稱 | 說明 |
PERIOD_AUTO | 自動(通常會選擇'日') |
PERIOD_TICK | Tick |
PERIOD_SEC | 秒 |
PERIOD_MIN | 分 |
PERIOD_HOUR | 小時 |
PERIOD_DAY | 天 |
PERIOD_WEEK | 周 |
PERIOD_MONTH | 月 |
PERIOD_QUARTER | 季 |
PERIOD_HALFYEAR | 半年 |
PERIOD_YEAR | 年 |
PERIOD_VOL | 量 |
PERIOD_OC_CHANGE | 開收價格變動 |
PERIOD_OC_CHANGER | 開收價格變動百分比 |
PERIOD_HL_CHANGE | 高低價格變動 |
PERIOD_HL_CHANGER | 高低價格變動百分比 |
PERIOD_CUSTOM | 自訂 |
排序序向。
型別 | 名稱 | 說明 |
int | S2B | 正序(小到大) |
int | B2S | 倒序(大到小) |
搜尋。
型別 | 名稱 | 說明 |
int | FIND_EQUAL | 相等 |
int | FIND_BEFORE | 相等 或 前一個 |
int | FIND_AFTER | 相等 或 後一個 |
過濾。
型別 | 名稱 | 說明 |
boolean | IN_LIST | 名單內 |
boolean | OUT_LIST | 名單外 |
例外(Exception)處理方式。
型別 | 名稱 | 說明 |
int | EX_WRN | 顯示警告後繼續執行 |
int | EX_ERR | 稍後中斷,顯示警告後走完這次執行再中斷 |
int | EX_INT | 立即中斷,顯示警告後立即中斷 |
週期結束(EO)類型。
型別 | 名稱 | 說明 |
int | EOB | end of bar |
int | EOD | end of day |
int | EOW | end of week |
int | EOM | end of month |
int | EOY | end of year |
int | EOH | end of history |
int | EOAH | end of all history(包含InnerCore) |
特定常數轉為有意義文字陣列。
型別 | 名稱 | 說明 |
String[] | PERIOD_TEXT | K線週期文字陣列 |
String[] | PRECISE_TEXT | 資料刻度文字陣列 |
String[] | DAY_TEXT | 星期文字陣列 |
String[] | EO_TEXT | EO類型文字陣列 |
其他。
型別 | 名稱 | 說明 |
String | AC_LOCATION | 程式執行路徑 |
沒有留言:
張貼留言