Chiến lược giao dịch hỗn hợp các chỉ số chứng khoán hai MA

Tác giả:ChaoZhang, Ngày: 2023-09-12 14:44:56
Tags:

Chiến lược này kết hợp các đường trung bình động và chỉ số Stoch thành một hệ thống giao dịch định lượng với cả khả năng theo dõi xu hướng và phát hiện quá mua / quá bán. Nó tích hợp các điểm mạnh của nhiều chỉ số để xác định xu hướng có hệ thống và nắm bắt cơ hội.

Chiến lược logic:

  1. Tính toán MA dài hạn và EMA ngắn hạn để xác định hướng xu hướng.

  2. Tính toán giá trị Stoch K và D để xác định mức mua/bán quá mức.

  3. Khi CLOSE phá vỡ trên MA, và Stoch K&D là trên đường mua quá mức, đi dài.

  4. Khi CLOSE phá vỡ dưới đường EMA, và Stoch K&D nằm dưới đường bán quá mức, đi ngắn.

  5. Sử dụng màu sắc để đánh dấu hướng giao dịch nhất định.

Ưu điểm:

  1. Các MA kép cải thiện độ chính xác xu hướng và tránh các tín hiệu sai.

  2. Stoch xác định các khu mua/bán có khả năng cao.

  3. Kết hợp các chỉ số cải thiện độ tin cậy thông qua xác minh.

Rủi ro:

  1. Điều chỉnh tham số kém gây ra tín hiệu quá mức hoặc không nhất quán.

  2. Cả MAs và Stoch đều có thể bị chậm trễ, gây ra việc nhập sớm hoặc chậm trễ.

  3. Nhiều chỉ số hơn có nghĩa là phức tạp hơn mặc dù độ tin cậy được cải thiện.

Tóm lại, chiến lược này giao dịch định lượng bằng cách sử dụng MAs cho xu hướng và Stoch cho mức mua quá mức / bán quá mức. Với tối ưu hóa tham số mạnh mẽ, nó có thể cải thiện sự ổn định và độ tin cậy của hệ thống. Nhưng quản lý rủi ro thận trọng vẫn cần thiết, và các nhà đầu tư nên áp dụng quyết định.


/*backtest
start: 2023-08-12 00:00:00
end: 2023-09-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

// strategy("PMB2", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 20, initial_capital=1000, currency=currency.USD)
//study(title="PMB2", overlay=true)

l_ma = input(50, title="MA (green)", type=input.integer)
l_ema = input(25, title="EMA (red)", type=input.integer)

MA = sma(close,l_ma)
EMA = ema(close,l_ema)

plot(MA, color=color.green)
plot(EMA, color=color.red)

//STOCH(14,3,3)
length = input(20, minval=1, title="STOCH - K")
smoothK = input(2, minval=1, title="STOCH - D")
smoothD = input(2 , minval=1, title="STOCH - Smooth")

StkLong= input(50 , minval=1, maxval=100, title="Long when Close > MA and Stoch > ")
StkShort= input(80 , minval=1, maxval=100, title="Short when Close < EMA and Stoch < ")

k = sma(stoch(close, high, low, length), smoothK)
d = sma(k, smoothD)
//plot(k, color=color.blue, title="STOCH - K")
//plot(d, color=color.orange, title="STOCH - D")
//band180 = hline(80, title="STOCH - Banda superior")
//band120 = hline(20, title="STOCH - Banda superior")
//band100 = hline(50,  color=color.gray, editable=false, linestyle=hline.style_solid)
//fill(band180, band120, color=color.gray, transp=75, title="STOCH - Fundo")

BTStartY = input(title="Strategy Test Start Year", type=input.integer, defval=2019, minval=2010, maxval=2100)
BTStartM = input(title="Strategy Test Start Month", type=input.integer, defval=1, minval=1, maxval=12)
BTStartD = input(title="Strategy Test Start Day", type=input.integer, defval=1, minval=1, maxval=31)
BTStopY = input(title="Strategy Test Stop Year", type=input.integer, defval=2019, minval=2010, maxval=2100)
BTStopM = input(title="Strategy Test Stop Month", type=input.integer, defval=12, minval=1, maxval=12)
BTStopD = input(title="Strategy Test Stop Day", type=input.integer, defval=31, minval=1, maxval=31)

// set up min and max date for strategy test
TMin = timestamp(BTStartY, BTStartM, BTStartD, 00, 00)
TMax = timestamp(BTStopY, BTStopM, BTStopD, 00, 00)
InTime = true

bool long = false, short = false, trade = false

trade := trade[1]
long := long[1]
short := short[1]

if (crossover(close, MA) and k > StkLong and d > StkLong) // "LONG!"
//if (close > MA and k > StkLong and d > StkLong) // "LONG!"
    short := false
    long := true
    trade := true // LONG

if (crossunder(close, EMA)  and k < StkShort and d < StkShort) // "SHORT!""
//if (close < EMA and k < StkShort and d < StkShort) // "SHORT!""
    long := false
    short := true
    trade := false // SHORT


//bgcolor(FL > SH ? color.green : FH < SL ? color.red : na, transp=80)
bgcolor(trade ? color.green : color.red, transp=90)

//alertcondition((crossover(close, MA) and k > 50 and d > 50) , title='Buy', message='Buy')
//alertcondition((crossunder(close, EMA) and k > 80 and d > 80) , title='Sell', message='Sell')


if ((crossover(close, MA) and k > StkLong and d > StkLong) and InTime)
//if ((close > MA and k > StkLong and d > StkLong) and InTime)
    strategy.entry("Long", strategy.long)

if ((crossunder(close, EMA) and k < StkShort and d < StkShort)  and InTime)
//if ((close < EMA and k < StkShort and d < StkShort)  and InTime)
    strategy.entry("Short", strategy.short)
    





Thêm nữa