2013年12月26日 星期四

時間函數之datediff

說明:
DateDiff用來計算兩個日期的差值,單位用日表示。
當使用DateDiff(日期A,日期B)
傳回(日期A - 日期B)的差值
語法:
DateDiff(MyDateTime1,MyDateTime2)
輸入:
日期1〈數值〉:yyyyMMdd格式的日期
日期2〈字串〉:yyyyMMdd格式的日期



時間函數之dateadd

說明:
DateAdd用來計算一段時間區間以前或是以後的日期。
使用者可以指定頻率跟要增加的時間長度
日期計算基數可為日,週、月。代碼分別是DWM
語法:
DateAdd(MyDateTime,DateFormate,Addend)
輸入:
日期〈數值〉:yyyyMMdd格式的日期
日期計算基數〈字串〉:日週月代碼
週期加數〈數值〉:加減幾個週期



時間函數之weekofyear

說明:
此函數傳回每年的第幾個星期,參數要填入yyyyMMdd格式的日期
傳回153的整數
語法:
WeekOfYear(MyDateTime)
輸入:
日期〈數值〉:yyyyMMdd日期
輸出:
數值



時間函數之weekofmonth

說明:
此函數傳回每個月的第幾個星期,參數要填入yyyyMMdd格式的日期
傳回16的整數
語法:
WeekOfMonth(MyDateTime)
輸入:
日期〈數值〉:yyyyMMdd日期
輸出:
數值



時間函數之timevalue

說明:
TimeValue用來取出時間內的值
可以取時,分,秒
頻率參數分別"H", "M", "S"
語法:
TimeValue(MyTime,TimeFormat)
輸入:
時間〈數值〉:HHmmss時間
HMS
時間基數〈字串〉:HMS格式字串





時間函數之timetostring

說明:
此函數將時間轉為字串格式,格式是"hh:mm:ss AM/PM"
hh:12
小時制小時
mm:

ss:

AM
上午
PM
下午
語法:
TimeToString(MyTime)
輸入:
時間〈數值〉:HHmmss時間
輸出:
字串


時間函數之timediff



說明:
TimeDiff用來計算兩個時間的差值,單位可以指定為時、分、秒表示。
當使用TimeDiff(時間A,時間B, TimeFormat)
傳回(時間A - 時間B)的差值,差值的單位由TimeFormat決定

TimeFormat
可為hms
語法:
TimeDiff(MyTime1,MyTime2,TimeFormat)
輸入:
時間1〈數值〉:HHmmss時間
時間2〈數值〉:HHmmss時間
HMS
時間基數〈字串〉:HMS格式字串



時間函數之Timeadd

說明:
TimeAdd用來計算一段時間區間以前或是以後的時間。
TimeFormat
頻率可為時,分,秒。分別為hms
語法:
TimeAdd(MyTime,TimeFormat,Addend)
輸入:
時間〈數值〉:HHmmss時間
HMS
時間基數〈字串〉:HMS格式字串
時間加數〈數值〉:時間加入數




邏輯函數之IFF

if ..then ..else這樣的寫法,在腳本中是很常見的,但如果是一個

說明:
IF/Else的結構用函數的形式來判斷資料與回傳值。這適用於比較簡易的狀況。
傳回的值為數值
語法:
IFF(Logicoperator, TrueReturnV, FalseReturnV)
輸入:
Logicoperator〈邏輯值〉:判斷式,會傳回Ture/False
TrueReturnV
〈邏輯值〉:當前面的判斷式為Ture時,IFF會回傳的值
FalseReturnV
〈邏輯值〉:當前面的判斷式為False時,IFF會回傳的值
輸出:
數值

邏輯函數之countif

trueall是用來處理全部每一根K棒都符合某種條件的情況,但有的時候我們不一定會要求每一根K棒都符合某特定條件,就好像我們考試也不一定要每一題都答對才能及格,十題只要對六題就算及格。

舉個例子,如果一分鐘線連續十根都上漲,當然很好,但如果十根裡有七根上漲且現在收在最高我們可能就會覺得可以接受了。這時候TRUEALL就派不上用場,這時候我們就需要一個所謂的計數器,以這個例子來說,計數器可以這麼寫:

但如果我們用countif這個函數,只要寫兩行就夠了


說明:
CountIF傳回特定數目的K棒內符合某些條件的次數,傳回0以上的整數
語法:
CountIF(TrueAndFalse,Length)
輸入:
TrueAndFalse〈邏輯值〉:傳回Ture/False的述敘式。
Length
〈數值〉:要檢視敘述式的K棒長度
輸出:
數值

邏輯函數之 Trueall


撰寫腳本時,常會踫到我們希望連續好幾根K棒都符合某種條件,例如我們如
果希望連續三天股價都上漲時,讓電腦通知我們,最直接的寫法是
If close>close[1] and close[1]>close[2] and close[2]>close[3]
Then ret=1;
這種寫法如果是連漲三天還能這麼寫,如果是連漲十天就很難這麼寫了,XS提供了一個函數,來處理這樣的情況,這個函數叫Trueall。其語法的格式如下:
說明:
判斷一個真偽值資料序列在某個區間長度內的值是否全部為真
語法:
TrueAll(Test,Length)
輸入:
Test〈邏輯值〉:真偽值資料序列
Length
〈數值〉:資料長度
輸出:
邏輯值
運用這個函數,上面那個連三天上漲就警示的例子,可以改成這麼寫:

If trueall(close>close[1],3) then ret=1;

型態函數之線性迴歸

線性迴歸LinearRegLinearRegAangleLinearRegSlope

說明:
計算線性迴歸的坡度與角度,與預測資料投影點的位置
語法:
LinearReg(thePrice, Length, Target, Slope, Angle,Intercept,Forecast)
輸入:
thePrice〈數值〉:要計算迴歸的價格序列
Length
〈數值〉:要計算迴歸的價格K棒根數
Target
〈數值〉:預期日期位置:0表示現在,-1表示未來一天,1表示過去一天
Slope
〈數值〉:輸出迴歸的斜率
Angle
〈數值〉:輸出迴歸的角度
Intercept
〈數值〉:輸出迴歸的截距
Forecast
〈數值〉:target日後預期值
輸出:
數值
1.     Vars: Slope(0), Angle(0), Intercept(0), Forecast(0);
2.      
3.      
4.     Value1 = LinearReg (CthePrice, Length, Target, Slope, Angle,Intercept,Forecast); //傳回表示具有足夠資料以計算出合適值
5.      
6.     Value2 = Slope; //傳回斜率
7.      
8.     Value3 = Angle; //傳回弧度
9.      
10.  Value4 = Intercept; //傳回X軸切點
11.   
12.  Value5 = Forecast; //傳回TargerBar的回歸值

說明:
傳回線性迴歸的角度,用最小平方法計算出來的。
語法:
LinearRegAngle(thePrice, Length)
輸入:
thePrice〈數值〉:要計算線性迴歸角度的價格序列
Length
〈數值〉:要線性迴歸角度的K棒長度







說明:



傳回線性迴歸的角度,用最小平方法計算出來的。
語法:
LinearRegAngle(thePrice, Length)
輸入:
thePrice〈數值〉:要計算線性迴歸角度的價格序列
Length
〈數值〉:要線性迴歸角度的K棒長度
輸出:
數值
Value1 = LinearRegAngle(Close,20); //20K棒收盤價取迴歸的角度