
Chiến lược này dựa trên chỉ số MACD thiết kế một chiến lược giao dịch dài hạn có thể kiểm soát rủi ro cho mỗi giao dịch. So với chiến lược xoay chuyển nhiều giao dịch, chiến lược này tập trung nhiều hơn vào kiểm soát rủi ro cho mỗi giao dịch. Chiến lược này bằng cách tính toán mục tiêu giá dừng lỗ và giá dừng, thiết lập kích thước vị trí hợp lý, hạn chế tổn thất tối đa cho mỗi giao dịch. Điều này có thể kiểm soát hiệu quả việc rút lui và thu được lợi nhuận ổn định lâu dài.
Chiến lược này bắt đầu bằng cách tính toán đường MACD và đường tín hiệu của MACD. Khi đường MACD phá vỡ đường tín hiệu từ dưới lên, nó được coi là một tín hiệu mua. Để lọc các đột phá giả, chiến lược yêu cầu barssince ((crossover ((macd_line, signal_line)) <= 5, tức là đột phá xảy ra trong 5 đường K gần nhất.
Đối với mỗi giao dịch, chiến lược tính toán giá dừng và giá dừng hợp lý. Giá dừng được thiết lập là giá thấp nhất trong 3 đường K gần nhất. Giá dừng được thiết lập là giá mua cộng với giá dừng gấp 4 lần khoảng cách từ giá mua.
Điều quan trọng là chiến lược tính toán vị trí cụ thể cho mỗi giao dịch dựa trên rủi ro chấp nhận được. Bằng tham số capital_risk, thiết lập mức tổn thất chấp nhận được tối đa cho mỗi giao dịch là phần trăm của tổng số vốn. Sau đó, tính toán kích thước vị trí bằng đô la dựa trên mức dừng lỗ. Sau đó chuyển thành số hợp đồng để mua và mở vị trí.
Mỗi lần giao dịch, rủi ro được kiểm soát trong khoảng 1% tổng số vốn, có thể kiểm soát hiệu quả việc rút lui. Đồng thời, vị trí dừng lớn hơn, có thể thu được lợi nhuận cao hơn.
Bạn có thể xem xét:
Chiến lược này dựa trên chỉ số MACD để xác định hướng xu hướng, kiểm soát rủi ro hàng đầu, tính toán vị trí hợp lý để giao dịch. Điều quan trọng là kiểm soát rủi ro và tối ưu hóa vị trí, có thể thu được lợi nhuận ổn định lâu dài. Tuy nhiên, chỉ số MACD có một số sai sót, và cơ chế dừng lỗ cũng cần được tối ưu hóa hơn nữa. Nếu tối ưu hóa hơn nữa việc sử dụng chỉ số, thiết lập dừng lỗ và giảm tần suất giao dịch, chiến lược sẽ được tăng cường 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 )