이 전략은 빠른 이동 평균, 느린 이동 평균 및 MACD 지표를 계산하여 가격 트렌드를 판단하고, 골든 크로스 및 데드 크로스 거래 신호를 구성합니다. 이 또한 이익을 잠금하고 지속적으로 트렌드를 추적하기 위해 수익을 취하고 손실을 멈추고 손실을 멈추는 것을 결합합니다.
이 전략은 주로 세 가지 지표에 기반합니다.
먼저, 빠른 이동 평균과 두 느린 이동 평균을 계산합니다. 빠른 MA가 두 느린 MA보다 높을 때 구매 신호가 생성됩니다. 빠른 MA가 두 느린 MA보다 낮을 때 판매 신호가 생성됩니다. 이것은 골든 크로스 및 데드 크로스 거래를 실현하기 위해 단기 및 장기 트렌드 사이의 관계를 판단합니다.
두 번째로, MACD 라인, 신호 라인 및 히스토그램을 포함한 MACD 지표를 계산합니다. MACD 히스토그램이 > 0이면 상승 지표이며 MACD 히스토그램이 < 0일 경우 하락 지표입니다. 이것은 황금 십자 및 죽은 십자 신호의 신뢰성을 판단하는 데 도움이됩니다.
마지막으로, 이윤을 취하고, 손실을 멈추고, 손실을 멈추는 메커니즘을 포함합니다. 이윤을 취하고 손실을 멈추는 포인트는 이익을 잠금하고 위험을 제어하는 데 사용됩니다. 손실을 멈추는 지점은 이익을 추적하는 데 사용됩니다.
이 전략의 장점은 다음과 같습니다.
또한 몇 가지 위험이 있습니다.
해결책은 다음과 같습니다.
이 전략은 다음 측면에서도 최적화 될 수 있습니다.
요약하자면, 이것은 트렌드를 판단하고 트레일링 스톱 로스를 실현하기 위해 골든 크로스, 데드 크로스 및 MACD를 사용하는 간단하지만 효과적인 전략입니다. 장점은 트렌드 추적 및 높은 사용자 정의성을 가진 이익 잠금입니다. 그것은 다양한 거래 도구에 적합한 보편적 매개 변수 최적화 전략입니다. 여전히 약간의 위험과 최적화 공간이 있지만 전반적으로 신뢰할 수 있고 실용적인 거래 전략입니다.
/*backtest start: 2023-12-14 00:00:00 end: 2023-12-21 00:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy('The Puria Method', shorttitle = 'Puria',overlay = true) //=== GENERAL INPUTS === // short ma maFastSource = input(defval = close, title = "Fast MA Source") maFastLength = input(defval = 5, title = "Fast MA Period", minval = 1) // long ma 1 maSlow1Source = input(defval = low, title = "Slow MA1 Source") maSlow1Length = input(defval = 85, title = "Slow MA Period", minval = 1) // long ma 2 maSlow2Source = input(defval = low, title = "Slow MA2 Source") maSlow2Length = input(defval = 75, title = "Slow MA Period", minval = 1) //macd macdFastLength = input(defval = 12, title = "Fast MACD Period", minval = 1) macdSlowLength = input(defval = 26, title = "Slow MACD Period", minval = 1) macdSmaLength = input(defval = 9, title = "SMA MACD Period", minval = 1) // the risk management inputs inpTakeProfit = input(defval = 30, title = "Take Profit", minval = 0) inpStopLoss = input(defval = 10, title = "Stop Loss", minval = 0) inpTrailStop = input(defval = 5, title = "Trailing Stop Loss", minval = 0) inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0) // if an input is less than 1, assuming not wanted so we assign 'na' value to disable it. useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na // === SERIES SETUP === maFast = ema(maFastSource, maFastLength) maSlow1 = wma(maSlow1Source, maSlow1Length) maSlow2 = wma(maSlow2Source, maSlow2Length) [_, signal, histLine] = macd(close, macdFastLength, macdSlowLength, macdSmaLength) // === PLOTTING === fast = plot(maFast, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50) slow1 = plot(maSlow1, title = "Slow MA1", color = red, linewidth = 2, style = line, transp = 50) slow2 = plot(maSlow2, title = "Slow MA2", color = red, linewidth = 2, style = line, transp = 50) // === LOGIC === signalUp = crossover(maFast, maSlow1) and crossover(maFast, maSlow2) and histLine > 0 signalDown = crossunder(maFast, maSlow1) and crossunder(maFast, maSlow2) and histLine < 0 // ===STRATEGY=== strategy.entry(id = "Long", long = true, when = signalUp) strategy.entry(id = "Short", long = false, when = signalDown) strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset) strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)