Estrategia de trading de Bitcoin basada en cálculos de las fases lunares


Fecha de creación: 2024-01-15 12:31:06 Última modificación: 2024-01-15 12:31:06
Copiar: 0 Número de Visitas: 1352
1
Seguir
1617
Seguidores

Estrategia de trading de Bitcoin basada en cálculos de las fases lunares

Descripción general

Esta estrategia se basa en el ciclo de la fase lunar como señal de negociación, en combinación con varios indicadores como RSI, MACD, OBV, etc. para identificar oportunidades de negociación en monedas digitales como Bitcoin. La principal ventaja de esta estrategia es que utiliza la fase lunar como un factor externo como señal de activación de la negociación. A diferencia de la mayoría de las estrategias que se basan solo en indicadores técnicos, se puede evitar la manipulación del mercado hasta cierto punto.

Principio de estrategia

La lógica central de esta estrategia es determinar si se cumple con la condición de hacer más o hacer menos en función de las diferentes fases del ciclo de la fase lunar. La fórmula para calcular la fase lunar es:

La duración del ciclo lunar es de 29.5305882 días La hora de una luna llena conocida, puede ser calculada desde el comienzo de la luna llena hasta la hora actual Edad de la fase lunar = número de días desde la luna llena conocida % longitud del ciclo de la fase lunar Fase lunar = 1 + cos (edad de la fase lunar / longitud del ciclo de la fase lunar)*2*π))/2

Según el tamaño del valor de la fase lunar se puede determinar cuál es la fase lunar actual. La fase lunar varía entre 0 y 1, el valor más grande indica que está más cerca de la luna llena, y el valor más pequeño indica que está más cerca de la luna nueva.

La estrategia determina si el valor de la fase de la luna está en condiciones de hacer más o hacer menos. Si el valor de la fase de la luna es mayor que el valor de la fase de la luna (default 0.51), hay una oportunidad de hacer más; si el valor de la fase de la luna es menor que el valor de la fase de la luna (default 0.49), hay una oportunidad de hacer menos.

Además, la estrategia también combina indicadores como el volumen de operaciones, el RSI y el MACD para evitar que se emita una señal de negociación en situaciones no ideales. La posición se abre solo cuando el volumen de operaciones aumenta y el RSI y el MACD cumplen con los requisitos.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. El uso de las fases lunares para proporcionar señales de negociación únicas evita en parte la manipulación del mercado
  2. Combinar varios indicadores para evaluar el estado del mercado y evitar el comercio en condiciones adversas
  3. El uso de la amplitud real promedio ATR para calcular el volumen razonable de operaciones, para controlar eficazmente la pérdida máxima de una sola operación
  4. Establezca un stop loss para evitar grandes pérdidas
  5. Aplicación de OBV para determinar el flujo de fondos y evitar operaciones adversas
  6. Configuración de stop loss móvil para bloquear las ganancias

En general, la estrategia aprovecha las ventajas únicas de la fase lunar y se complementa con una variedad de indicadores técnicos para identificar oportunidades de negociación de alta probabilidad y controlar el riesgo de negociación de manera efectiva a través de medios de control de riesgo.

Análisis de riesgos

El principal riesgo de esta estrategia es:

  1. Las fases de la luna y el movimiento del mercado pueden fallar ocasionalmente.
  2. La configuración incorrecta del punto de parada de retiro puede causar una parada prematura de la estrategia
  3. La probabilidad de que el MACD, el RSI y otros indicadores emitan señales falsas
  4. La configuración incorrecta del punto de parada móvil puede hacer que la estrategia pierda más dinero

Para controlar estos riesgos, se pueden tomar las siguientes medidas:

  1. Ajuste de las desviaciones de las fases lunares para asegurar la eficacia de los números de confianza lunares
  2. Prueba de varios conjuntos de parámetros de retención de pérdidas y selecciona los parámetros óptimos
  3. Ajustar los parámetros de los MACD y RSI para asegurar que emitan señales de manera eficiente
  4. Prueba de múltiples conjuntos de parámetros móviles de stop loss para maximizar el beneficio

La optimización de parámetros y la aplicación de indicadores integrados pueden evitar en gran medida el riesgo de negociación.

Dirección de optimización

La estrategia aún tiene espacio para ser optimizada:

  1. Se pueden probar los parámetros de las diferentes fases lunares para encontrar los mejores valores mínimos.
  2. Se puede tratar de combinar más indicadores para mejorar la eficiencia de la estrategia.
  3. Optimizar los parámetros de los mecanismos de suspensión de pérdidas, equilibrando riesgos y beneficios;
  4. Se puede ampliar la variedad de transacciones y verificar la generalización de la estrategia.

Resumir

Esta estrategia permite la negociación de Bitcoin de manera eficiente a través de señales de negociación únicas en la fase lunar, en combinación con los principales indicadores tecnológicos. En comparación con la estrategia de un solo indicador, esta estrategia es más resistente al riesgo de manipulación del mercado y tiene una ventaja única.

Código Fuente de la Estrategia
/*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")