2010年1月13日 星期三

HTS 程式

Parameter: DaysAgo(Numeric)

Variables: BackNum(84)
Array : CloseArray[84](-1) //申明陣列並付值爲-1
If DataCompression < 2 Then //當計算資料必須是分鐘/小時類,而非day week month 後面說明
 If Date > Date[1] Then //當跨天的那跟k時,一般是一天中的第1跟k
  BackNum = 84
  Do While (BackNum > 1) //做循規
   CloseArray[BackNum - 1] = CloseArray[BackNum - 2]
    //導數據,有像a[5]=a[4] BackNum -= 1 //自己減1
  Loop //
  CloseArray[1] = Close[1]
 End If

//上面一小段的意思是:當跨天的那跟K時CloseArray[84]= CloseArray[83],
//CloseArray[83]=CloseArray[82], CloseArray[82]= CloseArray[81]…..
//CloseArray[3]= CloseArray[2], CloseArray[2]= CloseArray[1]
//最後CloseArray[1]= Close[1](昨日的最後一跟K的close 既昨日的close)

 CloseArray[0] = Close //以當跟K的close做今日的close

 If (DaysAgo < BackNum) And (DaysAgo >= 0) Then //DaysAgo必須小於84大於0
  CloseOfDay = CloseArray[DaysAgo]
 Else
  CloseOfDay = -1
 End If
End If
//DataCompression是表示資料類型在hts中有month week day 60分 30 …..對應的是數值是4,3,2,1
//使用的時候要注意參數必須小於84

//value1=closeofday(0) 是當跟K的close
//value1=closeofday(1) 獲得昨日的日k的close
//value1=closeofday(2) 獲得前日的日k的close


// 買賣的當根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口空單

Average(價格,長度)
value1=average(close,10)

定義value1這個變數的值為 以收盤價,計算10日的平均價
運用例:
value1=high-low
value2=average(value1,9)

// 如果收盤價減去進場價大於進場價減去最低價→這一根K線痛苦比快樂多。
If C-EntryPrice(0) > EntryPrice(0)-L then
 ExitShort next bar at Market
end if

// 如果進場價減去收盤價大於最高價減去進場價→這一根K線痛苦比快樂多。
If EntryPrice(0)-C > H-EntryPrice(0) then
 ExitLong next bar at Market
end if

// 如果時間已過 13:30
if Time >= 133000 then
 ……
endif

// 用現在的市價買
Buy this bar at Market

// 以下的 Close 並不是真正的所謂的收盤價,以最新的價格去理解會更好,因為在當下未定形
// 的K線中,K線的收盤價是以最新的成交價在畫的,要不然,怎麼會有最新的K線可以看?
If Close > H[1] then
 ……
endif

// Next bar at OPEN stop 是指在下一根碰到現在這一根的開盤"價"。

// 定點停損停利
// maxLOSS < 1;EntryPrice(0) * 0.1~0.n
if MarketPosition > 0 then
 value10001=EntryPrice(0) - maxLOSS * iff(maxLOSS>=1,1,EntryPrice(0)) //停損價
 value10011=EntryPrice(0) + maxWIN *iff(maxWIN>=1,1,EntryPrice(0)) //停利價
 ExitLong Next Bar at VALUE10001 STOP //停損
 ExitLong Next Bar at VALUE10011 Limit //停利
elseif MarketPosition < 0
 value10002=EntryPrice(0) + maxLOSS * iff(maxLOSS>=1,1,EntryPrice(0)) //停損價
 value10012=EntryPrice(0) - maxWIN * iff(maxWIN>=1,1,EntryPrice(0)) //停利價
 ExitShort Next Bar at VALUE10002 STOP //停損
 ExitShort Next Bar at VALUE10012 Limit //停利
end if

//在每天開盤的那一根
if Date[0]>Date[1] then
 ……
 //在開盤時計算上一根的收盤價加7%就是今天的漲停價了。

 TOP= Floor( Close[1]*1.07 )

 //在開盤時以上一根的收盤減7%就是今天的跌停價。
 BOTTOM= Floor( Close[1]*0.93 )+1 tick
endif


真實高價 max(此k最高價,昨日收盤價)
真實低價 min( 此k最低價,昨日收盤價)
真實區間=(真實高價-真實低價)AverageTrueRange(5)代表5日真實區間的平均值

// 用量來判斷方向
// 通常大量出現的區域有可能是當日的高點或是低點或是價格攻擊起始點,所以以量為基礎而做的價格突破,有可能是某方向的趨勢的開始
//在日線上使用10

//5分線上使用180
//15分線上使用 21
Parameter:LT(21) ;

VARS:I(0),高(0),低(0);
VALUE1 = HIGHEST(VOLUME,LT)
FOR I=0 TO LT
 IF V[I]=VALUE1 THEN
  低 = L[I]
  高 = H[I]
 END IF
END FOR
DRAW1(低[1],"大量低")
DRAW2(高[1],"大量高")

沒有留言: