Chiến lược này tạo ra các tín hiệu giao dịch dựa trên sự đột phá và gọi lại của nhiều đường trung bình động. Nó đi dài khi giá phá vỡ đường trung bình động lên và đi ngắn khi giá giảm xuống dưới đường trung bình động xuống.
Mã sử dụng 4 đường trung bình động với các khoảng thời gian khác nhau - 21 ngày, 50 ngày, 100 ngày và 200 ngày. Nó đi vào các vị trí dài khi giá vượt qua các đường MA này và đi vào các vị trí ngắn khi giá giảm xuống dưới các đường MA này. Ngoài ra, mức dừng lỗ và lấy lợi nhuận được đặt trong chiến lược. Cụ thể, mức dừng lỗ được đặt gần điểm thấp nhất của nến trước đó, và lợi nhuận được đặt ở khoảng cách 3 lần khoảng cách giữa điểm thấp nhất và điểm cao nhất của nến trước đó.
Ý tưởng cốt lõi của chiến lược này là đánh giá xu hướng bằng cách sử dụng đường trung bình động. Khi giá vượt qua đường MA tăng, nó chỉ ra xu hướng tăng nên nên đi dài. Khi giá giảm xuống dưới đường MA giảm, nó chỉ ra xu hướng giảm nên nên đi ngắn. Sử dụng nhiều đường MA với các giai đoạn khác nhau có thể đánh giá xu hướng chính xác hơn và cũng xác minh các tín hiệu giao dịch thông qua tính nhất quán của xu hướng.
Những lợi thế chính của chiến lược này là:
Những rủi ro chính của chiến lược này là:
Những rủi ro này có thể được giảm bằng cách điều chỉnh các tham số MA và tối ưu hóa dừng lỗ và lấy lợi nhuận.
Chiến lược này có thể được tối ưu hóa trong các khía cạnh sau:
Nói chung, đây là một xu hướng điển hình sau chiến lược. Những lợi thế là logic rõ ràng và dễ hiểu và thực hiện. Nhược điểm là dễ bị tín hiệu sai. Chiến lược có thể được cải thiện bằng cách điều chỉnh tham số và thêm các chỉ số khác. Nó phù hợp với nắm giữ trung bình đến dài hạn và cũng có thể được sử dụng như một thành phần của các chiến lược giao dịch ngắn hạn.
/*backtest start: 2022-11-15 00:00:00 end: 2023-11-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("DolarBasar by AlperDursun", shorttitle="DOLARBASAR", overlay=true) // Input for Moving Averages ma21 = ta.sma(close, 21) ma50 = ta.sma(close, 50) ma100 = ta.sma(close, 100) ma200 = ta.sma(close, 200) // Calculate the lowest point of the previous candle for stop loss lowestLow = ta.lowest(low, 2) // Calculate the highest point of the previous candle for stop loss highestHigh = ta.highest(high, 2) // Calculate take profit levels takeProfitLong = lowestLow - 3 * (lowestLow - highestHigh) takeProfitShort = highestHigh + 3 * (lowestLow - highestHigh) // Entry Conditions longCondition = ta.crossover(close, ma21) or ta.crossover(close, ma50) or ta.crossover(close, ma100) or ta.crossover(close, ma200) shortCondition = ta.crossunder(close, ma21) or ta.crossunder(close, ma50) or ta.crossunder(close, ma100) or ta.crossunder(close, ma200) // Stop Loss Levels stopLossLong = lowestLow * 0.995 stopLossShort = highestHigh * 1.005 // Exit Conditions longExitCondition = low < stopLossLong or high > takeProfitLong shortExitCondition = high > stopLossShort or low < takeProfitShort if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) if (longExitCondition) strategy.exit("Long Exit", from_entry="Long", stop=stopLossLong, limit=takeProfitLong) if (shortExitCondition) strategy.exit("Short Exit", from_entry="Short", stop=stopLossShort, limit=takeProfitShort)