Chiến lược này kết hợp nhiều chỉ số kỹ thuật, bao gồm Chỉ số Sức mạnh Tương đối (RSI), Phân biệt hội tụ trung bình di chuyển (MACD) và một số Trung bình di chuyển đơn giản (SMA) với các khoảng thời gian khác nhau, nhằm mục đích cung cấp một công cụ phân tích toàn diện cho giao dịch Bitcoin (BTC). Ý tưởng chính của chiến lược là nhập vào các vị trí dài khi RSI nằm trong một phạm vi cụ thể, MACD hiển thị một chéo tăng, và giá dưới nhiều SMA, trong khi thiết lập mức dừng lỗ và lấy lợi nhuận và cập nhật vị trí dừng lỗ khi RSI đạt 50.
Chiến lược này cung cấp một khuôn khổ phân tích toàn diện cho giao dịch Bitcoin bằng cách tích hợp các chỉ số kỹ thuật RSI, MACD và SMA. Nó tạo ra các tín hiệu giao dịch bằng cách xác nhận nhiều chỉ số và kết hợp các biện pháp kiểm soát rủi ro. Tuy nhiên, vẫn còn chỗ để tối ưu hóa, chẳng hạn như giới thiệu nhiều chỉ số hơn, điều chỉnh động các tham số và kết hợp phân tích cơ bản. Trong các ứng dụng thực tế, các nhà giao dịch nên điều chỉnh chiến lược theo sở thích rủi ro và điều kiện thị trường của họ.
/*backtest start: 2024-03-01 00:00:00 end: 2024-03-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Advanced Strategy", shorttitle="1M Advanced Strat", overlay=true) // Input settings rsiLength = input(14, title="RSI Length") rsiLowerBound = input(20, title="RSI Lower Bound") rsiUpperBound = input(30, title="RSI Upper Bound") atrLength = input(14, title="ATR Length") smaFastLength = input(20, title="SMA 20 Length") smaMediumLength = input(50, title="SMA 50 Length") smaSlowLength = input(200, title="SMA 200 Length") riskPercent = input(0.005, title="Risk Percentage for SL and Target") // Calculate indicators rsiValue = rsi(close, rsiLength) [macdLine, signalLine, _] = macd(close, 12, 26, 9) smaFast = sma(close, smaFastLength) smaMedium = sma(close, smaMediumLength) smaSlow = sma(close, smaSlowLength) atrValue = atr(atrLength) // Checking previous RSI value prevRsiValue = rsi(close[1], rsiLength) // Conditions for Entry longCondition = rsiValue > rsiLowerBound and rsiValue < rsiUpperBound and prevRsiValue < rsiLowerBound or prevRsiValue > rsiUpperBound and crossover(macdLine, signalLine) and close < smaFast and close < smaMedium and close < smaSlow // Strategy Entry if (longCondition and not strategy.position_size) strategy.entry("Long", strategy.long) // Setting Stop Loss and Take Profit stopLoss = close - riskPercent * close takeProfit = close + atrValue strategy.exit("Exit Long", "Long", stop = stopLoss, limit = takeProfit) //Update Stop Loss when RSI reaches 50 if (strategy.position_size > 0 and rsiValue >= 50) strategy.exit("Update SL", "Long", stop = high) // Conditions for Exit shortCondition = crossunder(macdLine, signalLine) // Strategy Exit if (shortCondition) strategy.close("Long")