이 전략은 골든 크로스오버에서 구매하고 죽음의 크로스오버에서 판매하는 거래 전략을 구현하기 위해 사용자 정의 순량 지표를 계산합니다. 이 전략은 트렌드 다음 전략에 속합니다.
전략의 핵심 논리는 사용자 정의 순량 (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)