
Strategi ini menggabungkan beberapa indikator teknis, termasuk RSI, MACD, dan SMA untuk beberapa periode yang berbeda, untuk memberikan alat analisis yang komprehensif untuk perdagangan Bitcoin. Ide utama strategi ini adalah dengan mempertimbangkan sinyal dari berbagai indikator secara komprehensif, melakukan lebih banyak ketika RSI berada di kisaran tertentu, MACD muncul, harga Gold Forks di bawah beberapa SMA, dan mengatur stop loss dan stop loss, dan memperbarui posisi stop loss ketika RSI mencapai 50.
Strategi ini menyediakan kerangka analisis yang komprehensif untuk perdagangan bitcoin dengan menggunakan indikator teknis seperti RSI, MACD, dan SMA secara komprehensif. Strategi ini menggunakan pengesahan bersama dari beberapa indikator untuk menghasilkan sinyal perdagangan dan mengatur langkah-langkah pengendalian risiko. Namun, strategi ini masih memiliki ruang untuk pengoptimalan, seperti pengenalan lebih banyak indikator, parameter penyesuaian dinamis, dan analisis fundamental gabungan.
/*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")