
이 전략은 거래 방향을 판단하기 위해 가격 운동 지표를 사용합니다. 구체적으로, 평균선과 평균값을 각각 계산하여 가격에 평균선과 평균값이 넘어가면 구매 신호를 생성합니다. 가짜 신호를 필터링하기 위해, 이전에 유사한 신호가 없는 것을 요구합니다. 이후 신호 상태를 저장하고, 평균선 판단과 결합하여 최종 포지션 개시 신호를 생성합니다.
이 전략은 주로 가격 운동 지표에 기반하여 트렌드 방향을 판단한다. 우선 가격의 평균선과 평균값을 계산한다:
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)