단기 이중 이동 평균 전략


생성 날짜: 2023-11-02 15:10:04 마지막으로 수정됨: 2023-11-02 15:10:04
복사: 1 클릭수: 725
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

단기 이중 이동 평균 전략

개요

쌍평균선 전략은 비교적 흔한 단선 거래 전략이다. 이 전략은 서로 다른 주기의 평균을 계산하여 시장의 경향 방향을 판단하여 진입한다. 짧은 주기 평균선 위에 긴 주기 평균선을 통과할 때, 더 많이 하고, 짧은 주기 평균선 아래에 긴 주기 평균선을 통과할 때, 공백을 한다.

전략 원칙

이 전략의 핵심 논리는 다음과 같습니다.

  1. 두 개의 다른 주기의 평균선을 계산한다. 하나는 긴 주기 평균선이고 하나는 짧은 주기 평균선이다. 여기서는 오픈 가격과 클로징 가격의 평균선을 사용한다.

  2. 단기평균선이 장기평균선의 침투가 발생했는지 여부를 판단한다. 단기평균선 상에서 긴 선을 통과하면 시장이 상승 추세에 있다는 것을 나타냅니다. 더 많이 할 수 있습니다. 단기평균선 아래에서 긴 선을 통과하면 시장이 하향 추세에 있다는 것을 나타냅니다.

  3. 트렌드 방향에 따라 입구에 더 많은 공백을 한다. 구체적으로, 짧은 주기 평균선 위에 긴 주기 평균선 을 가로질러 있을 때, 더 많은 공백을 한다. 짧은 주기 평균선 아래 긴 주기 평균선 을 가로질러 있을 때, 공백을 한다.

  4. 정지 및 정지는 실제 상황에 따라 설정됩니다.

전체 전략은 평행선의 추세 판단 기능을 사용하여 시장의 단기 및 장기 경향의 관계를 판단하여 더 짧은 중간과 짧은 선의 움직임을 포착합니다. 이 전략의 논리는 간단하고 명확합니다. 쌍 평행선이 교차하여 선의 움직임을 판단하고 계속되는 리듬 전환을 통해 거래 작업을 수행합니다.

전략적 이점

이 두 가지 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 이 아이디어는 간단하고, 이해하기 쉽고, 실행하기 쉽습니다.

  2. 뚜렷한 출전시기와 출전 기준을 갖는다.

  3. 평균선 변수를 조정하여 다른 시장 환경에 적응할 수 있다.

  4. 트렌드와 반향을 모두 고려하여 특정 중단계 상황을 파악할 수 있습니다.

  5. 위험성을 조절할 수 있는 상쇄 논리도 있습니다.

전략적 위험

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

  1. 시장이 충격적인 정리 단계에 있을 때, 정지 손실은 자주 유발될 수 있다.

  2. 큰 변동이 있는 시장에서, 평행선이 생성되는 신호는 자주 발생할 수 있으며, 포지션을 유지하는 데에는 불리하다.

  3. 쌍평평선 자체는 지연성이 강하며, 짧은 선의 역전 기회를 놓칠 수 있다.

  4. 매개 변수 최적화에 주의를 기울이고, 적절한 평균선 주기를 설정해야 한다.

  5. 평행선 교차로에는 약간의 지연성이 있으며, 출입시간이 지연될 수 있다.

전략 최적화 방향

이 전략의 최적화 방향은 다음과 같습니다.

  1. 평균선 주기 변수를 최적화하여 다른 상황에 맞게 조정한다. 변수 리테스트 최적화를 할 수 있다.

  2. 다른 지표들을 필터링하여 진동상태에 갇히지 않도록 한다. MACD, KD 등에 추가하여 보조한다.

  3. 트렌드를 판단하는 지표에 가입하여 명확한 트렌드가 없을 때 자주 거래하는 것을 피하십시오. EMA와 같은 트렌드를 판단하는 지표를 테스트 할 수 있습니다.

  4. 거래량 지표를 추가하는 것도 고려할 수 있습니다.

  5. 손실을 막는 전략을 최적화하고, 큰 수준의 지원 지점 근처에서 손실을 막습니다.

요약하다

쌍평선 전략은 평선 교차 판단 트렌드에 기반한 간단한 짧은 선 전략이다. 장점은 아이디어가 간단하고 명확하며 작동하기 쉽다는 것이다. 단점은 변동 시장에 쉽게 잡히고 뒤떨어진다는 것이다. 우리는 매개 변수 최적화, 필터 지표 추가 등의 방법으로 전략을 최적화하여 복잡한 시장 환경에 더 잘 적응할 수 있다.

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

//@version=2
strategy("GetTrendStrategy timing", overlay=true)
tim=input('370')
 
//////////////////////////////////////////////////////////////////////
// Component Code Start
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(10, "Backtest Start Month")
testStartDay = input(25, "Backtest Start Day")
testStartHour = input(7, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2017, "Backtest Stop Year")
testStopMonth = input(10, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testStopHour = input(13, "Backtest stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStartHour,0)
 
testPeriod() => true
// Component Code Stop
//////////////////////////////////////////////////////////////////////
 
 
out1 = request.security(syminfo.tickerid, tim, open)
out2 = request.security(syminfo.tickerid, tim, close)
plot(out1,color=red)
plot(out2,color=green)
longCondition = crossover(request.security(syminfo.tickerid, tim, close),request.security(syminfo.tickerid, tim, open))
 
if testPeriod()
    if (longCondition)
        strategy.entry("long", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, tim, close),request.security(syminfo.tickerid, tim, open))
 
if testPeriod()
    if (shortCondition)
        strategy.entry("short", strategy.short)