Stratégie de trading Bitcoin basée sur les calculs des phases lunaires


Date de création: 2024-01-15 12:31:06 Dernière modification: 2024-01-15 12:31:06
Copier: 0 Nombre de clics: 1352
1
Suivre
1617
Abonnés

Stratégie de trading Bitcoin basée sur les calculs des phases lunaires

Aperçu

Cette stratégie est basée sur le cycle de phases lunaires comme signal de négociation, combinant plusieurs indicateurs tels que le RSI, le MACD et l’OBV pour identifier les opportunités de négociation de monnaies numériques telles que le Bitcoin. Le principal avantage de cette stratégie est d’utiliser le phase lunaire comme un facteur externe comme signal de déclenchement de la négociation, ce qui, contrairement à la plupart des stratégies qui ne dépendent que des indicateurs techniques, permet d’éviter dans une certaine mesure la manipulation du marché.

Principe de stratégie

La logique centrale de cette stratégie est de déterminer si les conditions de sur- ou de sous-traitance sont remplies en fonction des différentes phases du cycle des phases lunaires. La formule de calcul des phases lunaires est:

La longueur du cycle lunaire est de 29,5305882 jours. Le nombre de jours entre le début de la pleine lune et l’heure actuelle d’une pleine lune connue L’âge de la lune = le nombre de jours de la pleine lune connue en pourcentage de la longueur du cycle de la lune La phase lunaire est égale à 1 + cos (âge de la phase lunaire / longueur de la phase lunaire)*2*π))/2

La taille de la phase lunaire permet de déterminer quelle est la phase lunaire actuelle. La phase lunaire varie entre 0 et 1, la plus grande valeur indique la plus proche de la pleine lune, la plus petite valeur indique la plus proche de la nouvelle lune.

La stratégie est basée sur le fait que la valeur de la phase lunaire est plus ou moins élevée. Si la phase lunaire est supérieure à la valeur de la phase lunaire (défaut 0.51), il y a une chance de faire plus; si la phase lunaire est inférieure à la valeur de la phase lunaire (défaut 0.49), il y a une chance de faire moins.

En outre, la stratégie est combinée avec des indicateurs tels que le volume de transactions, le RSI et le MACD pour éviter d’émettre des signaux de négociation dans des situations non idéales. Les positions ne sont ouvertes que lorsque le volume de transactions augmente et que le RSI et le MACD sont conformes.

Analyse des avantages

La stratégie présente les principaux avantages suivants:

  1. L’utilisation des phases lunaires pour fournir des signaux de trading uniques permet d’éviter une certaine manipulation du marché
  2. Combiner plusieurs indicateurs pour évaluer la situation du marché et éviter de négocier dans des conditions défavorables
  3. Utilisation de l’amplitude réelle moyenne ATR pour calculer un volume de transactions raisonnable et contrôler efficacement la perte maximale d’une seule transaction
  4. Il est recommandé de mettre en place un arrêt de perte pour éviter les pertes importantes.
  5. Utilisez l’OBV pour juger des flux de fonds et éviter les transactions négatives
  6. La mise en place d’un stop-loss mobile pour verrouiller les bénéfices

Dans l’ensemble, la stratégie exploite pleinement les avantages uniques de la phase lunaire et s’accompagne d’un certain nombre d’indicateurs techniques pour identifier les opportunités de transactions à forte probabilité et contrôler efficacement les risques de transaction par des moyens de contrôle des risques.

Analyse des risques

La stratégie présente principalement les risques suivants:

  1. Les phases de la lune et les tendances du marché peuvent parfois être fausses.
  2. Un mauvais réglage du point d’arrêt de la retraite peut entraîner un arrêt prématuré de la stratégie
  3. Probabilité que le MACD, le RSI et d’autres indicateurs émettent un mauvais signal
  4. Un mauvais paramètre de stop loss mobile peut faire rater plus d’argent à une stratégie

Pour maîtriser ces risques, les mesures suivantes peuvent être prises:

  1. Adaptation des valeurs de la phase lunaire pour assurer l’efficacité du numéro de confiance
  2. Tester plusieurs séries de paramètres d’arrêt de rétractation et sélectionner le paramètre optimal
  3. Ajuster les paramètres du MACD et du RSI pour s’assurer qu’ils émettent un signal efficace
  4. Tester plusieurs groupes de stop-loss mobiles pour maximiser les profits

L’optimisation des paramètres et l’utilisation d’indicateurs complexes permettent d’éviter dans une large mesure les risques de transaction.

Direction d’optimisation

Il y a encore de la place pour optimiser cette stratégie:

  1. Les paramètres de phases lunaires peuvent être testés pour trouver les seuils optimaux.
  2. Il est possible d’essayer de combiner plus d’indicateurs pour améliorer l’efficacité de la stratégie.
  3. Il est possible d’optimiser les paramètres du mécanisme de freinage, en équilibrant les risques et les bénéfices.
  4. Il est possible d’élargir la variété des transactions et de vérifier la généralisation de la stratégie.

Résumer

Cette stratégie permet de négocier des bitcoins efficacement grâce à des signaux de négociation uniques à chaque phase de la lune, en collaboration avec des indicateurs technologiques traditionnels. Par rapport à la stratégie d’indicateur unique, cette stratégie offre une meilleure protection contre les risques de manipulation du marché et présente des avantages uniques.

Code source de la stratégie
/*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")