이 전략은 거래 방향을 결정하기 위해 가격 동력 지표를 사용합니다. 구체적으로, 각각 이동 평균과 평균 가격을 계산합니다. 가격이 이동 평균과 평균 가격을 넘을 때 구매 신호가 생성됩니다. 잘못된 신호를 필터링하기 위해 이전 유사한 신호가 필요하지 않습니다. 그 다음 신호 상태를 저장하고 이동 평균과 결합하여 최종 오픈 포지션 신호를 생성합니다. 전략에는 또한 스톱 손실 및 수익 취득 설정이 포함되어 있습니다.
이 전략은 주로 가격 동력 지표에 의존하여 트렌드 방향을 판단합니다. 먼저 이동 평균과 가격의 평균 가격을 계산합니다.
swmaClose = swma(close)
vwapClose = vwap(close)
어디?swma
평형 이동 평균이고,vwap
양쪽 모두 평균 가격 수준을 반영할 수 있습니다.
그 다음 가격을 평균과 비교하여 가격이 이동 평균과 평균 가격을 넘어서는지 확인하고 상승 신호인지 판단합니다.
swmaLong = close > swmaClose
vwapLong = close > vwapClose
잘못된 신호를 필터링하려면 다음 두 가지 지표로부터의 신호가 필요하지 않습니다.
triggerLong = vwapLong and not vwapLong[1] and not swmaLong and not swmaLong[1]
다음으로, 상승 신호를 저장합니다:
saveLong = false, saveLong := triggerLong ? true : not vwapLong ? false : saveLong[1]
마지막으로, 저장된 교차 신호와 가격이 다시 이동 평균을 넘을 때, 오픈 포지션 신호를 생성합니다.
startLong = saveLong and swmaLong
이것은 일부 잘못된 신호를 필터링하여 신호를 더 신뢰할 수 있습니다.
전략에는 또한 스톱 로스 및 영업 취득 설정이 포함되어 있습니다. 스톱 로스 거리는 구성 가능하며, 영업 취득은 스톱 로스의 특정 배수로 설정됩니다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
이 전략은 또한 몇 가지 위험을 안고 있습니다.
대책:
이 전략은 또한 다음과 같은 방향으로 최적화 될 수 있습니다.
이러한 최적화는 전략의 유연성, 안정성 및 수익성을 향상시킬 수 있습니다.
전체적으로, 이 가격 모멘텀 추적 전략은 간단하고 직설적이고 논리적 트렌드 추적 전략이다. 이 전략은 가격 모멘텀 방향을 결정하기 위해 가격 이동 평균과 평균 가격을 사용하며 신호 품질을 향상시키기 위해 다단계 검증 메커니즘을 설계한다. 이 전략에는 합리적인 스톱 로스 및 영리 설정도 포함되어 있다. 코드 측면에서, 전략 논리는 매우 간결하며, 실행에 필요한 것은 파인 스크립트의 20+줄 만이다. 요약하자면, 이 전략은 매우 좋은 학습 예이며, 초보자들도 양적 거래 전략을 이해하는 데 매우 좋은 출발점으로 사용할 수 있다. 물론, 전략 자체는 실용적인 거래 가치도 있다. 매개 변수 최적화와 기능 확장을 통해 소음과 트렌드를 피하기 위한 실용적인 트래킹 시스템으로 변할 수 있다.
/*backtest start: 2023-12-03 00:00:00 end: 2024-01-02 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title = "Simple Price Momentum", shorttitle = "SPM", overlay = true, initial_capital = 20000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, commission_value = 0.025) // How To Create A Simple Trading Strategy With TradingView // https://docs.google.com/document/d/1fXxCtPuGgTXb-RuBJNbwlfgkeiLTK5060LfTrzRlr5k/view swmaClose = swma(close) vwapClose = vwap(close) swmaLong = close > swmaClose vwapLong = close > vwapClose triggerLong = vwapLong and not vwapLong[1] and not swmaLong and not swmaLong[1] saveLong = false, saveLong := triggerLong ? true : not vwapLong ? false : saveLong[1] startLong = saveLong and swmaLong startLong := input(false, "Consecutive Orders") ? startLong : startLong and not startLong[1] stopLoss = input(250, "Stop Loss", step = 50) takeProfit = input(10, "Reward/Risk") * stopLoss strategy.entry("Open Long", strategy.long, when = startLong) strategy.exit("Exit Long", "Open Long", profit = stopLoss, loss = takeProfit) // bgcolor(swmaLong ? color.blue : na) // bgcolor(vwapLong ? color.orange : na) // bgcolor(triggerLong ? color.purple : na) // bgcolor(saveLong ? color.yellow : na) bgcolor(startLong[1] ? color.green : na)