Chiến lược xu hướng khối lượng giá

Tác giả:ChaoZhang, Ngày: 2023-12-25 13:09:48
Tags:

img

Tổng quan

Chiến lược này sử dụng các chỉ số động lực để theo dõi các biến động giá ngắn hạn và xác định hướng xu hướng thị trường cho các hoạt động mua và bán.

Nguyên tắc

Chiến lược này đầu tiên tính toán đà tăng giá. Bằng cách tính toán sự khác biệt giữa giá trong giai đoạn hiện tại và giá trong giai đoạn trước, nó có thể phản ánh sự thay đổi tuyệt đối của giá trong giai đoạn gần đây nhất. Một giá trị dương cho thấy giá tăng, và một giá trị âm cho thấy giá giảm. Sau đó, trung bình động của giá trị chênh lệch này được tính toán để lọc để có được chỉ số đà tăng giá trung bình.

Khi giá mới nhất lớn hơn động lực trung bình, nó cho thấy giá đang tăng. Khi giá mới nhất thấp hơn động lực trung bình, nó cho thấy giá đang giảm. Xác định hướng xu hướng giá dựa trên chỉ số này. Kết hợp với bộ lọc khuếch đại khối lượng, chỉ có các tín hiệu có khối lượng giao dịch tương đối lớn được chọn trong giao dịch thực tế.

Theo xu hướng tăng và giảm giá được xác định, các hoạt động mua và bán tương ứng được thực hiện.

Phân tích lợi thế

  • Chiến lược đánh giá xu hướng nhanh chóng và có thể nhanh chóng nắm bắt các biến động giá ngắn hạn, phù hợp với các hoạt động ngắn hạn
  • Tránh bị đánh lừa bởi các sự đột phá sai thông qua lọc âm lượng
  • Thực hiện logic hoạt động theo đuổi tăng và giết chết rơi
  • Tần suất giao dịch cao, phù hợp với các nhà đầu tư tích cực

Phân tích rủi ro

  • Thâm hụt đối với tác động của biến động thị trường bất thường, với một số rủi ro tín hiệu sai
  • Rủi ro trượt do giao dịch thường xuyên
  • Có thể bỏ lỡ xu hướng trung bình và dài hạn, và lợi nhuận dài hạn cần được xác minh

Hướng dẫn tối ưu hóa

  • Điều chỉnh các thông số của các chỉ số động lực để tối ưu hóa các hiệu ứng phán đoán
  • Tối ưu hóa các thông số lọc âm lượng để cải thiện chất lượng tín hiệu
  • Tăng cơ chế dừng lỗ để kiểm soát lỗ đơn
  • Bao gồm nhiều yếu tố hơn để đảm bảo nhiều yếu tố

Kết luận

Chiến lược tổng thể theo dõi xu hướng thay đổi giá ngắn hạn thông qua các chỉ số động lực, và nhanh chóng xác định thời gian vào và ra. Những lợi thế là hoạt động nhanh, theo đuổi tăng và giết chết giảm. Những nhược điểm là chất lượng tín hiệu và lợi nhuận dài hạn cần phải được kiểm tra. Thông qua điều chỉnh tham số và cơ chế kiểm soát rủi ro nâng cao, chiến lược có thể trở thành một thành phần quan trọng của các chiến lược tần số cao, kết hợp với các chiến lược tần số thấp khác.


/*backtest
start: 2022-12-18 00:00:00
end: 2023-12-24 00:00:00
period: 1d
basePeriod: 1h
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/
// © russtic

//@version=2

strategy("HA smoothed eliminator v2  ",pyramiding=1, slippage=10, default_qty_type=strategy.percent_of_equity, 
     commission_type=strategy.commission.percent, commission_value=0.075, overlay=true, 
     default_qty_value=100, initial_capital=1000)

FromMonth1 = input(defval=1, title="From Month", minval=1, maxval=12)
FromDay1 = input(defval=1, title="From Day", minval=1, maxval=31)
FromYear1 = input(defval=2019, title="From Year", minval=2010)
ToMonth1 = input(defval=12, title="To Month", minval=1, maxval=12)
ToDay1 = input(defval=31, title="To Day", minval=1, maxval=31)
ToYear1 = input(defval=2020, title="To Year", minval=2010)
start1 = timestamp(FromYear1, FromMonth1, FromDay1, 00, 00)
finish1 = timestamp(ToYear1, ToMonth1, ToDay1, 23, 59)
window1() => true
    
t1 = time(timeframe.period, "0300-1200")
t2 = time(timeframe.period, "0930-1700")
London = na(t1) ? na : green
NY = na(t2) ? na : red

bgcolor(London, title="London")
bgcolor(NY, title="New York")
///////////////////////////
// HA smoothed

len=(1 )
o=ema(open,len)
c=ema(close,len)
h=ema(high,len)
l=ema(low,len)

haclose = (o+h+l+c)/4
haopen = na(haopen[1]) ? (o + c)/2 : (haopen[1] + haclose[1]) / 2
hahigh = max (h, max(haopen,haclose))
halow = min (l, min(haopen,haclose))

len2=(len)
o2=ema(haopen, len2)
c2=ema(haclose, len2)
h2=ema(hahigh, len2)
l2=ema(halow, len2)

buy= (o2<c2) 

closebuy= (o2>c2)

sell= (o2>c2)

closesell= (o2<c2)

//
/// END NEW SCRIPT 

//
//
//                  MERGE SCRIPTS
a1= o2<c2
b1=o2>c2
is_uptrend = (a1)// and (p> 0)
is_downtrend =  (b1)// and (p <0)
barcolor(b1 ? red: a1 ? lime : blue)

//end


// =========================start     PVT -GIVES EACH BAR A VALUE
facton = (true)//, title="arrow elimination (factor) on ")
Length1 = 2//input(2, title="PVT Length", minval=1)

xPrice = close//input(title="Source", type=source, defval=close)
xsma = wma(xPrice, Length1) 
nRes = xPrice - xsma  
pos = iff(nRes > 0, 1,
	     iff(nRes < 0, -1, nz(pos[1], 0))) 
forex= input(true, title = 'strength toggle ')
forexyes = (forex == true)? 10000 : (forex == false)? 1: na

plot(nRes*forexyes , color=aqua, title="strength", transp=100)
// =========================         end pvt
//
//=============================     start factor // ELIMINATES  weak signals
//                  start trend
//
factor = input(600.00, title = "strength elimination") 
factor1 = factor - (factor*2)//input(-100.00, title = "sell strength elimination ") 
facton1 = (facton == true) and is_uptrend == 1 and nRes*forexyes>factor ? 1 : (facton == true) and is_downtrend == 1 and nRes*forexyes<factor1 ? -1 : (facton == false)
// ==================== =====
// 
//===========================    end factor
nRestrend = (nRes*forexyes)
//=========================== plot arrows 
plot1 = iff(is_uptrend[1] == 1, 0 , 1)  
plot2 = iff(is_downtrend[1]  == 1, 0 , 1)
uparrowcond =  is_downtrend ? false : nz(uparrowcond[1], false) == true ? uparrowcond[1] : (facton1 and is_uptrend and nRes*forexyes>factor)
downarrowcond =  is_uptrend ? false : nz(downarrowcond[1], false) == true ? downarrowcond[1] : (facton1 and is_downtrend and nRes*forexyes<factor1)
//prevarrowstate = uparrowcond  ? 1 : downarrowcond ? -1 : nz(prevarrowstate[1], 0)


candledir = (open < close)? 1: (open>close)? -1 : na // ONLY OPENS ON SAME BAR DIRECTION AS SIGNAL



up=nz(uparrowcond[1], false) == false and ( is_uptrend and nRes*forexyes>factor) and candledir ? 1:na
dn=nz(downarrowcond[1], false) == false and ( is_downtrend and nRes*forexyes<factor1) and candledir? -1:na



sig=0
if up==1 
    sig:=1
else
    if dn==-1
        sig:=-1
    else
        sig:=sig[1]
plotarrow(sig[1]!=1 and sig==1?1:na, title="BUY ARROW", colorup=lime, maxheight=80, minheight=50, transp=0)// up arrow 
plotarrow(sig[1]!=-1 and sig==-1?-1:na, title="SELL ARROW", colordown=red, maxheight=80, minheight=50, transp=0)// down arrow

//========================= alert condition
alertcondition(sig[1]!=1 and sig==1?1:na, title="BUY eliminator", message="BUY " ) 
alertcondition(sig[1]!=-1 and sig==-1?-1:na, title="SELL eliminator",  message="SELL ") 


strategy.entry("B", true, when=(sig[1]!=1 and sig==1?1:na) and window1())
strategy.entry("S", false,when=(sig[1]!=-1 and sig==-1?-1:na) and window1())








Thêm nữa