Strategi perdagangan Bitcoin berdasarkan perhitungan fase bulan


Tanggal Pembuatan: 2024-01-15 12:31:06 Akhirnya memodifikasi: 2024-01-15 12:31:06
menyalin: 0 Jumlah klik: 1352
1
fokus pada
1617
Pengikut

Strategi perdagangan Bitcoin berdasarkan perhitungan fase bulan

Ringkasan

Strategi ini didasarkan pada siklus fase bulan sebagai sinyal perdagangan, menggabungkan beberapa indikator seperti RSI, MACD, dan OBV untuk mengidentifikasi peluang perdagangan mata uang digital seperti Bitcoin. Keuntungan utama dari strategi ini adalah memanfaatkan faktor eksternal fase bulan sebagai sinyal pemicu perdagangan, dan, berbeda dengan kebanyakan strategi yang hanya bergantung pada indikator teknis, dapat menghindari manipulasi pasar sampai batas tertentu.

Prinsip Strategi

Logika inti dari strategi ini adalah berdasarkan pada fase yang berbeda dari siklus fase bulan untuk menilai apakah memenuhi kondisi over atau under. Rumus untuk menghitung fase bulan adalah:

Panjang siklus fase bulan = 29.5305882 hari Saat bulan purnama diketahui, jumlah hari dari saat bulan purnama itu dimulai hingga saat ini dapat dihitung Usia fase bulan = jarak hari dari bulan purnama yang diketahui % panjang siklus fase bulan Nilai fase bulan = ((1 + cos ((usia fase bulan/panjang siklus fase bulan*2*π))/2

Ukuran fase bulan dapat digunakan untuk menentukan fase bulan saat ini. Fase bulan bervariasi antara 0 dan 1, nilai yang lebih besar menunjukkan semakin dekat dari bulan purnama, nilai yang lebih kecil menunjukkan semakin dekat dari bulan baru.

Strategi ini didasarkan pada apakah penurunan fase bulan sesuai dengan kondisi over atau under. Jika penurunan fase bulan lebih besar dari penurunan fase bulan ((default 0.51), ada kesempatan untuk melakukan over; Jika penurunan fase bulan kurang dari penurunan fase bulan ((default 0.49), ada kesempatan untuk melakukan over.

Selain itu, strategi ini juga menggabungkan volume perdagangan, RSI, MACD dan indikator lainnya untuk menghindari sinyal perdagangan dalam situasi yang tidak ideal. Hanya jika volume perdagangan meningkat, RSI dan MACD memenuhi syarat, posisi akan dibuka.

Analisis Keunggulan

Strategi ini memiliki beberapa keuntungan utama:

  1. Menggunakan fase bulan untuk memberikan sinyal perdagangan yang unik, dapat menghindari sebagian besar manipulasi pasar
  2. Menggabungkan berbagai indikator untuk menilai kondisi pasar, menghindari perdagangan di lingkungan yang tidak menguntungkan
  3. Menggunakan ATR rata-rata real bandwidth untuk menghitung volume transaksi yang wajar, secara efektif mengendalikan kerugian maksimum per transaksi
  4. Tetapkan stop loss untuk mencegah kerugian besar
  5. Menggunakan OBV untuk menilai aliran dana dan menghindari transaksi berlawanan arah
  6. Setting Stop Loss Mobile untuk Mengunci Keuntungan

Secara keseluruhan, strategi ini memanfaatkan keunggulan unik dari fase bulan dan didukung oleh berbagai indikator teknis untuk mengidentifikasi peluang perdagangan probabilitas tinggi dan mengendalikan risiko perdagangan secara efektif melalui pengendalian risiko.

Analisis risiko

Strategi ini memiliki risiko utama sebagai berikut:

  1. Bulan bisa berubah dari waktu ke waktu.
  2. Penetapan stop loss yang tidak tepat dapat menyebabkan strategi berhenti lebih awal
  3. Probabilitas indikator seperti MACD, RSI dan lain-lain memberikan sinyal yang salah
  4. Stop loss mobile yang tidak disesuaikan dapat menyebabkan strategi kehilangan lebih banyak keuntungan

Untuk mengendalikan risiko ini, langkah-langkah berikut dapat diambil:

  1. Adaptasi penurunan fase bulan untuk memastikan efektivitas bulan.
  2. Uji beberapa set parameter penghentian mundur dan pilih parameter yang optimal
  3. Menyesuaikan parameter MACD dan RSI untuk memastikan mereka memberikan sinyal yang efisien
  4. Uji coba beberapa set parameter stop loss bergerak untuk mendapatkan keuntungan maksimal

Dengan optimasi parameter dan penggunaan indikator komposit, risiko perdagangan dapat dihindari secara signifikan.

Arah optimasi

Strategi ini masih memiliki ruang untuk dioptimalkan lebih jauh:

  1. Ini juga memungkinkan pengujian parameter fase bulan yang berbeda untuk menemukan nilai terendah yang optimal.
  2. Untuk meningkatkan efektivitas strategi, Anda dapat mencoba untuk melakukan perdagangan kombinasi dengan lebih banyak indikator.
  3. Mengoptimalkan parameter-parameter dari mekanisme penghentian kerugian, menyeimbangkan risiko dan keuntungan;
  4. Ini akan memperluas varietas transaksi dan membuktikan bahwa strategi ini dapat digunakan secara umum.

Meringkaskan

Strategi ini memungkinkan perdagangan Bitcoin yang efisien melalui sinyal perdagangan yang unik dari fase bulan, yang bekerja sama dengan indikator teknologi utama. Strategi ini lebih tahan terhadap risiko manipulasi pasar dibandingkan dengan strategi indikator tunggal, dan memiliki keuntungan unik. Strategi ini dapat memperoleh keuntungan yang lebih baik secara stabil dengan mencegah risiko dan mengoptimalkan parameter penghentian kerugian.

Kode Sumber Strategi
/*backtest
start: 2023-01-08 00:00:00
end: 2024-01-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Lunar Phase Strategy by Symphoenix", overlay=true)

// Input parameters
start_year = input(2023, title="Start year")
end_year = input(2023, title="End year")
longPhaseThreshold = input(0.51, title="Long Phase Threshold")
shortPhaseThreshold = input(0.49, title="Short Phase Threshold")
riskPerTrade = input(0.05, title="Risk Per Trade (as a % of Equity)")
stopLossPerc = input(0.01, title="Stop Loss Percentage")
atrLength = input(21, title="ATR Length for Volatility")
trailPerc = input(0.1, title="Trailing Stop Percentage")
maxDrawdownPerc = input(0.1, title="Maximum Drawdown Percentage")
volumeLength = input(7, title="Volume MA Length")

// Constants for lunar phase calculation and ATR
atr = ta.atr(atrLength)
volMA = ta.sma(volume, volumeLength) // Volume moving average

// Improved Lunar Phase Calculation
calculateLunarPhase() =>
    moonCycleLength = 29.5305882
    daysSinceKnownFullMoon = (time - timestamp("2019-12-12T05:12:00")) / (24 * 60 * 60 * 1000)
    lunarAge = daysSinceKnownFullMoon % moonCycleLength
    phase = ((1 + math.cos(lunarAge / moonCycleLength * 2 * math.pi)) / 2)
    phase

lunarPhase = calculateLunarPhase()

// Advanced Volume Analysis
priceChange = ta.change(close)
obv = ta.cum(priceChange > 0 ? volume : priceChange < 0 ? -volume : 0)

// Additional Technical Indicators
rsi = ta.rsi(close, 14)
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)

// Calculate Position Size based on Volatility and Account Equity
calculatePositionSize() =>
    equity = strategy.equity
    riskAmount = equity * riskPerTrade
    positionSize = riskAmount / atr
    if positionSize > 1000000000000
        positionSize := 1000000000000
    positionSize

positionSize = calculatePositionSize()

// Maximum Drawdown Tracking
var float maxPortfolioValue = na
maxPortfolioValue := math.max(maxPortfolioValue, strategy.equity)
drawdown = (maxPortfolioValue - strategy.equity) / maxPortfolioValue

// Check for maximum drawdown
if drawdown > maxDrawdownPerc
    strategy.close_all()
    strategy.cancel_all()

// Volume Analysis
isVolumeConfirmed = volume > volMA

// Date Check for Backtesting Period
isWithinBacktestPeriod = year >= start_year and year <= end_year

// Entry and Exit Conditions
// Adjusted Entry and Exit Conditions
longCondition = lunarPhase > longPhaseThreshold and lunarPhase < 0.999 and isVolumeConfirmed and obv > obv[1] and rsi < 70 and macdLine > signalLine and isWithinBacktestPeriod
shortCondition = lunarPhase < shortPhaseThreshold and lunarPhase > 0.001 and isVolumeConfirmed and obv < obv[1] and rsi > 30 and macdLine < signalLine and isWithinBacktestPeriod

if longCondition
    if strategy.position_size < 0
        strategy.close_all()
    if strategy.position_size < positionSize
        strategy.entry("Long", strategy.long, qty=positionSize)
        strategy.exit("Exit Long", "Long", trail_offset=atr * trailPerc, trail_points=atr)

if shortCondition
    if strategy.position_size > 0
        strategy.close_all()
    if strategy.position_size > -positionSize
        strategy.entry("Short", strategy.short, qty=positionSize)
        strategy.exit("Exit Short", "Short", trail_offset=atr * trailPerc, trail_points=atr)

// Implementing Stop-Loss Logic
longStopLoss = strategy.position_avg_price * (1 - stopLossPerc)
shortStopLoss = strategy.position_avg_price * (1 + stopLossPerc)

if strategy.position_size > 0 and close < longStopLoss
    strategy.close("Long")

if strategy.position_size < 0 and close > shortStopLoss
    strategy.close("Short")