Chiến lược trung bình di chuyển chậm


Ngày tạo: 2023-12-07 15:21:45 sửa đổi lần cuối: 2023-12-07 15:21:45
sao chép: 0 Số nhấp chuột: 636
1
tập trung vào
1619
Người theo dõi

Chiến lược trung bình di chuyển chậm

Tổng quan

Chiến lược này sử dụng đường Đông Dương 24 chu kỳ kết hợp với đường trung bình 200 chu kỳ làm tín hiệu giao dịch chính. Điểm nhập cảnh chọn nhượng bộ khi sóng đỏ-xanh đi xuống và chọn nhượng bộ khi sóng lên.

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

Các nguyên tắc chính của chiến lược này bao gồm:

  1. Xây dựng kênh Dongguan bằng cách sử dụng các giá cao nhất và thấp nhất trong 24 chu kỳ, cho thấy có thể có sự sụt giảm lớn khi giá vượt qua kênh này.

  2. 200 đường trung bình chu kỳ là điều kiện lọc nhiều không gian, nếu phá vỡ đường Đông Dương và giá ở phía bên kia đường trung bình, cho rằng thị trường có thể bị đảo ngược.

  3. Tín hiệu nhập cảnh là:

  • Làm trống: Giá đóng cửa của một đường K trước đó lớn hơn đường đi Dongguan và thấp hơn đường trung bình 200 chu kỳ, giá mở cửa thấp hơn giá đóng cửa và giá thấp nhất cũng thấp hơn đường trung bình 200 trong ngày, sẽ tạo ra tín hiệu làm trống
  • Làm nhiều: Giá đóng cửa K trước thấp hơn đường sắt dưới đường và cao hơn đường trung bình 200 chu kỳ, giá mở cửa cao hơn giá đóng cửa và cao hơn đường trung bình 200 ngày, tạo ra tín hiệu làm nhiều
  1. Giá dừng lỗ là giá cao nhất trong 3 đường K gần nhất, giá dừng lỗ là giá mở lỗ trừ đi chênh lệch giữa giá dừng và mở lỗ gấp 3 lần. Cách tính giá dừng và dừng lỗ nhiều hơn là ngược lại với việc làm giảm giá.

  2. Điểm mạnh của chiến lược này là sử dụng hỗn hợp các bộ lọc bằng đường Dongxian + đồng nhất, tránh sự sai lệch của chỉ số kỹ thuật đơn lẻ, tăng đáng kể tỷ lệ chiến thắng của chiến lược.

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

  1. Tỷ lệ chiến thắng cao: Sử dụng kết hợp giữa đường Đông Dương và chỉ số đường trung bình, có thể tránh được những tổn thất không cần thiết do sai lệch chỉ số kỹ thuật đơn lẻ.

  2. Có thể kiểm soát rủi ro: Sử dụng giá cao nhất / giá thấp nhất gần đây làm điểm dừng, kiểm soát hiệu quả tổn thất đơn lẻ.

  3. Dễ dàng sử dụng: Chỉ số và logic rất đơn giản, dễ hiểu và dễ thực hiện.

  4. Khả năng ứng dụng cao: ít tham số chiến lược, ổn định tốt trong các giống và chu kỳ khác nhau.

Phân tích rủi ro

Chiến lược này có những rủi ro:

  1. Rủi ro của tình huống cực đoan: Nếu gặp phải tình huống đơn phương lớn, có thể kích hoạt dừng lỗ hoặc làm tăng lỗ. Có thể giải quyết bằng cách nới lỏng mức dừng lỗ thích hợp, giảm vị thế.

  2. Nguy cơ sai lầm tín hiệu ra sân: Sử dụng tín hiệu phản đối mới làm tín hiệu ra sân, có thể đi vào và ra sân thường xuyên trong tình huống chấn động, có tổn thất điểm trượt không cần thiết. Có thể giải quyết bằng cách tối ưu hóa logic ra sân.

  3. Rủi ro tối ưu hóa tham số: Chu kỳ đường Dongguan và thiết lập tham số đường trung bình không đúng có thể dẫn đến tín hiệu thường xuyên hoặc chậm, có thể giảm nguy cơ này bằng cách tối ưu hóa tham số và thử nghiệm kết hợp.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa theo các hướng sau:

  1. Chu kỳ đường Dongxian và chu kỳ đường trung bình có thể được tối ưu hóa để tìm kiếm sự kết hợp tham số tốt nhất.

  2. Có thể thử nghiệm tỷ lệ dừng lỗ, tỷ lệ thắng cân bằng và tỷ lệ lỗ.

  3. Có thể thử kết hợp các tín hiệu nhập cảnh sửa đổi chỉ số khác, chẳng hạn như MACD, KD, để nâng cao sự ổn định của chiến lược.

  4. Có thể tối ưu hóa tín hiệu ra sân, tránh ra sân không cần thiết trong tình huống chấn động. Các tín hiệu ra sân cũng có thể xem xét các chỉ số xu hướng.

  5. Một tập hợp các chiến lược mới có thể được phát triển dựa trên khuôn khổ chiến lược này, chẳng hạn như kết hợp với các chỉ số khác của loại kênh, chỉ số dạng danh sách, v.v.

Tóm tắt

Chiến lược chậm trung bình này rõ ràng và dễ hiểu, bằng cách sử dụng kết hợp các kênh Đường Thanh và đường trung bình làm tín hiệu chiến lược, có thể làm tăng hiệu quả sự ổn định và tỷ lệ chiến thắng của chiến lược. Cài đặt dừng lớn hơn dừng làm cho tỷ lệ lợi nhuận tốt, cài đặt tham số đơn giản và dễ thực hiện. Có một số tình huống cực đoan và rủi ro sai lầm, nhưng có thể tối ưu hóa và cải thiện chiến lược bằng nhiều cách, có khả năng mở rộng và phát triển mạnh mẽ.

Mã nguồn chiến lược
/*backtest
start: 2023-11-06 00:00:00
end: 2023-12-06 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/
// © Mysteriown

//@version=4

strategy("Lagged Donchian Channel + EMA", overlay = true)

//tradePeriod = time(timeframe.period,"0000-0000:1234567")?true:false


// ------------------------------------------ //
// ----------------- Inputs ----------------- //
// ------------------------------------------ //

period = input(24, title="Channel's periods")
Pema = input(200, title="EMA's periods ?")
ratio = input(3, title="Ratio TP", type=input.float)
loss = input(20, title="Risk Loss ($)")
lev = input(5, title="Leverage *...")
chan = input(title="Plot channel ?", type=input.bool, defval=false)
Bpos = input(title="Plot Bull positions ?", type=input.bool, defval=false)
bpos = input(title="Plot Bear positions ?", type=input.bool, defval=false)
labels = input(title="Plot labels of bets ?", type=input.bool, defval=true)
supp = input(title="Delete last labels ?", type=input.bool, defval=true)


// ------------------------------------------ //
// ---------- Canal, EMA and arrow ---------- //
// ------------------------------------------ //

pema = ema(close,Pema)
plot(pema, title="EMA", color=color.blue)

canalhaut = highest(period)[1]
canalbas = lowest(period)[1]

bear = close[1] > canalhaut[1] and close < open and high > pema
bull = close[1] < canalbas[1] and open < close and low < pema

canalhautplot = plot(chan? canalhaut:na, color=color.yellow)
canalbasplot = plot(chan? canalbas:na, color=color.yellow)

plotshape(bear, title='Bear', style=shape.triangledown, location=location.abovebar, color=color.red, offset=0)
plotshape(bull, title='Bull', style=shape.triangleup, location=location.belowbar, color=color.green, offset=0)


// ------------------------------------------ //
// ------------- Position Short ------------- //
// ------------------------------------------ //

SlShort = highest(3)
BidShort = close[1]

TpShort = BidShort-((SlShort-BidShort)*ratio)
deltaShort = (SlShort-BidShort)/BidShort
betShort = round(loss/(lev*deltaShort)*100)/100
cryptShort = round(betShort*lev/BidShort*1000)/1000

// if bear[1] and labels //and low < low[1]
//     Lbear = label.new(bar_index, na, text="SHORT\n\nSL: " + tostring(SlShort) + "\n\nBid: " + tostring(BidShort) + "\n\nTP: " + tostring(TpShort) + "\n\nMise: " + tostring(betShort) + "\n\nCryptos: " + tostring(cryptShort), color=color.red, textcolor=color.white, style=label.style_labeldown, yloc=yloc.abovebar)
//     label.delete(supp ? Lbear[1] : na)

var bentry=0.0
var bsl=0.0
var btp=0.0

if bear[1] and low < low[1]
    bentry:=BidShort
    bsl:=SlShort
    btp:=TpShort
    
pbentry = plot(bpos? bentry:na, color=color.orange)
plot(bpos? (bentry+btp)/2:na, color=color.gray)
pbsl = plot(bpos? bsl:na, color=color.red)
pbtp = plot(bpos? btp:na, color=color.green)

fill(pbentry,pbsl, color.red, transp=70)
fill(pbentry,pbtp, color.green, transp=70)


// ------------------------------------------ //
// ------------- Position Long -------------- //
// ------------------------------------------ //

SlLong = lowest(3)
BidLong = close[1]

TpLong = BidLong + ((BidLong - SlLong) * ratio)
deltaBull = (BidLong - SlLong)/BidLong
betLong = round(loss/(lev*deltaBull)*100)/100
cryptLong = round(betLong*lev/BidLong*1000)/1000

// if bull[1] and labels //and high > high[1]
//     Lbull = label.new(bar_index, na, text="LONG\n\nSL: " + tostring(SlLong) + "\n\nBid: " + tostring(BidLong) + "\n\nTP: " + tostring(TpLong) + "\n\nMise: " + tostring(betLong) + "\n\nCryptos: " + tostring(cryptLong), color=color.green, textcolor=color.white, style=label.style_labelup, yloc=yloc.belowbar)
//     label.delete(supp ? Lbull[1] : na)

var Bentry=0.0
var Bsl=0.0
var Btp=0.0

if bull[1] and high > high[1]
    Bentry:=BidLong
    Bsl:=SlLong
    Btp:=TpLong
    
pBentry = plot(Bpos?Bentry:na, color=color.orange)
plot(Bpos?(Bentry+Btp)/2:na, color=color.gray)
pBsl = plot(Bpos?Bsl:na, color=color.red)
pBtp = plot(Bpos?Btp:na, color=color.green)

fill(pBentry,pBsl, color.red, transp=70)
fill(pBentry,pBtp, color.green, transp=70)


// ------------------------------------------ //
// --------------- Strategie ---------------- //
// ------------------------------------------ //

Bear = bear[1] and low < low[1]
Bull = bull[1] and high > high[1]

if (Bear and strategy.opentrades==0)
    strategy.order("short", false, 1, limit=BidShort)
    strategy.exit("exit", "short", limit = TpShort, stop = SlShort)

strategy.cancel("short", when = high > SlShort or low < (BidShort+TpShort)/2)
strategy.close("short", when=bull)

if (Bull and strategy.opentrades==0)
    strategy.order("long", true, 1, limit=BidLong)
    strategy.exit("exit", "long", limit = TpLong, stop = SlLong)
    
strategy.cancel("long", when = low < SlLong or high > (BidLong+TpLong)/2)
strategy.close("long", when=bear)