
Chiến lược này là một chiến lược theo dõi xu hướng giao dịch dựa trên chỉ số biến động khối lượng giao dịch được sửa đổi. Nó sử dụng đường trung bình của khối lượng giao dịch, nhận ra các tín hiệu có khối lượng giao dịch tăng lên, do đó phán đoán vào hoặc ra khỏi vị trí.
Các rủi ro này có thể được kiểm soát bằng cách điều chỉnh các tham số, tối ưu hóa cách tính toán các chỉ số và xác nhận kết hợp với các chỉ số khác.
Chiến lược này là một chiến lược theo dõi xu hướng ổn định hơn thông qua bộ dao động khối lượng giao dịch được cải tiến, hỗ trợ đánh giá xu hướng giá, thiết lập hai ngưỡng để mở và dừng vị trí. Không gian tối ưu hóa chủ yếu là về điều chỉnh tham số, lọc tín hiệu và chiến lược dừng lỗ. Nói chung, chiến lược này có một số giá trị thực tế và đáng để nghiên cứu tối ưu hóa thêm.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy('Volume Advanced', default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075, currency='USD')
startP = timestamp(input(2017, "Start Year"), input(12, "Start Month"), input(17, "Start Day"), 0, 0)
end = timestamp(input(9999, "End Year"), input(1, "End Month"), input(1, "End Day"), 0, 0)
_testPeriod() =>
iff(time >= startP and time <= end, true, false)
source = close
vol_length = input(34, title = "Volume - Length")
vol_smooth = input(200,title = "Volume - Smoothing")
volriselen = input(21, title = "Volume - Risinglength")
volfalllen = input(13, title = "Volume - Fallinglength")
threshold = input(1,"threshold")
threshold2 = input(1.2,step=0.1, title="Threshold 2")
direction = input(13,"amount of bars")
volsum = sum(volume, vol_length) / (sum(volume, vol_smooth) / (vol_smooth / vol_length))
LongEntry = (rising(volsum, volriselen) or crossover (volsum, threshold)) and close > close[direction]
ShortEntry = (rising(volsum, volriselen) or crossover (volsum, threshold)) and close < close[direction]
LongExit1 = falling (volsum,volfalllen)
ShortExit1 = falling (volsum,volfalllen)
LongExit2= (crossover(volsum, threshold2) and close < close[direction])
_state = 0
_prev = nz(_state[1])
_state := _prev
if _prev == 0
if LongEntry
_state := 1
_state
if ShortEntry
_state := 2
_state
if _prev == 1
if ShortEntry or LongExit1
_state := 0
_state
if _prev == 2
if LongEntry or ShortExit1
_state := 0
_state
_bLongEntry = _state == 1
_bLongClose = _state == 0
long_condition = _bLongEntry and close > close[direction]
strategy.entry('BUY', strategy.long, when=long_condition)
short_condition = _bLongClose or LongExit2
strategy.close('BUY', when=short_condition)
plot(volsum, color = color.green, title="Vol_Sum")
plot(threshold, color = color.fuchsia, transp=50, title="Threshold")
plot(threshold2, color=color.white, transp = 50, title="Threshold 2")