顯示具有 HTS 標籤的文章。 顯示所有文章
顯示具有 HTS 標籤的文章。 顯示所有文章

2009-02-24

HTS -- 基本觀念

以下整理的是HTS程式基本觀念


Power Language是以每根k棒的開盤、最高、最低、收盤與成交量為思考基礎換言之,程式會去判斷每一根k棒在發生何種狀況下,而去建立買入、賣出訊號

買賣訊號的形成,基本上會有以下三種:
變數宣告區
進場買賣訊號區
出場平倉區



基本買賣訊號的構成
進場訊號 語法中要出現buy sell
一個情況發生下,以一種價格或下單模式進行買賣動作
If close cross over value1 then
buy(“long”) next bar at market
end if

模擬下單模式
市價單 buy(“long”) next bar at market
此根k出現買入訊號,進場價格為下一根k的市價,也就是開盤價。
停損單 buy(“long”) at 30 stop
以價格30為停損價位,換句話說,價格觸到30後 下單,價格可能高於30。
限價單 exitshort(“XS”) at 50 limit
以價格50為出場價位,價格一定會小於等於50
當根收盤價單 buy(“long”) this bar on close
基本出場訊號的組成
出場程式中,exitlong 多單出場 與 exitshort 空單出場一定要出現。
結構與進場訊號相似,但條件是中會出現marketposition
If marketposition=1 and barssinceentry=10 then
exitlong(“XL”) next bar at market
End if


指標語法介紹
指標最重要的函數就是畫線draw,簡單的指標最先還是變數宣告,與買賣訊號寫法相似,下方以真實區間為例說明:
Parameters:len(4);
variables:value1(0);
Value1=averagetruerange(len)
Draw1(value1, "averagetruerange")


長短均線交易策略
Parameters: FastLength(10), slowlength(30)

If MA(close,fastlength) cross above MA(close,slowlength) then
Buy ("買進") next bar at market
End If

If MA(close,fastlength) cross below MA(close,slowLength) then
Sell ("賣出") next bar at market
End If


均線交易策略
Parameters: slowlength(30)

If close cross above MA(close,slowlength) then
Buy ("買進") next bar at market
End If

If close cross below MA(close,slowLength) then
Sell ("賣出") next bar at market
End If


均線出場訊號
Parameters: fastlength(10),slowlength(30)

if closeexitlong("買進平倉") next Bars at market
end if

if close>ma(close,fastlength) and currentcontracts=-1 then
exitshort("賣出平倉") next Bars at market
end if


台指期波動性策略 進場訊號
Parameters: VtyPercentLE(1.2),VtyPercentSE(0.6),VtyPercentLX(2),VtyPercentSX(0.9)

If MarketPosition <> 1 Then
Buy ("買進") Next Bar at Close + (VtyPercentLE * AverageTrueRange(5)) Stop
End If


If MarketPosition <> -1 Then
Sell ("賣出") Next Bar at Close - (VtyPercentSE * AverageTrueRange(5)) Stop
End If


台指期波動性策略 出場訊號
ExitLong ("多出") Next Bar at Close - (VtyPercentLX * AverageTrueRange(5)) Stop

ExitShort ("空補") Next Bar at Close + (VtyPercentSX * AverageTrueRange(5)) Stop

台指期波動性策略主要是由平均真實區間作調整所形成的買賣訊號,每日的真實區間都可能變動,當收盤價觸及到真實區間後進行買進賣出的動作


KD指標的計算
Step1 計算RSV
RSV=(Ct-Ln)/(Hn-Ln)*100
Ct為收盤價 Ln為n日內的最低價
Hn為n日內的最高價
Step2 計算K與D
Kt=RSV*(1/3)+Kt-1*(2/3)
Dt=Kt*(1/3)+Dt-1 *(2/3)


KD指標語法說明
Parameters : HighLowTerm(14), kLength(3), dLength(3), OverSold(20), OverBought(80)

Value1 = FastD( High, Low, Close, HighLowTerm)
DrawBase1( OverBought, "Over Bought", DarkGray )
DrawBase2( OverSold, "Over Sold", DarkGray )

Draw2( Round(MA( Value1, dLength),2), "Slow %D", Blue)
Draw1( Round( Value1,2), "Slow %K", Red)


KD交易策略語法說明
Parameters : HighLowTerm(9), kLength(3), dLength(3), OverSold(20), OverBought(80)
variables:value(0),value2(0);
Value1 = FastD( High, Low, Close, HighLowTerm)
value2=MA( Value1, dLength)
if value1>OverBought and value2>OverBought and value1 cross over value2 then
buy("long") next bar at market
end if
if value1 < OverSold and value2 < OverSold and value1 cross below value2 then
sell("short") next bar at market
end if


RSI交易策略語法說明
parameters:len(9),overbought(80),oversought(20)

if rsi(close,len)>overbought then
sell("賣出") this bar on close
end if

if rsi(close,len)buy("買進") this bar on close
end if


MACD指標的計算方式
Step1:先計算兩條長短均線,例如12日均與26日均。
Step2: 12日均減去26日均 形成DIF值
Step3IF取9日平均 為MACD值


MACD 交易策略
Parameters: FastMA(10),SlowMA(20),MacdMA(9)
variables:value1(0)
value1=MACD(close,FastMA,SlowMA)
If value1 crosses over EMA(value1,MacdMA) then
buy("買進") next bar at market
End if

If value1 crosses below EMA(value1,MacdMA) then
sell("賣出") next bar at market
End if


MACD 進階策略
DIF與MACD 的差離值,此差離值>30則買進,<-20則賣出。
Parameters: FastMA(10),SlowMA(20),MacdMA(9)
variables:value1(0)
value1=MACD(close,FastMA,SlowMA)
value2= EMA(value1,MacdMA)
value3=value2-value1
If value3>30 then
buy("買進") next bar at market
End if
If value3<-20 then
sell("賣出") next bar at market
End if


週k線策略(利用週線資料)
If close-open>0 then
buy(“買進”) next bar at market
End if

If close-open<0 then
sell(“賣出”) next bar at market
End if


ROC交易策略
當ROC指標連續三日增加則買進,連續3日減少則賣出
variables:ROC(0)

ROC=close/close[9]
if ROC>ROC[1] and ROC[1]>ROC[2] and ROC[2]>ROC[3] then
buy("買進") next bar at market
end if。

if ROC < ROC[1] and ROC[1] < ROC[2] and ROC[2] < ROC[3] then
sell(“賣出") next bar at market
end if。


停損訊號程式碼說明
Parameter: DollarRisk(10000)
Variables: StopLossAmount(0), OrderPrice(0)

If MarketPosition = 1 Then
StopLossAmount = DollarRisk + Commission_B
OrderPrice = Entryprice(0) - (StopLossAmount / PointValue)
ExitLong ("停損L") this Bar at OrderPrice Stop
End if

If MarketPosition = -1 Then
StopLossAmount = DollarRisk + Commission_S
OrderPrice = EntryPrice(0) + (StopLossAmount/ PointValue)
ExitShort ("停損S") this Bar at OrderPrice Stop
End if


If MarketPosition = 1 Then
StopLossAmount = DollarRisk + Commission_B
OrderPrice = Entryprice(0) - (StopLossAmount / PointValue)
ExitLong ("停損L") this Bar at OrderPrice Stop
End if
StopLossAmount 代表總損失的金額
Commission_B 代表手續費
PointValue 每1點的價值 例如台指期1點200元


停利訊號程式碼
Parameter: profit(10000)
Variables: OrderPrice(0)

If MarketPosition = 1 Then
OrderPrice = Entryprice(0) + (profit / PointValue)
ExitLong ("停利L") this Bar OrderPrice limit
End if


If MarketPosition = -1 Then
OrderPrice = EntryPrice(0) - (profit/ PointValue)
ExitShort ("停利S") this Bar OrderPrice limit
End if


If MarketPosition = 1 Then
OrderPrice = Entryprice(0) + (profit / PointValue)
ExitLong ("停利L") this Bar OrderPrice limit
End if

多單停利 profit 利潤設定為10000元,進場後必須賺到10000元以上才停利出場(profit / PointValue)顯示此10000元相當於幾點
以台指期為例,pointvalue=200,所以orderprice=50 ,利用限價單的原因是在於平倉的價格要比預定的還要好。

HTS -- 語法整理

這裡整理的是HTS相關語法整理


IF statement THEN

…

END IF

數學運算符號 -- + ,-,*,/

比較運算符號 -- <>,= ,>=,>,<

保留字與無義字

如何設定變數?!

變數有幾種--variables , parameters & 保留字.
variables變數代表會隨著保留字變數而改變,所以沒有辦法進行最佳化。
而parameters變數則是獨立的,主要用來讓使用者進行最佳化的動作,不會受到其它變數影響。
保留字變數則已經讓系統先行設定,有其特別意義。而其它兩種變數則是不可以用保留字當名稱。變數可以由英文字母與數字來組成。

以下此例可以用來介紹如何宣告變數:
Parameters:att(0);
Variables:ange1(0);

()裡面是初始值

而這兩個變數可以進行以下的語法設定:
Ange1=(high-low)/(high[1]-low[1])*att


HTS -- 特定關鍵字整理

這裡放的是HTS相關特定關鍵字


Avgentryprice -- 平均進場價格
BarInterval -- 資料間隔
barsSinceEntry -- 進場後過了幾根k棒
Buy -- 買進信號
Close -- K線的收盤價
Currentcontracts -- 目前的部位
currentcontracts=1 -- 顯示目前有1口多單
currentcontracts=-1 -- 顯示目前有1口空單
currentcontracts=0 -- 顯示目前沒有部位
DataCompression -- unknown
Date -- K線日期 格式:2000年之前 991011(1999/10/11) 2000年之後 1011112(2001/11/12)
Entryprice -- 進場的價格
Exitlong -- 買進平倉訊號
Exitshort -- 賣出平倉訊號
High -- K線的最高價
Low -- K線的最低價
marketposition=1 -- 代表目前有一口多單
marketposition=-1 -- 代表目前有一口空單
marketposition=0 -- 代表目前沒有部位
Open -- K線的開盤價
Openint 期貨的未平倉量(日線資料才會有)
Sell -- 賣出信號
Time -- K線時間 格式為24小時制 13h30 -> 1330
Volume -- K線的成交量

內建函數
常用內建函數
Average 定義為平均值
用法 average(價格,長度)
value1=average(close,10)
定義value1這個變數的值為 以收盤價
計算10日的平均價
如果我們要計算我們自己設定變數的平均值也可以用這個函數。
實例
value1=high-low
value2=average(value1,9)

常用內建函數
Averagetruerange 真實區間的平均值
真實高價 max(此k最高價,昨日收盤價)
真實低價 min( 此k最低價,昨日收盤價)
真實區間=(真實高價-真實低價)
Averagetruerange(5)代表5日真實區間的平均值
常用內建函數
Highest 找出最高值highest(價格,長度)
實例 value1=highest(low,5)
近5根K棒最低價中最大值
value2=highest(close,10)
近10根K棒收盤價中最大值
常用內建函數
Lowest 找出最低值 lowest(price,5)
實例 value1=lowest(high,3)
近3根k棒的最高價中,最低那一個
value2=lowest(low,5)
近5根k棒的最低價中,最低那一個
常用內建函數
RSI 相對強弱指標 RSI(close,長度)
RSI(close,6) 代表6日的RSI值
RSI(close,13)代表12日的RSI值

常用內建函數
KD指標的函數寫法,KD指標中的K值與D值是由FastD這個函數所構成,先求出K值,之後在求出D值。
K-value = FastD( High, Low, Close,9)
D-value=MA(K-value,3)


常用內建函數
EMA函數 指數平滑移動平均數,MACD指標中的快速與慢速平均數是由此平均數求得。
MACD(price,fastMA,slowMA)
此函數可求得快速與慢速平均數的差離值,換句話說,例如30日平均數減去10日平均數。
常用內建函數
寫法1
Value1=EMA(close,12)
Value2=EMA(close,26)
Value3=value1-value2 (市場稱為DIF值)

寫法2
Value3=macd(close,12,26) (市場稱為DIF值)
Value4=EMA(value3,9) (市場稱為MACD值)

突破與跌破
技術指標中跌破與突破代表市場將出現趨勢走向,通常是進場的好時機。
Cross over 代表突破 A cross over B (A突破B)
High cross over MA(close,30)
今日最高價突破30均線
Cross below 代表跌破 A cross below B(A跌破B)
Low cross over MA(close,30)
今日最低價跌破30均線