
이 전략은 트렌드를 따르는 유형의 전략으로, 사용자 정의 된 순량 지표를 계산하여 금의 교차 구매 및 사다리 판매를 양적으로 구현합니다.
전략의 핵심 논리는 사용자 정의 된 순량 (NV) 지표를 계산하는 것이다. NV 지표는 가격의 변화 방향을 판단하여, 긍정적으로 하루 거래량을, 부정적으로 하루 거래량의 마이너스를, 변하지 않으면 0을 취한다. 이렇게 가격 변화와 거래량의 관계를 더 명확하게 반영할 수 있다.
그 후, 전략은 NV 지표의 3 일 간소 이동 평균을 각각 골드 크로스 라인 및 데드 포크 라인으로 계산한다. NV 지표가 아래에서 위쪽으로 골드 크로스 라인을 돌파 할 때, 더 많은 것을 하고, NV 지표가 위에서 아래로 데드 포크 라인을 돌파 할 때, 공백을 한다.
또한, 전략은 거래 시간을 제어하기 위해 파라미터화된 시작시간을 설정한다.
이 전략의 가장 큰 장점은 전략이 간단하고 명확하고 이해하기 쉽고, 매개 변수 설정이 유연하며, 거래 종류, 거래 시간 등을 사용자 정의 할 수 있다는 것입니다. 또한, 이 전략은 트렌드 추적 방식의 전략으로, 가격 트렌드를 효과적으로 포착하고, 거래 빈도를 낮추고, 높은 수익률을 얻을 수 있습니다.
이 전략에는 다음과 같은 위험들이 있습니다.
요는 전략을 따라가며 가격 변화의 추세에 적시에 반응하지 않습니다. 일부 거래 기회를 놓칠 수도 있고 적시에 손실을 막을 수도 있습니다.
양자금 교차는 그 자체로 지연성이 있으며, 입장이 늦어지고 손실이 확대될 수 있습니다.
시장의 소음을 효과적으로 필터링할 수 없고, 덫에 걸리기 쉽다.
동적 이동 평균을 사용하여 다른 지표의 필터링과 함께 위험을 줄일 수 있습니다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
단위 손실을 제어하기 위해 이동적 손실, 야간 손실을 제어하는 전략을 추가하십시오.
필터링 지표를 추가하고, MACD, KDJ 등과 같은 다른 지표를 사용하여 잘못된 신호를 필터링하여 전략 안정성을 향상시킨다.
변수 최적화, 유전적 알고리즘, 마르코프 체인 등의 방법을 통해 반복적으로 최적의 변수 조합을 찾는다.
전략 포트폴리오는, 다른 비관련 전략과 결합하여, 위험을 더욱 분산시키고, 전체적인 수익률을 향상시킬 수 있다.
이 전략은 금의 양적 교차를 통해 간단하고 효과적인 트렌드 추적을 구현합니다. 다소 뒤처진 부분이 있지만, 매개 변수 설정은 유연하고 이해하기 쉽기 때문에 초보자 연습에 적합한 전략입니다. 지속적인 최적화를 통해 전략의 효과를 점진적으로 향상시키고 위험을 줄일 수 있습니다.
/*backtest
start: 2023-11-14 00:00:00
end: 2023-11-15 03:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title="@DankCoins - Customized Net Volume")
src = input(defval = close, title = "VA Source")
nv = change(src) > 0 ? volume : change(src) < 0 ? -volume : 0*volume
// Inputs //
VHigh = input(defval = 50, title = "VHigh Amount")
VLow = input(defval = -50, title = "VLow Amount")
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2018, title = "From Year", minval = 2012)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2012)
MAV1 = sma(volume, 3)
MAV2 = -sma(volume, 3)
enterShort = crossunder(nv, MAV1)
exitShort = crossunder(nv, MAV2)
enterLong = crossover(nv, MAV2)
exitLong = crossover(nv, MAV1)
// Time Function
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
strategy.entry(id="Long Entry", long=true, when=enterLong and window())
strategy.entry(id="Short Entry", long=false, when=enterShort and window())
strategy.exit("Exit Long", from_entry = "Long Entry", when=exitLong and window())
strategy.exit("Exit Short", from_entry = "Short Entry", when=exitShort and window())
// Plot
plot(nv, color=blue, title="NV")
plot(VHigh, color=red)
plot(VLow, color=red)
plot(MAV1, color=green)
plot(MAV2, color=green)