Estratégia de negociação de Bitcoin com base em cálculos de fases da lua


Data de criação: 2024-01-15 12:31:06 última modificação: 2024-01-15 12:31:06
cópia: 0 Cliques: 1352
1
focar em
1617
Seguidores

Estratégia de negociação de Bitcoin com base em cálculos de fases da lua

Visão geral

Esta estratégia baseia-se no ciclo de fases lunares como sinal de negociação, combinando vários indicadores como RSI, MACD, OBV e outros para identificar oportunidades de negociação em moedas digitais como Bitcoin. A principal vantagem da estratégia é que ela usa o período lunar como um fator externo como sinal de iniciação de negociação. Ao contrário da maioria das estratégias que dependem apenas de indicadores técnicos, ela pode evitar a manipulação do mercado até certo ponto.

Princípio da estratégia

A lógica central da estratégia é determinar se o cliente está ou não em condições de fazer mais ou menos, de acordo com as diferentes fases do ciclo de fases lunares. A fórmula para calcular a fase lunar é:

A duração do ciclo lunar é de 29.5305882 dias O tempo conhecido de um período de lua cheia pode ser calculado a partir do início do período de lua cheia até o momento atual. Idade da fase lunar = número de dias de uma lua cheia conhecida em % da duração do ciclo de fase lunar Fase lunar = 1 + cos = idade da fase lunar / duração do ciclo lunar*2*π))/2

O tamanho do valor da fase lunar pode ser usado para determinar qual é a fase lunar atual. A fase lunar varia entre 0 e 1, o valor maior indica a proximidade da lua cheia e o valor menor indica a proximidade da lua nova.

A estratégia determina se o valor da fase lunar é mais ou menos que o valor da fase lunar. Se o valor da fase lunar for maior do que o valor da fase lunar ((0.51 padrão), há uma oportunidade de fazer mais; Se o valor da fase lunar for menor do que o valor da fase lunar (default 0.49), há uma oportunidade de fazer menos.

Além disso, a estratégia também combina indicadores como volume de negócios, RSI e MACD para evitar sinais de negociação em situações não ideais. A posição é aberta apenas quando o volume de negócios aumenta e o RSI e o MACD são compatíveis.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. O uso de fases lunares para fornecer sinais de negociação únicos permite evitar a manipulação do mercado até certo ponto.
  2. Combinando vários indicadores para avaliar a situação do mercado e evitar negociações em condições adversas
  3. Utilizando o ATR real médio para calcular o volume razoável de transações, com controle efetivo da perda máxima de uma única transação
  4. Estabelecer um stop loss para evitar grandes perdas
  5. Aplicação de OBV para determinar o fluxo de capital e evitar transações adversas
  6. Configuração de stop loss móvel para bloquear o lucro

Em geral, a estratégia aproveita as vantagens únicas da fase lunar e é complementada por vários indicadores técnicos para identificar oportunidades de negociação de alta probabilidade e controlar efetivamente o risco de negociação por meio de meios de controle de risco.

Análise de Riscos

A estratégia tem os seguintes riscos:

  1. As fases lunares e os movimentos do mercado podem falhar ocasionalmente.
  2. Retirar um ponto de parada mal definido pode fazer com que a estratégia pare prematuramente
  3. A probabilidade de um indicador como o MACD ou o RSI emitir um sinal errado
  4. A configuração inadequada do stop loss móvel pode fazer com que a estratégia perca mais lucros

Para controlar esses riscos, as seguintes medidas podem ser tomadas:

  1. Ajustar os valores de diminuição da fase lunar para garantir a eficácia do número de confiança lunar
  2. Teste de múltiplos parâmetros de stop loss e selecione o melhor parâmetro
  3. Ajustar os parâmetros do MACD e do RSI para garantir que eles emitam sinais eficientemente
  4. Testar múltiplos parâmetros de stop loss móvel para maximizar o lucro

Otimizando os parâmetros e aplicando indicadores complexos, o risco de negociação pode ser evitado em grande parte.

Direção de otimização

A estratégia ainda tem espaço para ser melhorada:

  1. A partir de agora, o Google pode testar diferentes parâmetros de fase lunar para encontrar o melhor limite.
  2. A estratégia pode ser mais eficiente se tentarmos combinar mais indicadores para o comércio de pacotes.
  3. Otimizar os parâmetros do mecanismo de suspensão de prejuízos, equilibrando riscos e benefícios;
  4. A capacidade de generalização das estratégias de validação pode ser ampliada para mais variedades de negociação.

Resumir

Esta estratégia permite a negociação de Bitcoin de forma eficiente por meio de sinais de negociação únicos para a fase lunar, em conjunto com os principais indicadores tecnológicos. Em comparação com a estratégia de indicadores individuais, esta estratégia é mais resistente ao risco de manipulação de mercado e possui vantagens únicas.

Código-fonte da estratégia
/*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")