Chiến lược kết hợp mô hình nến và đột phá EMA nhiều khung thời gian


Ngày tạo: 2024-02-21 15:00:06 sửa đổi lần cuối: 2024-02-21 15:00:06
sao chép: 0 Số nhấp chuột: 585
1
tập trung vào
1617
Người theo dõi

Chiến lược kết hợp mô hình nến và đột phá EMA nhiều khung thời gian

Tổng quan

Chiến lược này kết hợp các chỉ số EMA của khung thời gian đa dạng với phán đoán hình dạng đường K, để thực hiện các tín hiệu dây dài nhạy cảm hơn để thu thập và thoát lỗ.

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

Chính sách này được đánh giá dựa trên một số chỉ số:

  1. EMA trung bình: sử dụng 13 chu kỳ, 21 chu kỳ 2 nhóm EMA, đánh giá giá phá vỡ hình thành tín hiệu giao dịch.

  2. Hình dạng đường K: Xác định hướng của thực thể đường K, được sử dụng cùng với chỉ số EMA, lọc giả phá vỡ.

  3. Hỗ trợ kháng cự: Xây dựng từ 10 chu kỳ gần đây nhất, đánh giá đột phá thông qua khu vực tăng cường tín hiệu đáng tin cậy.

  4. Thời gian tăng điểm: 120 chu kỳ giá đóng cửa được đánh giá là tăng điểm trên giá mở cửa, như một phán quyết phụ trợ.

Quy tắc tạo tín hiệu giao dịch là:

  1. Tín hiệu đa đầu: EMA nhanh vượt EMA chậm lên, và là đường K đường dương, đóng kho trống mở nhiều.

  2. Tín hiệu đầu trống: EMA nhanh giảm xuống EMA chậm, và là đường K âm đạo, xóa nhiều vị trí.

  3. Lệnh dừng lỗ: Lệnh dừng lỗ rút khỏi vị trí hiện tại khi có tín hiệu phản hồi.

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

  1. Các chỉ số EMA có nhiều khung thời gian, để đánh giá xu hướng một cách đáng tin cậy hơn, tránh phá vỡ giả.
  2. K-line được sử dụng để lọc theo hướng thực thể và xác định xu hướng chính xác hơn.
  3. Tăng thời gian phán đoán và hỗ trợ phán đoán kháng cự, đảm bảo chất lượng tín hiệu.
  4. Sử dụng phương pháp dừng lỗ để giảm nguy cơ mất mát.

Rủi ro chiến lược

  1. Bước đột phá không hiệu quả mang lại rủi ro thiệt hại. Ngay cả khi đưa ra phán quyết của thực thể EMA và K-line trong nhiều khung thời gian, không thể hoàn toàn tránh được tác động của đột phá không hiệu quả đối với chiến lược.
  2. Các tham số lựa chọn rủi ro. Các tham số không được thiết lập đúng như chu kỳ EMA, chu kỳ phán đoán đường K, sẽ dẫn đến giảm chất lượng tín hiệu.
  3. Rủi ro thất bại kháng cự hỗ trợ. Sự thất bại kháng cự hỗ trợ lịch sử là một tình huống phổ biến, điều này cũng có thể dẫn đến không đủ động lực khi tín hiệu được tạo ra.
  4. Nguy cơ thất bại theo thời gian. Tình huống theo thời gian thay đổi, không thể hoàn toàn dựa vào thời gian.

Những rủi ro trên có thể được giảm thiểu bằng cách tránh quá tối ưu hóa, lựa chọn tham số thận trọng, kiểm soát chặt chẽ quy mô vị trí.

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

  1. Giới thiệu mô hình học máy hỗ trợ phán đoán. Mô hình phân loại có thể được đào tạo để phán đoán hướng của thực thể K-line, cải thiện độ chính xác của phán đoán.
  2. Thêm các cơ chế dừng tự điều chỉnh, chẳng hạn như trailing stop hoặc dừng dựa trên tỷ lệ biến động.
  3. Kết hợp với phân tích cảm xúc, đưa ra một số cơ chế đánh giá dư luận truyền thông, tránh các tin tức tiêu cực quan trọng ảnh hưởng đến chiến lược.
  4. Thêm mô-đun quản lý vị thế. Ví dụ như giới thiệu tỷ lệ vị thế cố định, hoặc mô-đun điều chỉnh vị thế dựa trên quản lý tài chính.

Tóm tắt

Chiến lược này tích hợp các chỉ số EMA của khung thời gian đa dạng với phán đoán thực thể K-line, để có được phán đoán xu hướng đáng tin cậy hơn. Đồng thời kết hợp với hỗ trợ kháng cự và thời gian, hỗ trợ để đảm bảo chất lượng tín hiệu. Bằng cơ chế tín hiệu chống tay dừng, có thể kiểm soát hiệu quả một lần dừng. Trong tương lai có thể được tối ưu hóa bằng cách giới thiệu mô hình học máy, điều chỉnh dừng, phân tích cảm xúc và mô-đun quản lý vị trí, để làm cho chiến lược trở nên mạnh mẽ hơn.

Mã nguồn chiến lược
/*backtest
start: 2023-02-14 00:00:00
end: 2024-02-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title='ck - CryptoSniper Longs Only (Strategy)', shorttitle='ck - CryptoSniper Longs (S) v1', overlay=true, precision=2, commission_value=0.25, default_qty_type=strategy.percent_of_equity, pyramiding=0, default_qty_value=100, initial_capital=100)

open_long = 0
close_position = 0
last_long=close
last_short=close

//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance Channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=false

//-----------------Support and Resistance 
RST = input(title='Support / Resistance length:', defval=10) 
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)

//--------------------Trend colour ema------------------------------------------------// 
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0

//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0

//=============Hull MA//
show_hma = false
hma_src = input(close, title="HullMA Source:")
hma_base_length = input(8, minval=1, title="HullMA Base Length:")
hma_length_scalar = input(5, minval=0, title="HullMA Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))

//============ signal Generator ==================================//
Period=input(title='Period', defval='120')
ch1 = request.security(syminfo.tickerid, Period, open)
ch2 = request.security(syminfo.tickerid, Period, close)

// Signals//
long = crossover(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
short = crossunder(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])
long_signal = crossover(last_long, last_short) ? 1 : -1
short_signal = crossover(last_short, last_long) ? -1 : 1

if (long_signal == 1)
    strategy.entry("Long Open", strategy.long)

if (short_signal == -1)
    strategy.close("Long Open")
    
if (long_signal[1] == 1 and short_signal[1] == 1)
    open_long := 1
    close_position := 0

if (short_signal[1] == -1 and long_signal[1] == -1)
    open_long := 0
    close_position := 1

plotshape(open_long == 1, title="Open Long", location=location.belowbar, style=shape.triangleup, size=size.small, color=green, transp=10)
plotshape(close_position == 1, title="Close Long", location=location.abovebar, style=shape.triangledown, size=size.small, color=red, transp=10)
//plot(0, title="Trigger", color=white)

///////////////////////////////////////////////////////////////////////////////////////////