標籤

4GL (1) 人才發展 (10) 人物 (3) 太陽能 (4) 心理 (3) 心靈 (10) 文學 (31) 生活常識 (14) 光學 (1) 名句 (10) 即時通訊軟體 (2) 奇狐 (2) 音樂 (2) 產業 (5) 郭語錄 (3) 無聊 (3) 統計 (4) 新聞 (1) 經濟學 (1) 經營管理 (42) 解析度 (1) 遊戲 (5) 電學 (1) 網管 (10) 廣告 (1) 數學 (1) 機率 (1) 雜趣 (1) 證券 (4) 證券期貨 (1) ABAP (15) AD (1) agentflow (4) AJAX (1) Android (1) AnyChart (1) Apache (14) BASIS (4) BDL (1) C# (1) Church (1) CIE (1) CO (38) Converter (1) cron (1) CSS (23) DMS (1) DVD (1) Eclipse (1) English (1) excel (5) Exchange (4) Failover (1) FI (57) File Transfer (1) Firefox (2) FM (2) fourjs (1) gladiatus (1) google (1) Google Maps API (2) grep (1) Grub (1) HR (2) html (23) HTS (8) IE (1) IE 8 (1) IIS (1) IMAP (3) Internet Explorer (1) java (3) JavaScript (22) jQuery (6) JSON (1) K3b (1) LED (3) Linux (112) Linux Mint (4) Load Balance (1) Microsoft (2) MIS (2) MM (51) MSSQL (1) MySQL (27) Network (1) NFS (1) Office (1) Oracle (125) Outlook (3) PDF (6) Perl (59) PHP (33) PL/SQL (1) PL/SQL Developer (1) PM (3) Postfix (2) postfwd (1) PostgreSQL (1) PP (50) python (1) QM (1) Red Hat (4) Reporting Service (28) ruby (11) SAP (234) scp (1) SD (16) sed (1) Selenium-WebDriver (5) shell (5) SQL (4) SQL server (8) SQuirreL SQL Client (1) SSH (2) SWOT (3) Symantec (2) T-SQL (7) Tera Term (2) tip (1) tiptop (22) Tomcat (6) Trouble Shooting (1) Tuning (5) Ubuntu (33) ufw (1) utf-8 (1) VIM (11) Virtual Machine (2) vnc (3) Web Service (2) wget (1) Windows (19) Windows (1) WM (6) youtube (1) yum (2)

2011年3月27日 星期日

HTS : 常用函數

// 買賣的當根K棒
If BarsSinceEntry(0)=0 then
  ……
endif

// 手中有空單
If MarketPosition < 0
  ……
endif

// 手中有多單
If MarketPosition > 0
……
endif

EntryPrice 進場的價格
BarsSinceEntry 進場後過了幾根k棒
CurrentContracts 目前的部位
CurrentContracts=0 顯示目前無單
CurrentContracts=1 顯示目前有1口多單
CurrentContracts=-1 顯示目前有1口空單

Date格式 : 2011/03/27 => 1110327
Time格式 : 17:39:34 => 173934


程式語言的邏輯觀念都是相通的,但語法切入的角度或方向會有點差異
物件導向的Visual Basic程式語言,其語法切入的重點在於物件用途、物件與物件之間的連結
Power Language是以每根k棒的開盤、最高、最低、收盤與成交量為思考基礎換言之,程式會去判斷每一根k棒在發生何種狀況下,而去建立買入、賣出訊號
程式語言組成份子

數學運算符號 + ,-,*,/
比較運算符號<>,= ,>=,>,<
保留字與無義字
自設變數 value1—valuen…
邏輯條件結構 if —then
買賣訊號的組成
變數宣告區
進場買賣訊號區
出場平倉區
如何設定自設變數
自設變數的名稱不可是保留字,變數由英文字母與數字所構成,例如ange1
Ange1=(high-low)/(high[1]-low[1])
這個變數是由保留字變數所構成,他將隨著保留字變動而變動,所以他將無法最適化,我們稱為variables變數,在variables中宣告。
另外一種稱為parameters變數,此種變數可以進行變數最佳化的工作,此變數是獨立出來的,其值並不會受到其他變數所影響。
Ange1=(high-low)/(high[1]-low[1])*att
此att就是為parameters變數
Parameters:att(0);
Variables:ange1(0);
Ange1=(high-low)/(high[1]-low[1])*att
變數宣告區為程式中的前兩行,後面的() 為初始值的設定。
運算符號介紹
數學運算+ (加) - (減) * (乘) / (除)
實例
value1=(close+high-low)/high
value2=(high-low)*0.03
注意:先乘除 後加減
比較運算符號
> (大於)
>= (大於等於)
< (小於)
<= (小於等於)
= (等於)
<> (不等於)
實例
high>6000 ; low=5900 ; close<5900 ; (high-low)<>100
聯接運算式
And 所有必要條件
實例
條件1 and 條件2,條件1與條件2都要成立
high>high[1] and low>low[1]
(日線) 今日最高價大於昨日最高價與今日最低價大於昨日最低價
Or 任何一條件
實例
條件1 or 條件2
條件1與條件2任一成立
high>high[1] or low>low[1]
保留字介紹
保留字為系統內建的字,每一保留字有其特殊的意義,使用者無法變更其意義與用途。
例如close 表示k棒之收盤價,使用者若寫出close=value1+value2 此種程式語句,將出現錯誤訊號。
保留字
Open K線的開盤價
High K線的最高價
Low K線的最低價
Close K線的收盤價
Volume K線的成交量
Openint 期貨的未平倉量(日線資料才會有)
保留字
Date 這根K線的日期
日期格式 1988年10月11日 寫法881011
2000年後的日期
2000 11 12 寫法1001112
2005 12 13 寫法1051213
Time 這根K線的時間
時間格式 24小時制 9:15 寫法0915 , 13:30 寫法1330
保留字
Buy 買進訊號
Sell 賣出訊號
Exitlong 買進平倉訊號
Exitshort 賣出平倉訊號
實例 buy(“買進”) this bar on close
(“買進”)表示在k線圖上標示“買進“這 兩個字
保留字
Entryprice 進場的價格
通常用於停損或停利語法,實例
exitshort(“XS”) at entryprice+30 stop
出場訊號,當價格觸到(進場價格+30)則停損出場
保留字
Avgentryprice 平均進場價格
通常運用在多重進場,每一次進場都不同價格,將所有出場價格平均。
exitlong(“XL”) at avgentryprice+30 limit
停利單 當價格觸到 平均出場價格+30 則停利出場
保留字
barsSinceEntry 進場後過了幾根k棒
假如 barsSinceEntry =10 進場後過了10根k棒,日線資料,進場後過了10天,通常用於出場訊號,顯示出價格波動性不大,就平倉出場。
實例
if marketposition=1 and barsSinceEntry =10 then begin
exitlong(“XL”) next bar at market;
end;
保留字
Currentcontracts 目前的部位
currentcontracts=1 顯示目前有1口多單
currentcontracts=-1顯示目前有1口空單
currentcontracts=0顯示目前沒有部位
通常用於進、出場訊號。
實例
if currentcontracts=0 and close>value1 then
buy(“BBUY”) this bar on close;
end if;
保留字
Marketposition 顯示目前部位跟currentcontracts用法完全相同。
marketposition=1代表目前有一口多單
marketposition=-1代表目前有一口空單
marketposition=0代表目前沒有部位
條件判斷式
程式邏輯判斷if…….then……..end if
假如(if) 某件事發生的情況下 然後(then)就去執行一個動作 end if
思考的邏輯 完全跟日常生活一樣 例如 如果 累了 然後……休息………
STS 邏輯 如果 最高價創三天新高價 然後呢……買進或賣出…..
反向去思考 如果你不累……..接下來的動作 就不會去做了
STS程式邏輯也一樣 如果 最高價沒有創三天新高價 程式一樣不會去執行then 後面的動作
多條件邏輯判斷式
如果是兩個條件以上呢? 如果都要成立 用and 作連結
條件1 and 條件2 and 條件3……
如果選工作的條件是 1.事少 2.錢多 3.離家近 如果此人缺一不可
轉換為程式語法
if 如果此工作1.事少 and 2.錢多 and 3.離家近 then 去應徵此工作
反向思考 如果1—3有一不成立 …此人就不會去應徵
STS 程式邏輯
假如 最高價大於昨日最高 最低價大於昨日最低價 然後 買進……..
if high>high[1] and low>low[1] then buy…………….
多擇一邏輯架構
如果有一個工作符合 1.事少 2.錢多 3.離家近 的其中一條件 然後就去應徵用or 連結 if 1.事少 or 2.錢多 or 3.離家近 then……工作
STS程式邏輯 當 最高價大於昨日最高 或 最低價大於昨日最低價 然後 買進……
if high>high[1] or low>low[1] then buy……………
進階結構 and or 混合
if 1.事少 and ( 2.錢多 or 3.離家近 ) then………
此份工作’’事少’’ 是必備的 但是2.錢多與3.離家近 有一個條件成立就可 .
常用內建函數
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均線
基本買賣訊號的構成
進場訊號 語法中要出現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 close<ma(close,fastlength) and currentcontracts=1 then
exitlong(『買進平倉』) 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)<oversought then
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 ,利用限價單的原因是在於平倉的價格要比預定的還要好。

沒有留言:

張貼留言