월별 이동평균선 운용을 기반으로 한 양적 거래 전략


생성 날짜: 2023-12-15 11:49:06 마지막으로 수정됨: 2023-12-15 11:49:06
복사: 1 클릭수: 390
1
집중하다
1217
수행원

월별 이동평균선 운용을 기반으로 한 양적 거래 전략

개요

이 전략은 주로 달선과 쿼드선의 평행선을 기반으로 작동한다. 구체적으로 20일선은 달선으로, 60일선은 쿼드선으로, 전략 신호의 근원은 두 개의 평행선의 황금 포크 사다리이다. 달선 상에 계절선을 통과할 때 longing, 다중 신호를 형성한다. 달선 아래에 계절선을 통과할 때 청산 청산한다. 이 전략은 중장선 작동에 적합하며, 전체 뒤집기 기회를 포착하여 수익을 얻는다.

전략 원칙

이 전략은 20일 간단한 이동 평균선을 달선 지표로, 60일 간단한 이동 평균선을 사계선 지표로 사용합니다. 구체적인 거래 신호 생성 논리는 다음과 같습니다:

  1. 20일선에서 60일선을 뚫을 때, 즉 골드포크가 발생했을 때, 더 많은 출전한다.
  2. 주가가 10일간의 최고점으로부터 10% 이상 후퇴했을 때, 평소 위치 정지.
  3. 20일선 아래에서 60일선을 통과할 때, 즉 사각지대가 발생했을 때, 매장 청산한다.
  4. 손실이 10%에 도달하면 손실을 중단한다.

월선과 쿼드선의 평행선 교차로 중장선 트렌드를 판단하고, 금포는 중장선 황소시장에 진입하는 것을 의미하며, 사형포는 중장선 곰시장에 진입하는 것을 의미한다. 동시에 스톱 스톱 손실 전략 제어 위험을 결합한다.

전략적 이점

  1. 월, 계절, 평균선을 사용하여 시장 소음을 필터링하고, 중, 중장선 트렌드를 캡처합니다.
  2. 정책의 매개 변수는 간단하고 쉽게 구현할 수 있습니다.
  3. 리스크를 제어하기 위해 스톱 스톱 손실 파라미터를 구성할 수 있다.

위험 분석

  1. 이 트렌드 전환점을 결정할 수 없고, 손실의 위험이 있다.
  2. 달선과 쿼드선 평균선이 지연되어 단선 기회를 놓칠 수 있다.
  3. 하지만, 이 모든 것을 막기 위해, 우리는 적절한 스톱포트를 선택해야 합니다.

해결책:

  1. 모바일 스탠드 트래킹을 적용하여 적시에 스탠드하십시오.
  2. 다른 지표들과 함께 신호를 필터링하여 트렌드를 결정한다.
  3. 평균선 변수를 조정하고, 최적화 전략

전략 최적화 방향

  1. KD 지표와 같은 다른 지표 필터를 추가하여 가짜 돌파구를 방지하십시오.
  2. 평균선 변수를 최적화하여 최적의 평균선 주기 조합을 찾습니다.
  3. 더 많은 수익을 얻기 위해 이동식 차단과 같은 차단 전략을 추가하십시오.

요약하다

이 전략 Overall XXXXX 시스템은atically 월계통 평균선의 장점을 이용하고, 평균선의 금은은은 사다리 (死叉) 를 통해 중장선 트렌드 방향을 판단한다. 또한 합리적인 스톱 손실 제도를 구성하여 위험을 제어한다. 전략 최적화 공간은 여전히 넓고, 추가 테스트 최적화를 할 가치가 있다.

전략 소스 코드
/*backtest
start: 2022-12-08 00:00:00
end: 2023-12-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("均線操作-月季", overlay=true, initial_capital = 100000, default_qty_type = strategy.percent_of_equity, default_qty_value = 30)
sma20 = sma(close, 20)
sma60 = sma(close, 60)

plot(sma20, title="月線", color=color.purple,linewidth=2)
plot(sma60, title="季線", color=color.yellow,linewidth=2)

backtest_year = input(title="backtest_year",type=input.integer,defval=2020)
backtest_month = input(title="backtest_month",type=input.integer,defval=10)
backtest_date = input(title="backtest_date",type=input.integer,defval=1)
backtest_start_time = timestamp(backtest_year,backtest_month,backtest_date,0,0,0)

to_long = sma20 > sma60  and close > highest(10)*0.9 // 黃金交叉
to_close = sma20 < sma60 // 死亡交叉
to_exit = close < highest(10)*0.9 //股價嚴重回檔
to_stop = close < 0.9*strategy.position_avg_price 

// to_long = crossover(sma20, sma60)   // 黃金交叉
// to_close = crossunder(sma20, sma60) // 死亡交叉

//plotchar(to_long, char="B", text="買", color=color.red, location=location.belowbar)
//plotchar(to_close, char="S", text="賣", color=color.green, location=location.abovebar)
//strategy.close("open long",when = tslide, comment="多單滑價7%出場")
if true
    strategy.entry("golden", strategy.long,  when=to_long,comment="多單入場")
    strategy.close("golden",  when=to_exit,comment="多單滑價7%出場")
    strategy.close("golden",  when=to_close,comment="月線季線死亡交叉")
    strategy.close("golden",  when=to_stop,comment="虧損10%強迫停損")