72s: Đường trung bình chuyển động thân xe thích nghi +

Tác giả:ChaoZhang, Ngày: 2022-05-26 17:17:37
Tags:HMAATR

Một vấn đề thách thức cho các nhà giao dịch mới bắt đầu là phân biệt điều kiện thị trường, cho dù thị trường hiện tại có cung cấp khả năng tốt nhất để tích lũy lợi nhuận, sớm nhất, trong thời gian ngắn nhất có thể, hay không.

Trong ngày, chúng tôi đã thấy một số hành động lớn của các ngân hàng lớn có thể được định nghĩa hoặc xoay quanh bởi HMA 200. Tôi đã nghĩ về việc làm cho hình ảnh phù hợp hơn với động lực giá (loại bỏ chuyển động lớn và tiếng ồn nhỏ) để có được các dấu hiệu rõ ràng hơn về khi nó bắt đầu xảy ra. Vì vậy, sẽ dễ dàng hơn để xem một cái nhìn khi sức mạnh bắt đầu thực sự diễn ra, với biểu đồ ít lộn xộn hơn.

HMA thích nghi này đang sử dụng tính năng Pine Script mới hiện hỗ trợ các đối số Dynamic Length cho một số hàm Pine. (đọc:https://www.tradingview.com/blog/en/pine...). Nó không hỗ trợ trực tiếp HMA () tích hợp, nhưng may mắn thay chúng ta có thể sử dụng công thức wma () của nó để xây dựng. (Lưu ý: Tôi đã tinh chỉnh một chút công thức HMA đã phổ biến ở đây bằng cách sử dụng int đơn giản))) thay vì tròn))) trên chiều dài của wmas, vì tôi thấy nó phù hợp chính xác với giao dịchview () tích hợp trong HMA)).

Bạn có thể chọn khía cạnh nào mà thời gian HMA thích nghi sẽ thích nghi.

Trong nghiên cứu này, tôi trình bày nó với hai tùy chọn: khối lượng và biến động. Nó sẽ chuyển động nhanh hơn hoặc chậm hơn tùy thuộc vào tình huống mà khía cạnh hiện đang trong đó. tức là: Khi khối lượng nói chung thấp hoặc các chỉ số biến động không có, giá sẽ không di chuyển nhiều, vì vậy MA thích nghi sẽ chậm lại bằng cách kéo dài động thời gian xem lại, và ngược lại, và vân vân.

Đánh dấu màu sắc trong Adaptive giống như tình huống được giải thích ở trên. Ngoài ra, tôi cũng kết hợp nó với tính toán độ dốc của MA để giúp đo cường độ xu hướng hoặc các điều kiện bên cạnh / đập.

Bằng cách này khi chúng ta sử dụng nó như là hỗ trợ động / kháng cự nó sẽ được trực quan đáng tin cậy hơn.

Thứ hai, và quan trọng hơn, nó có thể giúp chúng tôi các nhà giao dịch với thông tin xác suất tốt hơn về việc liệu một giao dịch có nên được thực hiện hay không. tức là: Nếu trong thời gian trung gian thị trường sẽ không cung cấp nhiều chuyển động, bất kỳ lợi nhuận nào cũng sẽ chỉ nhiều. Trong hầu hết các trường hợp, chúng tôi có thể tốt hơn để dành tiền cho sau hoặc đặt nó ở nơi khác.

Cách sử dụng: Ngoài hỗ trợ / kháng động tốt hơn và xác nhận đột phá rõ ràng hơn, MA có màu như sau: Màu vàng: Thị trường đang trong quá trình củng cố hoặc phẳng. Cho dù nó có mặt, hỗn loạn, hoặc trong các chuyển động tương đối nhỏ. Nếu nó xuất hiện trong một thị trường xu hướng, nó có thể là một dấu hiệu sớm hơn rằng xu hướng hiện tại có thể sắp thay đổi hướng của nó, hoặc xác nhận một sự phá vỡ giá sang một bên khác. Màu xanh sáng hoặc màu đỏ sáng: Cho biết nếu một xu hướng đang hình thành nhưng vẫn tương đối yếu (hoặc trở nên yếu hơn), vì nó không có khối lượng hoặc biến động để hỗ trợ. Xanh tối hay Đỏ tối: Đây là nơi chúng ta có thể mong đợi một sự chuyển động giá tốt và mạnh mẽ.

Cài đặt: Bộ sạc: Chọn khía cạnh nào HMA của bạn nên cắm vào, do đó nó sẽ thích nghi với nó. Thời gian tối thiểu, thời gian tối đa: 172 - 233 chỉ là thiết lập của riêng tôi để vượt qua HMA 200 tĩnh cho nội ngày. Tôi thấy nó trong phong cách giao dịch của tôi tốt nhất trong 15m tf trong hầu hết các cặp, và 15m đến 1H cho một số cổ phiếu. Nó cũng hoạt động tốt với EMA 200 thông thường, đôi khi như thể chúng làm việc cùng nhau trong việc xác định giá nên đi đâu. Nhưng bạn có thể thử nghiệm với các phạm vi khác, rộng hơn hoặc hẹp hơn. Đặc biệt nếu bạn đã có một chiến lược đã được thiết lập để làm theo. Như bạn có thể làm với: Mức ngưỡng khu vực hợp nhất: Điều này có liên quan đến tính toán độ dốc. Số lớn hơn có nghĩa là MA của bạn cần mức độ lớn hơn để xác định thị trường là ngoài khu vực phẳng (màu vàng). Điều này có thể hữu ích nếu cần thiết để làm sáng bộ lọc hoặc ngược lại. Màu nền: Chỉ là một màu sắc khác để giúp làm nổi bật sự khác biệt trong điều kiện thị trường.

Cảnh báo: Có hai cảnh báo: Phá vỡ khối lượng: khi khối lượng bị phá vỡ trên mức trung bình, và Volatility Meter: khi thị trường có nhiều khả năng là về để có thời điểm của nó của bàn chải lắc lớn.

Sử dụng: Rất rất tốt BÁY nhập để bắt được chuyển động lớn nếu:

  1. Giá là trên MA. (Nó là tốt nhất khi giá cũng không phải là xa từ MA, hoặc bạn cũng có thể sử dụng dao động khoảng cách để giúp đỡ quá)
  2. Màu sắc của HMA là màu xanh lá cây đậm hơn, có nghĩa là nó nằm trên cắm sạc với diện mạo mà bạn chọn.
  3. Chỉ số RSI trên 50.

Nhìn rõ, tín hiệu nhập SELL giống như ở trên, chỉ là ngược lại.

backtest

img


/*backtest
start: 2022-04-25 00:00:00
end: 2022-05-24 23:59:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// 2020 © io72signals / Antorio Bergasdito

//@version=4
study("72s: Adaptive Hull Moving Average+", shorttitle="72s: Adaptive HMA+", overlay=true)

//Optional Inputs
charger     = input("Volatility", title="Choose which charger to adapt to:", options=["Volatility", "Volume"])
src         = input(close, title="Source:")
minLength   = input(172, title="Minimum period:")
maxLength   = input(233, title="Maximum period:")
adaptPct    = 0.03141 //input(3.141, minval = 0, maxval = 100, title="Adapting Percentage:") / 100.0

flat        = input(17, title="Consolidation area is when slope below:")

showMinor   = input(true, title="Show minor xHMA+", group="Minor Adaptive HMA+ Period")
minorMin    = input(89, title="Minimum:", group="Minor Adaptive HMA+ Period", inline="mHMA+")
minorMax    = input(121, title="Maximum:", group="Minor Adaptive HMA+ Period", inline="mHMA+")

showZone    = input(false, title="Show Adaptive HMA+ Distance Zone", group="DISTANCE ZONE")
mult        = input(2.7, title="Distance (Envelope) Multiplier", step=.1, group="DISTANCE ZONE") 

showSignals = input(true, title="Show Possible Signals", group="OTHER")
useBg       = input(true, title="Background color to differentiate movement", group="OTHER")

//Source to adapt to
highVolatility = atr(14) > atr(46)                  //Volatility Meter. Change it to match to your strat/pair/tf if needs.

rsivol  = rsi(volume,14)                            //RSI Volume Osc:
osc     = hma(rsivol,10)                            //Basically it's almost the same as: vol > ma(volume,20)
volBreak = osc > 49                                 //but smoothed using weight to filter noise or catch earlier signs.    

//Dynamics 
var float dynamicLength = avg(minLength,maxLength)
var float minorLength   = avg(minorMin,minorMax)
plugged = charger=="Volume"? volBreak : highVolatility
dynamicLength   := iff(plugged, max(minLength, dynamicLength * (1 - adaptPct)), min(maxLength, dynamicLength * (1 + adaptPct)))
minorLength     := iff(plugged, max(minorMin, minorLength * (1 - adaptPct)), min(minorMax, minorLength * (1 + adaptPct)))

//Slope calculation to determine whether market is in trend, or in consolidation or choppy, or might about to change current trend
slope_period = 34, range = 25, pi = atan(1) * 4
highestHigh = highest(slope_period), lowestLow = lowest(slope_period)
slope_range = range / (highestHigh - lowestLow) * lowestLow
calcslope(_ma)=>
    dt = (_ma[2] - _ma) / src * slope_range  
    c = sqrt(1 + dt * dt)
    xAngle = round(180 * acos(1 / c) / pi)
    maAngle = iff(dt > 0, -xAngle, xAngle)
    maAngle

//MA coloring to mark market dynamics 
dynColor(_ma,_col1a,_col1b, _col2a, _col2b, _col0) =>
    slope = calcslope(_ma)
    slope >= flat ? plugged? _col1a : _col1b :
     slope < flat and slope > -flat ? _col0 : 
     slope <= -flat ? plugged? _col2a : _col2b : _col0

//Adaptive HMA 
xhma(_src,_length) => _return = wma(2 * wma(_src, _length / 2) - wma(_src, _length), floor(sqrt(_length))) 

dynamicHMA  = xhma(src,int(dynamicLength))      //<--Batman - Our main xHMA+
minorHMA    = xhma(src,int(minorLength))        //<--Robin  - Faster minor xHMA+ (Optional). Can be use to assist for 
                                                //            faster entry, slower exit point, or pullbacks info too.

//Plot
plot(dynamicHMA, "Dynamic HMA+", dynColor(dynamicHMA, #6fbf73, #c0f5ae, #eb4d5c, #f2b1d4, color.yellow), 3)
plot(showMinor? minorHMA:na, "minor HMA+", dynColor(minorHMA, #6fbf73, #c0f5ae, #eb4d5c, #f2b1d4, color.yellow), 1)

//Backgroud coloring
notgreat = calcslope(dynamicHMA) < flat and calcslope(dynamicHMA) > -flat
bgcolor(useBg? plugged? na : notgreat? #757779: #afb4b9 : na)

// Comparative study
// staticHMA = hma(close, 200)
// plot(staticHMA,  "Static HMA")
// plotchar(dynamicLength, "dynamicLengthgth", "", location.top) //check output the calculated Dynamic Length in the Data Window.

//{ DISTANCE ZONE
// Envelope the main DynamicHMA with ATR band, just one way to approximate current price distance to MA. Other usages/methods may vary.
upperTL = dynamicHMA + mult * atr(40)        ,  lowerTL = dynamicHMA - mult * atr(40)           //<--Half distance zone
topTL = dynamicHMA + (mult*2) * atr(40)      ,  botTL = dynamicHMA - (mult*2) * atr(40)         //<--One distance zone
stopupperTL = dynamicHMA + (mult/2) * atr(40),  stoplowerTL = dynamicHMA - (mult/2) * atr(40)   //<--Half of the half. If need ie. tighter SL or trailing

// Plotting Distance Zone
plot(showZone?upperTL:na, color=color.green, transp=72)
plot(showZone?lowerTL:na, color=color.red,   transp=72)
plot(showZone?topTL:na, color=color.gray, transp=72)
plot(showZone?botTL:na, color=color.gray, transp=72)
sutl = plot(showZone?stopupperTL:na, color=color.white, transp=100)
sltl = plot(showZone?stoplowerTL:na, color=color.white, transp=100)
colZone = showZone? color.purple:color.new(color.white,100)
fill(sutl, sltl, color=colZone, transp=90)
//}

//{ SIGNALS
_slope = calcslope(dynamicHMA)

// Entry Base; When HMA+ turn to a darker color and market is out from low volatility. 
// Remember to also considering price distance to MA and strength (ie. RSI)
_upSig = _slope >=  flat and plugged
_dnSig = _slope <= -flat and plugged
buy  = _upSig and not _upSig[1] 
sell = _dnSig and not _dnSig[1] 

// Possible Exits. These only based on faster xHMA+
_upExit = _slope>=flat  and (not plugged) and close<minorHMA 
_dnExit = _slope<=-flat and (not plugged) and close>minorHMA 
fastExits  = (_upExit and not _upExit[1]) or (_dnExit and not _dnExit[1])

// Caution Sign. When Price crossed most outer distance zone. Could also be a good TP spot if your already in profit
_topWarn    = high>topTL
_botWarn    = low<botTL
warningSigns = (_topWarn and not _topWarn[1]) or (_botWarn and not _botWarn[1])

// Plot 'em up
atrPos = 0.72 * atr(5)
plotchar(showSignals and buy?  dynamicHMA-atrPos: na, color=color.green, location=location.absolute, char="⬆", size = size.tiny)
plotchar(showSignals and sell? dynamicHMA+atrPos: na, color=color.red,   location=location.absolute, char="⬇", size = size.tiny)
plotchar(showSignals and fastExits? _upExit? minorHMA+atrPos: _dnExit? minorHMA-atrPos: na: na, 
     color=_upExit?color.green:_dnExit?color.red: na, location=location.absolute, char="ⓧ", size=size.tiny)
plotchar(showSignals and warningSigns? _topWarn? high+atrPos: _botWarn? low-atrPos: na: na, 
     color=color.orange, location=location.absolute, char="⚠", size=size.tiny)
//} 

//{ ALERTS
// Previous alerts:
// alertcondition(highVolatility and not notgreat, "72s: Volatility Meter", "Market is on the move")
// alertcondition(volBreak[1] and volBreak and not notgreat, "72s: Volume Break", "Volume has just break above average")

// New Alert: 
// Delete what alert you don't need:
if buy 
    alert("Possible Buy Signal at" + tostring(close), alert.freq_once_per_bar_close)
if sell
    alert("Possible Sell Signal at" + tostring(close), alert.freq_once_per_bar_close)
    
if fastExits and _upExit
    alert("Price has just crossed down minor xHMA+ at" + tostring(close), alert.freq_once_per_bar_close)
if fastExits and _dnExit
    alert("Price has just crossed up minor xHMA+ at" + tostring(close), alert.freq_once_per_bar_close)
    
if warningSigns and _topWarn
    alert("Price has just crossed above top xHMA+ zone", alert.freq_once_per_bar_close)
if warningSigns and _botWarn
    alert("Price has just crossed below bottom xHMA+ zone", alert.freq_once_per_bar_close)
//}
    




if buy
    strategy.entry("Enter Long", strategy.long)
else if sell
    strategy.entry("Enter Short", strategy.short)

Có liên quan

Thêm nữa