Стратегия торговли биткойнами на основе лунной фазы

Автор:Чао Чжан, Дата: 2024-01-15 12:31:06
Тэги:

img

Обзор

Эта стратегия использует лунный фазовый цикл в качестве торговых сигналов в сочетании с RSI, MACD, OBV и другими индикаторами для выявления торговых возможностей для криптовалют, таких как Биткойн.

Логика стратегии

Основная логика этой стратегии заключается в определении длинных или коротких возможностей на основе различных стадий лунного фазового цикла.

Продолжительность лунного цикла = 29,5305882 дня Учитывая известное время полнолуния, количество дней от этого полнолуния до текущего времени можно рассчитать
Лунный возраст = Дни с момента известного полнолуния % Длина лунного фазового цикла Значение лунной фазы = (1 + cos ((Лунный возраст / длина лунного цикла фазы * 2 * π)) / 2

Значение лунной фазы колеблется от 0 до 1. Чем больше значение, тем ближе к полнолунию, в то время как меньшее значение означает ближе к новолунию.

Стратегия оценивает длинные или короткие возможности на основе порогов лунной фазы. Если значение лунной фазы больше длинного порога (по умолчанию 0,51), есть шанс пойти длинным. Если значение лунной фазы меньше короткого порога (по умолчанию 0,49), есть шанс пойти коротким.

Кроме того, стратегия также сочетает в себе такие индикаторы, как объем торговли, RSI и MACD, чтобы избежать торговых сигналов во время неблагоприятных условий.

Анализ преимуществ

Основные преимущества этой стратегии:

  1. Используйте уникальный торговый сигнал лунной фазы, избегайте манипулирования рынком в некоторой степени
  2. Сочетание индикаторов для определения состояния рынка, избегание торговли в неблагоприятных условиях
  3. Использовать ATR для расчета разумного размера позиции, эффективно контролировать максимальные потери на одну сделку
  4. Установите стоп-потеря для предотвращения больших потерь
  5. Осудите направление потока средств с OBV, избегайте торговли против тренда
  6. Установка остаточного стоп-лосса для блокировки прибыли

В целом, эта стратегия в полной мере использует уникальные преимущества лунных фаз и сочетает в себе множество технических индикаторов для выявления высоковероятных торговых шансов, а также использует механизмы контроля рисков для эффективного определения торговых рисков.

Анализ рисков

К основным рискам этой стратегии относятся:

  1. Фаза луны и движения рынка могут иногда не работать
  2. Неправильный стоп-лосс может прервать стратегию преждевременно
  3. Вероятность ложных сигналов от MACD, RSI
  4. Неправильное отслеживание стоп-лосса может привести к тому, что стратегия потеряет большую прибыль

Для борьбы с этими рисками могут быть приняты следующие меры:

  1. Настройка порогов лунной фазы для обеспечения действительных лунных сигналов
  2. Испытать несколько параметров остановки потерь и выбрать оптимальный
  3. Прямая настройка параметров MACD и RSI для эффективного генерирования сигналов
  4. Испытать несколько наборов параметров остановки потерь для получения максимальной прибыли

Благодаря оптимизации параметров и комбинированным показателям торговые риски могут быть значительно смягчены.

Руководство по оптимизации

Эта стратегия еще может быть оптимизирована:

  1. Испытать различные лунные параметры, чтобы найти оптимальные пороги
  2. Попробуйте объединить больше показателей для ансамбля торговли и повысить эффективность
  3. Оптимизировать параметры механизмов остановки потерь для сбалансирования рисков и прибыли
  4. Расширение на больше торговых активов для проверки способности к обобщению

Заключение

Эта стратегия реализует эффективную торговлю биткойнами с помощью уникальных торговых сигналов лунной фазы, в сочетании с основными техническими индикаторами. По сравнению с стратегиями с одним индикатором, эта стратегия может лучше защищаться от рисков манипулирования рынком и имеет уникальные преимущества. Используя стоп-лосс для предотвращения рисков и оптимизации параметров, можно стабильно получать устойчивую и хорошую отдачу.


/*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")


Больше