Strategi ini menggabungkan pelbagai penunjuk teknikal, termasuk Indeks Kekuatan Relatif (RSI), Divergensi Convergensi Purata Bergerak (MACD), dan beberapa Purata Bergerak Sederhana (SMA) dengan tempoh yang berbeza, bertujuan untuk menyediakan alat analisis yang komprehensif untuk perdagangan Bitcoin (BTC).
Strategi ini menyediakan kerangka analisis yang komprehensif untuk perdagangan Bitcoin dengan mengintegrasikan penunjuk teknikal RSI, MACD, dan SMA. Ia menghasilkan isyarat perdagangan menggunakan pengesahan beberapa penunjuk dan menggabungkan langkah kawalan risiko. Walau bagaimanapun, masih ada ruang untuk pengoptimuman, seperti memperkenalkan lebih banyak penunjuk, menyesuaikan parameter secara dinamik, dan menggabungkan analisis asas. Dalam aplikasi praktikal, peniaga harus menyesuaikan strategi mengikut pilihan risiko dan keadaan pasaran mereka.
/*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")