Strategi Dagangan BTC Berbilang Penunjuk

Penulis:ChaoZhang, Tarikh: 2024-04-01 11:26:00
Tag:

img

Ringkasan

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).

Prinsip Strategi

  1. Mengira RSI, MACD, dan SMA dengan tempoh yang berbeza.
  2. Periksa sama ada nilai RSI terdahulu berada di bawah had bawah atau di atas had atas, nilai RSI semasa berada di antara had bawah dan atas, MACD mempunyai persilangan menaik, dan harga penutupan berada di bawah semua SMA.
  3. Jika syarat-syarat di atas dipenuhi dan tiada kedudukan semasa, masukkan kedudukan panjang.
  4. Tetapkan harga stop-loss dan mengambil keuntungan berdasarkan peratusan risiko.
  5. Jika kedudukan panjang dipegang dan RSI mencapai 50, mengemas kini kedudukan stop-loss ke harga tertinggi.
  6. Jika MACD menunjukkan persimpangan menurun, tutup kedudukan.

Kelebihan Strategi

  1. Merangkumi pelbagai penunjuk teknikal untuk meningkatkan kebolehpercayaan isyarat.
  2. Memasuki kedudukan apabila RSI berada dalam julat tertentu, mengelakkan situasi yang melampau.
  3. Menetapkan tahap stop-loss dan mengambil keuntungan untuk mengawal risiko.
  4. Secara dinamik menyesuaikan kedudukan stop-loss untuk mengunci keuntungan separa.
  5. Menutup kedudukan dengan tepat pada masanya berdasarkan isyarat persilangan penurunan MACD untuk mengurangkan potensi kerugian.

Risiko Strategi

  1. Dalam pasaran yang bergolak, isyarat perdagangan yang kerap boleh menyebabkan kerugian perdagangan dan komisen yang berlebihan.
  2. Peratusan risiko tetap untuk stop-loss dan mengambil keuntungan mungkin tidak disesuaikan dengan persekitaran pasaran yang berbeza.
  3. Mengandalkan hanya kepada penunjuk teknikal sambil mengabaikan faktor asas boleh membawa kepada keputusan perdagangan yang salah.

Arahan Pengoptimuman Strategi

  1. Memperkenalkan lebih banyak petunjuk teknikal atau petunjuk sentimen pasaran untuk meningkatkan ketepatan isyarat.
  2. Sesuaikan secara dinamik tahap stop loss dan take profit berdasarkan turun naik pasaran untuk menyesuaikan diri dengan persekitaran pasaran yang berbeza.
  3. Menggabungkan analisis asas, seperti peristiwa berita penting atau perubahan dasar pengawalseliaan, untuk membantu keputusan perdagangan.
  4. Pertimbangkan penunjuk dengan jangka masa yang berbeza untuk menangkap peluang perdagangan pada pelbagai skala masa.

Ringkasan

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")



Lebih lanjut