모멘텀 추적 전략

저자:차오장, 날짜: 2023-11-23 13:47:02
태그:

img

전반적인 설명

이 전략은 촛불의 몸 크기와 트렌드 모멘텀 지표 EMA를 활용하여 시장 트렌드를 결정하고 낮은 가격으로 구매하고 높은 가격으로 판매하는 자동 거래를 구현합니다. 기본 아이디어는 상승 추세에서 상승을 추구하고 하락 추세에서 하락에 긴 포지션을 추가하는 것입니다.

전략 논리

  1. 촛불을 몸의 크기에 따라 , 작은 촛불, 큰 촛불로 분류하세요.
  2. EMA가 상승할 때 큰 빨간 촛불이 나타나면 시장의 교정 현상이 나타납니다. 이 시점에서 긴 포지션을 닫습니다.
  3. EMA가 떨어지면 큰 녹색 촛불이 나타나면 시장이 안정되고 있음을 의미합니다. 이 시점에서 긴 포지션을 추가합니다.
  4. 촛불 변화와 EMA 트렌드의 실시간 모니터링을 기반으로 포지션을 동적으로 조정합니다.

이점 분석

  1. 전략 아이디어는 단순한 지표를 통해 시장 구조를 판단함으로써 간단하고 이해하기 쉽습니다.
  2. 전략은 몇 가지 매개 변수를 가지고 있으며 과도한 부착에 취약하지 않으며 높은 안정성을 제공합니다.
  3. 그것은 낮은 가격에 구매하고 높은 가격에 판매하는 논리를 구현하고 상당한 시장 변동 중에 눈에 띄는 이익을 제공합니다.
  4. 이는 동향과 역행을 모두 고려하고 시장 조건의 변화에 신속하게 대응할 수 있습니다.

위험 과 최적화

  1. 그것은 자산 가격의 절대적 범위를 고려하지 않습니다. 이는 스톱 손실 위험을 초래할 수 있습니다. ATR은 스톱 손실에 포함될 수 있습니다.
  2. 암호 화폐의 기본 이슈를 고려하지 않으며 더 많은 거래 쌍에서 테스트 할 수 있습니다.
  3. 촛불 패턴을 판단하는 데 도움이 되는 머신 러닝 알고리즘을 도입할 수 있습니다.
  4. 거래량 지표는 품종을 검사하는 데 사용될 수 있습니다.
  5. 다른 시간 프레임 매개 변수 조정 테스트 할 수 있습니다.

결론

이 전략의 전반적인 아이디어는 간단하고 이해하기 쉽으며, 주요 특징으로는 모멘텀 트래킹이 있다. 간단한 EMABOLL 지표를 통해 주요 시장 방향을 결정하고 현장 조정을 판단하기 위해 촛불체를 사용하여 낮은 가격으로 구매하고 높은 가격으로 판매함으로써 효율적인 거래를 실현한다. 이 전략은 높은 안정성을 가지고 있으며 암호화폐에서 예외적으로 잘 수행하므로 추가 테스트 및 최적화를 위해 가치가 있습니다.


/*backtest
start: 2023-10-23 00:00:00
end: 2023-11-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//Author @divonn1994

strategy(title='Trend Follower Strategy v2 [divonn1994]', shorttitle='TrendFollowStrategyV2', overlay=false, pyramiding=0, default_qty_value=100, default_qty_type=strategy.percent_of_equity, precision=7, currency=currency.USD, commission_value=0.1, commission_type=strategy.commission.percent, initial_capital=100)

//Important Constants for Classifying Candle Size----------------------------------------------------------------------------------------------------------------------------------------------

timesBigger = 2
crumbSize = 1400
crumbSize2 = 2100
bigCandleSize = 3800

//Key Alerts and Classifications of Candle Size and EMAs---------------------------------------------------------------------------------------------------------------------------------------

emaAlert = ta.ema(close, 8) > ta.ema(open, 8) ? 1 : 0 
CandleSize = close * 1 - open * 1
previousCandleSize = close[1] * 1 - open[1] * 1
greenCandle = close > open ? 1 : 0
previousGreenCandle = close[1] > open[1] ? 1 : 0

crumb = (greenCandle==1 and CandleSize<=crumbSize) or (greenCandle==0 and -CandleSize<=crumbSize) ? 1 : 0
bigCrumb = (greenCandle==1 and CandleSize<=crumbSize2 and CandleSize>crumbSize) or (greenCandle==0 and -CandleSize<=crumbSize2 and -CandleSize>crumbSize) ? 1 : 0
previousCandleIsSmallCrumb = (previousGreenCandle==1 and previousCandleSize<=crumbSize) or (previousGreenCandle==0 and -previousCandleSize<=crumbSize) ? 1 : 0
previousCandleIsBigCrumb = (previousGreenCandle==1 and previousCandleSize<=crumbSize2 and previousCandleSize>crumbSize) or (previousGreenCandle==0 and -previousCandleSize<=crumbSize2 and -previousCandleSize>crumbSize) ? 1 : 0

bigCandle = (greenCandle==1 and previousCandleIsBigCrumb==1 and CandleSize>=math.abs(timesBigger*previousCandleSize)) or (greenCandle==1 and previousCandleIsSmallCrumb==1 and CandleSize>=bigCandleSize) or (greenCandle==1 and previousCandleIsSmallCrumb==0 and previousCandleIsBigCrumb==0 and CandleSize>=math.abs(timesBigger*previousCandleSize)) ? 1 : 0

//Engine (Secret Sauce)------------------------------------------------------------------------------------------------------------------------------------------------------------------------

buy = (crumb==0 and bigCrumb==0 and greenCandle==0) or (greenCandle==1 and bigCandle==1) or (emaAlert==0) ? 0 : 1

//Strategy-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

if ta.crossover(buy, 0.5)
    strategy.entry('long', strategy.long, comment='long')
if ta.crossunder(buy, 0.5)
    strategy.close('long')

//Plot Strategy Behavior-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

plot(buy, color=color.new(color.silver, 0))
plot(0.5, color=color.new(color.fuchsia, 0))

더 많은