Chiến lược giao dịch ngẫu nhiên Dual MACD


Ngày tạo: 2023-09-22 16:55:55 sửa đổi lần cuối: 2023-09-22 16:55:55
sao chép: 0 Số nhấp chuột: 806
1
tập trung vào
1617
Người theo dõi

Tổng quan

Chiến lược này kết hợp với chỉ số MACD kép và chỉ số StochRSI ngẫu nhiên để phán đoán tín hiệu giao dịch. MACD kép sử dụng các thiết lập tham số khác nhau để thực hiện hiệu ứng nhanh chậm, StochRSI được sử dụng để xác minh đằng sau mạnh. Chiến lược cũng thêm vào phán đoán xu hướng và kiểm soát rủi ro điều kiện dừng lỗ.

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

Các tín hiệu giao dịch của chiến lược này được đánh giá dựa trên các chỉ số sau:

  • Dual MACD: MACD nhanh sử dụng tham số chu kỳ ngắn, MACD chậm sử dụng tham số chu kỳ dài, để đạt được hiệu ứng mịn khác nhau.

  • StochRSI: tính giá trị RSI cao nhất và thấp nhất trong một chu kỳ nhất định để xác định RSI có đang quá mua hay quá bán không.

Quy tắc đánh giá tín hiệu giao dịch:

  • Làm nhiều hơn: MACD nhanh vượt qua 0 và MACD chậm vượt qua 0 SttochRSI đang bán quá mức và D trên đường K và đang trong xu hướng tăng.

  • Làm trống: MACD nhanh đi xuống 0 và MACD chậm đi xuống 0, StochRSI đang mua quá mức và D dưới đường K và đang đi xuống.

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

  • Xác minh MACD kép giúp tránh đột phá giả và cải thiện chất lượng tín hiệu.

  • StochRSI đánh giá giá cao và giảm giá.

  • Cân nhắc các xu hướng lớn, giảm lỗ trong giao dịch bất lợi.

  • Thực hiện xác thực nhiều khung thời gian cho các chỉ số, tăng hiệu quả tín hiệu.

  • Thiết lập điều kiện kiểm soát rủi ro dừng lỗ.

Phân tích rủi ro

  • MACD dễ tạo ra các tín hiệu giả, cần được lọc thêm để xác minh.

  • StochRSI có thể bị bỏ lỡ bởi các tham số không đúng.

  • Thiết lập điểm dừng không hợp lý có thể quá bảo thủ hoặc cực đoan.

  • Không có chiến lược quản lý cổ phiếu, không có khả năng dừng lỗ.

Có thể tối ưu hóa bằng cách:

  1. Điều kiện lọc như tăng khối lượng giao dịch hoặc góc đường trung bình.

  2. Tối ưu hóa tham số StochRSI hoặc giới thiệu các chỉ số ngẫu nhiên khác.

  3. Động thái điều chỉnh điểm dừng, theo dõi dừng.

  4. Thêm mô-đun quản lý vị trí, điều chỉnh vị trí động theo hiệu suất chiến lược.

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

Các hướng tối ưu hóa chính của chiến lược này là:

  1. Tối ưu hóa các tham số chỉ số để cải thiện hiệu quả của chỉ số.

  2. Thêm các điều kiện lọc để lọc các tín hiệu giả.

  3. Tối ưu hóa chiến lược dừng lỗ, thực hiện dừng lỗ động.

  4. Khởi động quản lý vị trí, điều chỉnh vị trí theo hiệu quả của chiến lược.

  5. Thêm mô-đun học máy để tự động tối ưu hóa dữ liệu lớn.

Tóm tắt

Chiến lược tổng hợp xem xét nhiều chỉ số để tạo ra tín hiệu giao dịch mạnh mẽ hơn. Tuy nhiên, vẫn cần tối ưu hóa cài đặt tham số, lọc thêm tín hiệu, dừng động để giảm giao dịch không cần thiết, nâng cao xác suất kiếm lợi nhuận. Nhìn chung, ý tưởng chiến lược hợp lý và có không gian tối ưu hóa tốt.

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

//@version=2



//This strategy is an ongoing work in progress. Last updated 8/6/16.
//Feel free to modify it as you see fit, if you do borrow code then send me a link so I 
//can see and maybe borrow some of your code to improve this.
//Thanks to ChrisMoody who I stole the code for setting custom resolution from.
//
//more info in comments at end of script





strategy("MACDouble & StochRSI w/ safeties v0.3", overlay=true)

source = close
useCurrentRes = input(true, title="Uncheck to use custom res./intrv. for 2nd MACD indicator")
resCustom = input(title="Resolution/interval to use for 2nd MACD:",  defval="45")
res = useCurrentRes ? timeframe.period : resCustom

useCurrentRes2 = input(true, title="Uncheck to use custom res/intrv for StochRSI")
resCustom2 = input(title="Resolution to use for StochRSI indicator:",  defval="45")
res2 = useCurrentRes2 ? timeframe.period : resCustom2


//MACD1
fastLength = input(10, title="MACD fast length")
slowlength = input(21, title="MACD slow length")
sigLength = input(9, title="MACD signal length")

MACD = ema(source, fastLength) - ema(source, slowlength)
signal = sma(MACD, sigLength)
delta = MACD - signal



//MACD2
fastLength2 = input(31, title= "2nd MACD fast length")
slowlength2 = input(63, title= "2nd MACD slow length")
sigLength2 = input(30, title= "2nd MACD signal length")

MACD2 = ema(source, fastLength2) - ema(source, slowlength2)
signal2 = sma(MACD2, sigLength2)
delta2 = MACD2 - signal2

MACDRes = security(syminfo.tickerid, res, MACD2)
signalRes = security(syminfo.tickerid,res, signal2)
deltaRes = security(syminfo.tickerid, res, delta2)


uptrend = (close + high)/(close[1] + high[2])
downtrend = (close + low)/(close[1] + low[2])

smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(11, minval=1)
lengthStoch = input(11, minval=1)
src = close

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
RSI_buyTrig = input(90)
RSI_sellTrig = input(20)

kRes = security(syminfo.tickerid, res2, k)
dRes = security(syminfo.tickerid, res2, d)


if (delta > 0) and (year>2012) and (deltaRes > 0) and (uptrend > 1) and (  kRes and dRes < RSI_buyTrig) and (kRes > dRes)
    strategy.entry("buy", strategy.long, comment="buy")
    

if (delta < 0) and (year>2012) and (deltaRes < 0) and (downtrend < 1) and ( kRes and dRes > RSI_sellTrig) and (kRes < dRes)
    strategy.entry("sell", strategy.short, comment="sell")
	strategy.exit("sell", loss = 9000)



//  RELEASE NOTES, ETC
//
// The core starting idea for this backtesting script came from the desire to have two traditional
//MACD indicators: one 'fast' and one 'slow'. The slow one is to pretty much smooth out noisy signals
//so that short term changes in price are ignored (ideally). 
//	A brief version history
//		v0.1 - Basic two MACD indicators script
//      v0.2 - Added StochRSI indicator
//      v0.21- Added primitive uptrend/downtrend safety condition 
//      v0.22- Added changable time resolution for MACDslow
//      v0.23- Added exit safeties conditional on loss threshold   
//      v0.3 - Added changeable resolution for StochRSI
//	Future changes planned for next release:
//		-Fine tuning exit safeties
//      -Major overhaul of trade logic/triggers (may be forked as a different script)
//
//I am more than happy to discuss any difficulties you are having, questions about the script, or improvement suggestions.
//I am not a coder and my background is actually in economics, so feel free to debug ;)
//Feel free to tip me on the indcluded bitcoin address on TV as well
// tradingview.com/u/RyanMartin 
// [email protected]