Chiến lược giao dịch Bitcoin dựa trên tính toán pha mặt trăng


Ngày tạo: 2024-01-15 12:31:06 sửa đổi lần cuối: 2024-01-15 12:31:06
sao chép: 0 Số nhấp chuột: 1352
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch Bitcoin dựa trên tính toán pha mặt trăng

Tổng quan

Chiến lược này dựa trên chu kỳ pha trăng làm tín hiệu giao dịch, kết hợp với nhiều chỉ số như RSI, MACD, OBV để xác định cơ hội giao dịch của các loại tiền kỹ thuật số như Bitcoin. Ưu điểm chính của chiến lược này là sử dụng yếu tố bên ngoài này của pha trăng làm tín hiệu kích hoạt giao dịch, không giống như hầu hết các chiến lược chỉ dựa vào chỉ số kỹ thuật, có thể tránh được sự thao túng thị trường ở một mức độ nào đó.

Nguyên tắc chiến lược

Lập luận cốt lõi của chiến lược này là để đánh giá xem điều kiện cho việc làm nhiều hay ít phù hợp với các giai đoạn khác nhau của chu kỳ pha trăng. Công thức tính pha trăng là:

Chu kỳ của mặt trăng = 29.5305882 ngày Thời gian của một trăng tròn được biết đến, có thể tính từ ngày bắt đầu của trăng tròn đến thời gian hiện tại Tuổi của mặt trăng = khoảng cách từ ngày trăng tròn được biết đến% độ dài chu kỳ pha trăng Lượng pha trăng = 1 + cos {\displaystyle {\sqrt {1}}} tuổi pha trăng / độ dài chu kỳ pha trăng*2*π))/2

Phân đoạn của mặt trăng thay đổi từ 0 đến 1, giá trị lớn hơn là gần trăng tròn, giá trị nhỏ hơn là gần trăng mới.

Chiến lược được đánh giá dựa trên mức độ giảm của tháng để xác định xem điều kiện mua nhiều hay mua ít có phù hợp hay không. Nếu mức độ tăng của tháng lớn hơn mức độ giảm của tháng ((0.51 mặc định), thì có cơ hội mua nhiều; Nếu mức độ giảm của tháng nhỏ hơn mức độ giảm của tháng ((0.49 mặc định), thì có cơ hội mua ít.

Ngoài ra, chiến lược cũng kết hợp các chỉ số như khối lượng giao dịch, RSI, MACD để tránh phát ra tín hiệu giao dịch trong trường hợp không lý tưởng. Chỉ khi khối lượng giao dịch tăng lên, RSI và MACD sẽ được mở vị trí.

Phân tích lợi thế

Chiến lược này có một số ưu điểm:

  1. Sử dụng các giai đoạn của mặt trăng để cung cấp tín hiệu giao dịch độc đáo, có thể tránh được sự thao túng thị trường ở một mức độ nào đó.
  2. Kết hợp nhiều chỉ số để đánh giá tình hình thị trường, tránh giao dịch trong môi trường bất lợi
  3. Sử dụng bandwidth thực trung bình ATR để tính toán khối lượng giao dịch hợp lý, kiểm soát hiệu quả lỗ tối đa cho mỗi giao dịch
  4. Thiết lập dừng rút lỗ để tránh thua lỗ lớn
  5. Sử dụng OBV để xác định dòng tiền và tránh giao dịch ngược
  6. Thiết lập dừng di chuyển để khóa lợi nhuận

Nhìn chung, chiến lược này tận dụng lợi thế độc đáo của pha trăng và được hỗ trợ bởi nhiều chỉ số kỹ thuật để xác định các cơ hội giao dịch có khả năng cao và kiểm soát rủi ro giao dịch hiệu quả thông qua các biện pháp kiểm soát rủi ro.

Phân tích rủi ro

Chiến lược này có những rủi ro:

  1. Các pha trăng có thể không phù hợp với thị trường.
  2. Cài đặt điểm dừng không đúng cách có thể khiến chiến lược dừng lại sớm
  3. Tỷ lệ các chỉ số MACD, RSI và các chỉ số khác phát ra tín hiệu sai
  4. Thiết lập điểm dừng di động không đúng cách có thể khiến chiến lược bỏ lỡ nhiều tiền hơn

Để kiểm soát những rủi ro này, các biện pháp sau đây có thể được áp dụng:

  1. Chuyển đổi điểm mờ của pha trăng để đảm bảo hiệu quả của con số tín nhiệm
  2. Kiểm tra nhiều tập hợp các tham số dừng rút và chọn tham số tối ưu
  3. Điều chỉnh các tham số của MACD và RSI để đảm bảo chúng có thể phát tín hiệu hiệu quả
  4. Kiểm tra nhiều tập hợp các tham số dừng lỗ di động để đạt được lợi nhuận tối đa

Bằng cách tối ưu hóa các tham số và sử dụng chỉ số tổng hợp, rủi ro giao dịch có thể tránh được phần lớn.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa hơn nữa:

  1. Có thể kiểm tra các tham số pha khác nhau của mặt trăng để tìm ra ngưỡng tối ưu;
  2. Có thể thử kết hợp nhiều chỉ số hơn để giao dịch kết hợp và tăng hiệu quả chiến lược;
  3. Có thể tối ưu hóa các tham số của cơ chế ngăn chặn, cân bằng rủi ro và lợi nhuận;
  4. Có thể mở rộng nhiều loại giao dịch hơn, chứng minh khả năng phổ biến của chiến lược.

Tóm tắt

Chiến lược này thực hiện giao dịch Bitcoin hiệu quả thông qua các tín hiệu giao dịch riêng biệt theo giai đoạn tháng, kết hợp với các chỉ số công nghệ chính thống. So với chiến lược chỉ số đơn, chiến lược này có thể chống lại rủi ro thao tác thị trường tốt hơn và có lợi thế riêng. Bằng cách ngăn chặn rủi ro và tối ưu hóa tham số, có thể thu được lợi nhuận tốt hơn. Chiến lược này có thể được nâng cao hơn nữa và có triển vọng ứng dụng lớn.

Mã nguồn chiến lược
/*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")