Đột phá biến động thích ứng cho xu hướng và đảo ngược


Ngày tạo: 2024-01-25 12:43:43 sửa đổi lần cuối: 2024-01-25 12:43:43
sao chép: 1 Số nhấp chuột: 619
1
tập trung vào
1617
Người theo dõi

Đột phá biến động thích ứng cho xu hướng và đảo ngược

Tổng quan

Chiến lược này kết hợp với chỉ số giá VFI và đường trung bình di chuyển để xây dựng xu hướng, và kết hợp với chỉ số Brin để xác định sự kiện đảo ngược, để thực hiện sự kết hợp hữu cơ giữa giao dịch xu hướng và giao dịch chấn động.

Nguyên tắc chiến lược

Chiến lược này bao gồm:

  1. Chỉ số VFI đánh giá xu hướng. Kết hợp tỷ lệ biến đổi đối số của giá điển hình và biến đổi khối lượng giao dịch để đánh giá xu hướng giá, để đạt được sự phù hợp hợp với giá cả.

  2. Chỉ số chênh lệch EMA đánh giá xu hướng. Tính tỷ lệ chênh lệch giữa đường 20 và đường 50 để đánh giá xu hướng xu hướng đường dài.

  3. Chỉ số Blink đánh giá ngược lại. Blink là đường trung bình di chuyển đơn giản 20 ngày, và băng thông là đường trung bình 1,5 lần.

  4. Chỉ số VFI đánh giá mức độ đảo ngược. Các giá trị VFI gần giới hạn trên và dưới (,20) cho rằng xu hướng đảo ngược có khả năng cao hơn.

Trong trường hợp thỏa mãn các điều kiện của thời gian giao dịch, khi giá phá vỡ đường dây Bollin lên đường và chỉ số chênh lệch VFI, EMA đồng hướng lạc quan, làm nhiều; khi giá rơi xuống đường dây Bollin xuống đường hoặc VFI đạt đến một mức giá thấp.

Lợi thế chiến lược

  1. Việc đưa ra chỉ số VFI giúp cho sự phù hợp của quan hệ giá trị và số lượng hợp lý hơn, tránh theo dõi mù quáng giá cả.

  2. Sự phân biệt giá trị của EMA kết hợp với VFI làm cho sự phân biệt xu hướng ổn định và đáng tin cậy hơn.

  3. Blinking được kết hợp với phán đoán đảo ngược của chỉ số VFI, làm cho chiến lược phù hợp hơn với biến động hai chiều của thị trường.

Rủi ro chiến lược

  1. Các chỉ số giá cả không hoàn toàn tránh được nguy cơ phá vỡ giả.

  2. Mức chênh lệch EMA bị chậm trễ và không thể phản ứng kịp thời với các biến động ngắn hạn.

  3. Thiết lập không đúng các tham số Brin có thể dẫn đến rủi ro giao dịch thường xuyên hoặc captured market.

Giải pháp đối phó với rủi ro:

  1. Kết hợp nhiều chỉ số để đánh giá xu hướng, tránh sự phụ thuộc vào chỉ số đơn lẻ.

  2. Các tham số EMA không nên quá lớn hoặc quá nhỏ, điều chỉnh tham số thích hợp.

  3. Kiểm tra tác động của thay đổi tham số của Brin trong các trường hợp thị trường khác nhau.

Hướng tối ưu hóa chiến lược

  1. Tiếp tục tối ưu hóa các tham số VFI để làm cho nó nhạy cảm hơn.

  2. Thêm các đánh giá đột phá dựa trên kênh giá hoặc chỉ số Envelopes.

  3. Thử nghiệm thêm các chỉ số giá cả như OBV, PVT.

  4. Giới thiệu công nghệ học máy và AI để tối ưu hóa động của tham số.

Tóm tắt

Chiến lược tổng hợp xem xét phán đoán xu hướng và phán đoán đảo ngược, sử dụng chỉ số VFI, chênh lệch EMA và đai Brin, để nắm bắt biến động hai chiều của thị trường. Bước tiếp theo sẽ tiếp tục tối ưu hóa cài đặt tham số, làm phong phú cơ sở phán đoán, mở rộng phạm vi áp dụng, nâng cao lợi nhuận ổn định của chiến lược.

Mã nguồn chiến lược
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 00:00:00
period: 1h
basePeriod: 15m
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/
// © beststockalert

//@version=4

strategy(title="Super Bollinger Band Breakout", shorttitle = "Super BB-BO", overlay=true)
source = close

length = input(130, title="VFI length")
coef = input(0.2)
vcoef = input(2.5, title="Max. vol. cutoff")
signalLength=input(5)


// session 


pre = input( type=input.session, defval="0400-0935")
trade_session = input( type=input.session, defval="0945-1700")
use_trade_session = true
isinsession = use_trade_session ? not na(time('1', trade_session)) : true


is_newbar(sess) =>
    t = time("D", sess)
    not na(t) and (na(t[1]) or t > t[1])


is_session(sess) =>
    not na(time(timeframe.period, sess))

preNew = is_newbar(pre)
preSession = is_session(pre)

float preLow = na
preLow := preSession ? preNew ? low : min(preLow[1], low) : preLow[1]

float preHigh = na
preHigh := preSession ? preNew ? high : max(preHigh[1], high) : preHigh[1]



//   vfi 9lazybear 
ma(x,y) => 0 ? sma(x,y) : x

typical=hlc3
inter = log( typical ) - log( typical[1] )
vinter = stdev(inter, 30 )
cutoff = coef * vinter * close
vave = sma( volume, length )[1]
vmax = vave * vcoef
vc = iff(volume < vmax, volume, vmax) //min( volume, vmax )
mf = typical - typical[1]
vcp = iff( mf > cutoff, vc, iff ( mf < -cutoff, -vc, 0 ) )

vfi = ma(sum( vcp , length )/vave, 3)
vfima=ema( vfi, signalLength )


//ema diff


ema20 = ema(close,20)
ema50 = ema(close,50)


diff = (ema20-ema50)*100/ema20
ediff = ema(diff,20)

//
basis = sma(source, 20)
dev = 1.5 * stdev(source, 20)

upper = basis + dev
lower = basis - dev


ema9 = ema(source, 9)

if ( ((crossover(source, upper) and diff>ediff and diff>0) or (close>upper and (vfi >0 or vfima>0 or ediff>0.05) and (vfi<14 or vfima<14)) ))
    strategy.entry("Long", strategy.long)


if (crossunder(source, lower) or vfi>19 or vfima>19 or diff<(ediff+0.01) )
    strategy.close("Long")