Chiến lược này thiết kế một chiến lược giao dịch dài hạn kiểm soát rủi ro của mỗi giao dịch dựa trên chỉ số MACD. So với các chiến lược lật ngắn dài truyền thống, chiến lược này tập trung nhiều hơn vào việc kiểm soát rủi ro của mỗi giao dịch. Bằng cách tính toán mức dừng lỗ hợp lý và lấy lợi nhuận và thiết lập kích thước vị trí thích hợp, nó hạn chế lỗ tối đa cho mỗi giao dịch. Điều này có thể kiểm soát hiệu quả các khoản rút và đạt được lợi nhuận ổn định trong dài hạn.
Chiến lược này đầu tiên tính toán đường MACD và đường tín hiệu của chỉ số MACD. Khi đường MACD vượt qua trên đường tín hiệu, nó được xác định là tín hiệu mua. Để lọc ra các đột phá sai, chiến lược yêu cầu barsince ((crossover ((macd_line, signal_line)) <= 5, có nghĩa là sự đột phá xảy ra trong 5 thanh gần đây nhất. Nó cũng yêu cầu cả đường MACD và đường tín hiệu ở dưới 0, cho thấy điều kiện bán quá mức và đóng ở trên đường WMA, cho thấy xu hướng tăng. Khi các điều kiện trên được đáp ứng, một vị trí dài được mở.
Đối với mỗi giao dịch, chiến lược tính toán mức stop loss và take profit hợp lý. Stop loss được đặt ở mức thấp nhất trong 3 thanh gần đây nhất. Take profit được đặt ở mức giá nhập cộng 4 lần khoảng cách giữa stop loss và giá nhập.
Điều quan trọng là chiến lược tính toán kích thước vị trí cụ thể dựa trên rủi ro tối đa có thể chấp nhận được. Các tham số capital_risk thiết lập tỷ lệ phần trăm tổng vốn có thể bị mất cho mỗi giao dịch. Kích thước vị trí bằng USD sau đó được tính dựa trên phạm vi dừng lỗ. Sau đó được chuyển đổi thành các hợp đồng để thực hiện.
Rủi ro của mỗi giao dịch được kiểm soát trong phạm vi 1% tổng vốn, có thể kiểm soát hiệu quả việc rút vốn.
Những cải tiến có thể:
Chiến lược này xác định hướng xu hướng bằng cách sử dụng MACD, và kiểm soát rủi ro là ưu tiên để giao dịch với kích thước vị trí tối ưu. Các chìa khóa là kiểm soát rủi ro và kích thước vị trí, có thể đạt được lợi nhuận ổn định trong dài hạn. Nhưng MACD có một số lỗ hổng, và các cơ chế dừng lỗ / lấy lợi nhuận cần tối ưu hóa hơn nữa. Tăng cường sử dụng chỉ số, cài đặt dừng lỗ / lấy lợi nhuận và giảm tần suất giao dịch có thể làm cho chiến lược thậm chí mạnh mẽ hơn.
/*backtest start: 2022-10-19 00:00:00 end: 2023-10-25 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy( "McDonalds ", shorttitle="Ur Lovin' It", initial_capital=10000, default_qty_type=strategy.cash, currency=currency.USD ) capital_risk = input( 1.0, "% capital risk per trade" ) / 100 r_exit = input( 4.0, "Take Profit in 'R'" ) wma_length = input( 150, 'WMA Bias Length' ) [macd_line, signal_line, hist ] = macd(close, 12, 26, 9) w_line = wma( close, wma_length ) golong = barssince(crossover(macd_line, signal_line)) <= 5 and ( macd_line < 0 and signal_line < 0 ) and ( close > w_line ) and strategy.opentrades == 0 float stop = na float tp = na // For a stop, use a recent low stop := golong ? lowest(low, 3)[1] : stop[1] range = abs(close - stop) tp := golong ? close + (r_exit * range) : tp[1] // This is the bit that calculates how much size to use so we only lose 1% of the `strategy.equity` how_much_willing_to_lose = strategy.equity * capital_risk // Spread the risk across the stop range position_size_in_usd = how_much_willing_to_lose / (range / close) // Sized specified in base contract position_size_in_contracts = position_size_in_usd / close // Enter the position if golong strategy.entry("long", strategy.long, qty=position_size_in_contracts) strategy.exit("long exit","long", stop=stop, limit=tp) // experimental exit strategy // hist_strength = hist >= 0 ? ( hist[1] < hist ? 'strong' : 'weak') : ( hist[1] < hist ? 'weak' : 'strong' ) // if hist < 0 and hist_strength == 'strong' and falling( hist, 8 ) // strategy.close("long") plot( strategy.equity, color=strategy.equity > 10000 ? color.green : color.red, linewidth=2 )