
Chiến lược này sử dụng các đợt phá vỡ và phá vỡ của nhiều đường trung bình di chuyển để tạo ra tín hiệu giao dịch. Khi giá vượt qua đường trung bình lên, hãy làm nhiều hơn; Khi giá giảm xuống đường trung bình xuống, hãy làm không.
Các đường trung bình di chuyển của 4 chu kỳ khác nhau được sử dụng trong mã. Đường 21, 50, 100 và 200 ngày. Khi giá vượt qua các đường trung bình, nhập vào nhiều hơn và khi giá giảm xuống các đường trung bình, nhập vào không. Ngoài ra, chiến lược cũng đặt điểm dừng và điểm dừng.
Ý tưởng cốt lõi của chiến lược này là sử dụng đường trung bình di chuyển để đánh giá xu hướng giá. Khi giá phá vỡ đường trung bình lên, cho thấy hiện đang trong xu hướng tăng, nên làm nhiều hơn; khi giá rơi xuống đường trung bình xuống, cho thấy hiện đang trong xu hướng giảm, nên làm trống. Sử dụng nhiều đường trung bình khác nhau có thể đánh giá xu hướng chính xác hơn, đồng thời có thể xác minh tín hiệu giao dịch bằng sự nhất quán của xu hướng.
Những ưu điểm 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ớt bằng cách điều chỉnh các tham số đường trung bình và tối ưu hóa các chiến lược dừng lỗ.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Chiến lược này nói chung là một chiến lược theo dõi xu hướng điển hình. Ưu điểm là ý tưởng rõ ràng, dễ hiểu và thực hiện; Nhược điểm là dễ tạo ra tín hiệu sai.
/*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)