【策略天地】ATR波段突破策略 [MC]
- 咨詢內(nèi)容:
參考自FuturesNote
區(qū)間突破最常使用在日內(nèi)程序里,不過波段的程序使用起來也不差,基本邏輯就是由開盤向上漲多少要突破作多,向下跌多少要突破做空,很單純,最主要的因素只有這個突破的臨界點是如何決定?
基本突破策略是以開盤點為準,漲XX點作多,跌XX點作空,如果沒翻就擺到收盤,這樣的邏輯在近年是很難獲利,但波段突破策略就不一樣了
Average True Range(ATR) 平均真實范圍,利用這個好用的指標,當行情波動大時,這個區(qū)間確認也應(yīng)該放大,波動小時,則區(qū)間也小,因此加上波動性的指標有用處,ATR比其它波動性指標直接方便的是它本身就是價格的表示,而不是比例或無法對應(yīng)的數(shù)字。例如ATR 100點,就是近期日高低點差平均在100點,而開盤后往上50點或往下50點的區(qū)間內(nèi)都很正常,那我們設(shè)定的突破邏輯就是市價漲超過50點作多,跌超過50點作空。
代碼范例:此策略是波段突破策略。根據(jù)ATR要調(diào)用多少個周期,來求出開倉的委托價格,此策略適用于多商品多周期,可以自己調(diào)整參數(shù)跟周期測試即可,底下是測試的IF 20 min 的績效結(jié)果,手續(xù)費單邊100元,僅供參考。
input:atrlen(2),endtime(1500),m(2100),n(9300);var:j(0),atr(0),trx(0);array:tr[10](0);//定義變量、參數(shù)、以及一維數(shù)組
if date<>date[1] then begintrx=0;//當隔日時給trx賦值為0for j=0 to atrlen-1 beginvalue1=(highD(j+1)-lowD(j+1));value2=absvalue(highD(j+1)-closeD(j+2));value3=absvalue(lowd(j+1)-closed(j+2));//在一個循環(huán)中給value1、value2、value3變量賦值
tr[j]=maxlist(value1,value2,value3);//把三者的最大值依次儲存在數(shù)組中if j=atrlen-1 then begin for j=0 to (atrlen-1) begin trx=trx+tr[j]; end;//給trx賦值在一個循環(huán)運算后 atr=trx/atrlen;end;end;end;//對atr求平均
if time<endtime then beginbuy next bar at (openD(0)+atr/2 ) stop;sellshort next bar at (opend(0)-atr/2) stop;end;//在收盤前以當天的開盤價加減atr/2去委托限價單,滿足條件開倉
setstopcontract;setstoploss(m);setprofittarget(n);//設(shè)置止盈止損。
在策略設(shè)計的部份只有一個參數(shù),是要決定ATR用多少期間,其中變數(shù)TRX是每日的TR值,ATR用來紀錄…ATR,TR的陣列和其中注記//replace AverageArray的部份是因為Multicharts內(nèi)建的AverageArray用起來不對勁,就自己再寫進策略里,內(nèi)容就是把TRX一個個放進TR陣列里,放到最后一個時順便算一下里面那些TR的平均值紀錄到ATR。
再詳細一點的說明程序,因為ATR在這個例子中使用的是日線層級,但實際運用的K線可能是10min、5min、8min之類的,會要再搭配其它的指標,所以才使用這種Array的方式將TR記錄下來,在新的一天開始時計算一次( date <> date[1] ),然后看是要多少個TR的平均,一個一個放進去,另外特別注意Array第一個位置是0起始,所以for回圈里目標值減一,這樣個數(shù)才對。
這個 Array+For 回圈的方法在使用不同k線層級的指標時蠻好用的,可以多加利用,如果是常coding的朋友可能會覺得一個地方怪怪的,平常都是for i=0 to X ,這邊因為i是Multicharts 的關(guān)鍵字所以不能用,常常都要再改成j….,是特別的習(xí)慣
測試績效圖:
- MC技術(shù)部: 學(xué)習(xí)了 呵呵
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 1145508240 進行 有償 編寫!(不貴!點擊查看價格!)
相關(guān)文章
-
沒有相關(guān)內(nèi)容