
Strategi ini menggabungkan beberapa indikator teknikal, termasuk indeks kekuatan relatif (RSI), indikator perpindahan rata-rata dan perpindahan rata-rata (MACD) dan purata bergerak sederhana (SMA) dari beberapa kitaran yang berbeza, untuk menyediakan alat analisis yang komprehensif untuk perdagangan Bitcoin (BTC). Gagasan utama strategi ini adalah dengan mengambil kira isyarat indikator yang berbeza secara menyeluruh, melakukan lebih banyak apabila RSI berada dalam julat tertentu, MACD muncul, harga garpu emas di bawah beberapa SMA, dan menetapkan stop loss dan stop loss pada masa yang sama, dan mengemas kini kedudukan stop loss apabila RSI mencapai 50.
Strategi ini menyediakan kerangka analisis yang komprehensif untuk perdagangan bitcoin dengan menggunakan indikator teknikal seperti RSI, MACD dan SMA secara komprehensif. Ia menggunakan pengesahan bersama beberapa indikator untuk menghasilkan isyarat perdagangan dan menetapkan langkah-langkah kawalan risiko. Walau bagaimanapun, strategi ini masih mempunyai ruang untuk pengoptimuman, seperti pengenalan lebih banyak indikator, parameter penyesuaian dinamik, dan analisis asas 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")