양적 거래에 기반한 신호-소음 이동 평균 거래 전략

저자:차오장날짜: 2024-01-02 12:24:35
태그:

img

I. 전략 이름

신호-소음 이동 평균 거래 전략

전략 개요

이 전략은 특정 기간 동안 신호와 소음 비율을 계산하고 이동 평균 거래 신호와 결합하여 양적 거래를 실현합니다. 기본 아이디어는:

  1. 특정 기간 동안 신호와 소음 비율을 계산합니다 (조정 가능)
  2. 신호와 소음 비율을 부드럽게 하기 위해 이동 평균을 적용
  3. 현재 신호와 소음 비율을 이동 평균 값과 비교하여 거래 신호를 생성합니다.
  4. 거래 신호를 기반으로 긴 또는 짧은

III. 전략 원칙

  1. 신호와 소음 비율 (StN) 를 계산하는 공식은 StN = -10*log ((Σ(1/close) /n이며, 여기서 n은 기간의 길이다.
  2. 단순 이동 평균 (SMA) 을 신호와 소음 비율에 적용하여 부드러운 StN을 얻습니다.
  3. 현재 StN와 평형 SMAStN을 비교합니다. (1) SMAStN > StN, 단축 (2) SMAStN < StN, 길게 이동 (3) 그렇지 않으면, 밀폐된 위치

IV. 이점 분석

이 전략의 주요 장점은 다음과 같습니다.

  1. StN는 시장 변동과 위험을 판단 할 수 있으며 SMA는 노이즈 감축 기능을 가지고 있습니다.
  2. 시장 위험을 판단하기 위해 StN과 SMA를 결합하여 거래 신호를 생성하면 다른 지표의 장점을 활용합니다.
  3. 다른 시장 조건에 적응하기 위해 조정 가능한 매개 변수
  4. 정지 신호는 시장 특성에 대한 직관적 인 판단, 길거나 짧은 것을 직접 나타냅니다.

V. 위험 분석

이 전략에는 몇 가지 위험도 있습니다.

  1. StN와 MA 사이의 교차 판단은 오차 위험이 있습니다.
  2. 부적절한 기간 설정은 잘못된 신호를 일으킬 수 있습니다
  3. 상대적으로 적은 짧은 기회, 매개 변수 조절을 통해 최적화
  4. 블랙 스완 이벤트로 인한 극심한 변동은 스톱 로스를 유발할 수 있습니다.

해결책:

  1. 과도한 부드러움을 피하기 위해 MA 매개 변수를 조정
  2. 기간 매개 변수를 최적화하고 다른 시장에서 적응력을 테스트합니다.
  3. 더 많은 짧은 기회를 제공하기 위해 짧은 조건을 조정
  4. 최대 손실을 제어하기 위해 손해를 중지 설정

VI. 최적화 방향

전략은 다음과 같은 방법으로 최적화 될 수 있습니다.

  1. 더 많은 종류의 이동 평균의 시험 조합
  2. 리스크 제어에 스톱 로스 메커니즘을 추가합니다.
  3. 위치 관리 추가, 변동에 따라 위치를 조정
  4. 안정성을 높이기 위해 더 많은 요소를 포함
  5. 자동으로 매개 변수를 최적화하기 위해 기계 학습 방법을 사용

VII. 요약

이 전략은 시그널-소음 비율을 통해 시장 위험을 판단하고 이동 평균에서 거래 신호를 생성함으로써 양적 거래를 실현합니다. 단일 기술 지표와 비교하면 이 전략은 위험 통제를 통해 안정성을 향상시키기 위해 StN 및 SMA의 장점을 통합합니다. 매개 변수 최적화 및 기계 학습으로이 전략은 개선 잠재력이 있으며 신뢰할 수 있고 효과적인 양적 거래 전략입니다.


/*backtest
start: 2023-12-25 00:00:00
end: 2023-12-29 10:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HPotter 05/01/2021
// The signal-to-noise (S/N) ratio. 
// And Simple Moving Average.
// Thank you for idea BlockchainYahoo
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors. 
////////////////////////////////////////////////////////////
SignalToNoise(length) =>
    StN = 0.0
    for i = 1 to length-1
        StN := StN + (1/close[i])/length
    StN := -10*log(StN)

strategy(title="Backtest Signal To Noise ", shorttitle="StoN", overlay=false)
length = input(title="Days", type=input.integer, defval=21, minval=2)
Smooth =  input(title="Smooth", type=input.integer, defval=7, minval=2)
reverse = input(false, title="Trade reverse")
StN = SignalToNoise(length)
SMAStN = sma(StN, Smooth)
pos = iff(SMAStN[1] > StN[1] , -1,
	   iff(SMAStN[1] < StN[1], 1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )
plot(StN, title='StN' )
plot(SMAStN, title='Smooth', color=#00ff00)

더 많은