ATR波動突破策略(TB版)_第1頁
ATR波動突破策略(TB版)_第2頁
ATR波動突破策略(TB版)_第3頁
ATR波動突破策略(TB版)_第4頁
ATR波動突破策略(TB版)_第5頁
已閱讀5頁,還剩13頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

ATR波動突破策略(TB平臺)主要交易思路該交易策略主要基于平均真實范圍(ATR)來設定買入和賣出的觸發價格。ATR是衡量市場波動性的一個指標,通過計算過去一段時間內價格波動的平均值來得出。1.計算ATR:首先,策略通過函數計算了最近N個時間周期的平均真實范圍(ATR)。這個ATR值用于后續計算上下軌線。2.設定上下軌線:策略根據前一個周期的收盤價和ATR的兩倍值來計算上下軌線。上軌線是前一個周期的收盤價加上2倍的ATR,而下軌線則是前一個周期的收盤價減去2倍的ATR。3.交易觸發條件:-當市場價格(特別是最高價)達到或超過上軌線時,如果當前市場位置不是多頭(即沒有持倉或持倉為空頭),則執行賣空操作,以`myprice`作為交易價格。-當市場價格(特別是最高價)達到或超過上軌線,并且當前市場位置是空頭(即已賣空)時,如果最高價達到或超過上軌線,則執行買入平倉操作,以`myprice`作為交易價格。4.繪制軌線:為了更直觀地觀察上下軌線,策略使用函數在圖表上繪制了這兩條軌線。該策略是一種基于ATR的波動率突破策略,通過設定上下軌線來捕捉市場的超買超賣情況,并據此進行交易操作。計算公式如下:ATR=∣最高價-最低價∣和∣最高價-昨收∣和∣昨收-最低價∣的最大值真實波幅(ATR)=TR的N日簡單移動平均參數N設置為14日函數1TrueHigh,求真實高點:VarsNumericTHighValue;//聲明數值型變量THighValue。//BeginTHighValue=Close[1];//語句1,直接讓變量THighValue值=昨日收盤價。//If(High>=Close[1])//語句2,假如當前最高價High>=昨日收盤價時。//THighValue=High;//變量THighValue值=當前最高價。//ReturnTHighValue;//語句1和語句2是一個并列語句,哪個條件符合的,就用哪個語句的值,這可以先判斷出最高價和昨收價哪個是最大值。//End函數2TrueLow,求真實低點:VarsNumericTLowValue;//聲明數值型變量TLowValue。//BeginTLowValue=Close[1];//語句1,變量TLowValue值=昨收價。//If(Low<=Close[1])//語句2,假如當前最低價<=昨收價。//TLowValue=Low;//變量TLowValue值=當前低價。//ReturnTLowValue;//求出當前最低價與昨收價那個為最小值。//End函數3TrueRange,真實振幅范圍:BeginIf(CurrentBar==0)//假如為第一根k。//ReturnHigh-Low;//那振幅就是直接最高價減去最低價。//Else//第二根之后的振幅。//ReturnTrueHigh-TrueLow;//就是函數TrueHigh值減去函數TrueLow值。//End函數4AvgTrueRange,求平均真實振幅:ParamsNumericLength(10);//聲明數值型參數Length,就是周期了,賦值給它10周期。//BeginReturnAverage(TrueRange,Length);//求出10個周期真實振幅平均值。//End函數5ATR,表達的意思跟第四個函數完全一樣,這里給它寫出來:ParamsNumericLength(14);//聲明數值型參數Length,初值為14周期。BeginPlotNumeric("ATR",AvgTrueRange(Length));//在k線圖上畫出ATR出來,它的值是14根k線的平均振幅值。End以上是知道了ATR是如何求出來的。一般都只用它來觀察波幅集中區域,從周期日k逐步觀察統計到你所用的周期,會知道,這個品種它一天大概集中振幅多大。觀察ATR的值,看上面代碼可以知道,直接把參數14改成1就可以觀察它每根k線的波幅了。ATR策略信號出入場規則:當價格比上一個交易日收盤價高2ATR時買入,當價格比上一個交易日收盤價低2ATR時賣出。策略信號代碼如下:ParamsNumericLength(14);VarsNumericSeriesatr;Numericupline;Numericdownline;Numericmyprice;Beginatr=Average(TrueRange,Length);upline=Close[1]+2*atr;downline=Close[1]-2*atr;PlotNumeric("k",upline);PlotNumeric("h",downline);If(MarketPosition!=1&&High>=upline){myprice=Max(upline,Open);Buy(1,myprice);}If(MarketPosition==1AndLow<=downline){myprice=Min(downline,Open);Sell(1,myprice);}If(MarketPosition!=-1AndLow<=downline){myprice=Min(downline,Open);SellShort(1,myprice);}If(MarketPosition==-1&&High>=upline){myprice=Max(upline,Open);BuyToCover(1,myprice);}End;信號代碼注解:Params定義參數段,用于設置策略中使用的變量的初始值。NumericLength(14);定義一個名為

Length

的數值型變量,并初始化為14,用于計算ATR的周期。Vars定義變量段,用于聲明策略中使用的變量。NumericSeriesatr;聲明一個名為

atr

的數值型序列,用于存儲ATR值。Numericupline;聲明一個名為

upline

的數值型變量,用于存儲買入觸發價格。Numericdownline;聲明一個名為

downline

的數值型變量,用于存儲賣出觸發價格。Numericmyprice;聲明一個名為

myprice

的數值型變量,用于存儲實際交易的價格。Begin開始策略的主體部分。atr=Average(TrueRange,Length);計算ATR值,即真實波動幅度的

Length

周期移動平均。upline=Close[1]+2*atr;設置買入觸發價格,即上一個交易日的收盤價加上2倍ATR。downline=Close[1]-2*atr;設置賣出觸發價格,即上一個交易日的收盤價減去2倍ATR。PlotNumeric("k",upline);在圖表上繪制名為"k"的買入觸發線。PlotNumeric("h",downline);在圖表上繪制名為"h"的賣出觸發線。If(MarketPosition!=1&&High>=upline){...}如果當前市場位置不是多頭且最高價達到或超過買入觸發價格,則執行以下操作。myprice=Max(upline,Open);設置買入價格為開盤價和買入觸發價格中的較高者。Buy(1,myprice);執行買入操作。If(MarketPosition==1AndLow<=downline){...}如果當前市場位置是多頭且最低價達到或低于賣出觸發價格,則執行以下操作。myprice=Min(downline,Open);設置賣出價格為開盤價和賣出觸發價格中的較低者。Sell(1,myprice);執行賣出操作。If(MarketPosition!=-1AndLow<=downline){...}如果當前市場位置不是空頭且最低價達到或低于賣出觸發價格,則執行以下操作。myprice=Min(downline,Open);設置賣出開空的價格為開盤價和賣出觸發價格中的較低者。SellShort(1,myprice);執行賣出開空操作。If(MarketPosition==-1&&High>=upline){...}如果當前市場位置是空頭且最高價達到或超過買入觸發價格,則執行以下操作。myprice=Max(upline,Open);設置買入平空的價格為開盤價和買入觸發價格中的較高者。BuyToCover(1,myprice);執行買入平空操作。End看來不行得修改下:(代碼)ParamsNumericLength(14);NumericLength3(360);VarsNumericSeriesatr;Numericupline;Numericdownline;Numericmyprice;NumericSeriesAvgValue3;Beginatr=Average(TrueRange,Length);upline=Close[1]+2*atr;downline=Close[1]-2*atr;PlotNumeric("k",upline);PlotNumeric("h",downline);AvgValue3=AverageFC(Close,Length3);PlotNumeric("AvgValue3",AvgValue3);If(MarketPosition!=1&&High>=uplineandHigh>AvgValue3){myprice=Max(upline,Open);Buy(1,myprice);}If(MarketPosition==1AndLow<=downline){myprice=Min(downline,Open);Sell(1,myprice);}If(MarketPosition!=-1AndLow<=downlineAndLow<AvgValue3){myprice=Min(downline,Open);SellShort(1,myprice);}If(MarketPosition==-1&&High>=upline){myprice=Max(upline,Open);BuyToCover(1,myprice);}End修改后的代碼注解:Params(參數)*`NumericLength(14);`定義了一個名為`Length`的數值型參數,其默認值為14。這個參數可能用于后續計算中的時間周期或數據點的數量。*`NumericLength3(360);`定義了另一個名為`Length3`的數值型參數,其默認值為360。這個參數可能用于另一個需要更長時間周期或數據點數量的計算。Vars(變量)定義了一系列數值型變量和序列,用于在策略執行過程中存儲和計算數據。 +`NumericSeriesatr;` 平均真實范圍(ATR)的序列。 +`Numericupline;` 上軌線的數值。 +`Numericdownline;` 下軌線的數值。 +`Numericmyprice;` 交易價格的數值。 +`NumericSeriesAvgValue3;` 基于`Length3`的收盤價的平均值序列。策略邏輯1.計算ATR`atr=Average(TrueRange,Length);`計算最近`Length`個時間周期的平均真實范圍(ATR)。2.計算上下軌線`upline=Close[1]+2*atr;``downline=Close[1]-2*atr;`基于前一個周期的收盤價和ATR的兩倍值來計算上下軌線。3.繪制軌線使用`PlotNumeric`函數來繪制上下軌線。4.計算長期平均值`AvgValue3=AverageFC(Close,Length3);`計算最近`Length3`個時間周期的收盤價的平均值5.交易邏輯*當不在多頭倉位(`MarketPosition!=1`)且當前最高價高于上軌線并高于

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論