스토카스틱스 크로스오버 거래 전략

저자:차오장, 날짜: 2023-09-20 17:05:17
태그:

전반적인 설명

이 전략은 K선과 D선 사이의 스토카스틱 크로스오버를 사용하여 전형적인 스토카스틱 트레이딩 전략인 트레이딩 신호를 생성합니다.

전략 논리

  1. 정해진 기간 동안 스토카스틱 K와 D 선을 계산합니다.

  2. D선 위의 K선 교차는 구매 신호를 생성합니다.

  3. D선 아래의 K선 교차는 판매 신호를 생성합니다.

  4. 역 테스트 날짜 범위를 설정하여 전략의 효과를 테스트할 수 있습니다

  5. 단순하고 명확한 규칙 거래 스토카스틱 크로스오버

장점

  1. 과잉 구매 및 과잉 판매 수준에 민감한 스토카스틱스

  2. K선과 D선은 쉬운 거래 신호를 형성합니다.

  3. 백테스트는 전략 수행을 확인합니다.

  4. 스토카스틱은 계산하고 구현하기 쉽습니다.

  5. 더 발전하기 쉬운 간결한 코드.

위험성

  1. 크로스오버는 잘못된 신호를 생성할 수 있습니다.

  2. 손해를 멈추거나 이익을 취하지 않습니다.

  3. 추세와 범위를 구분하지 못합니다.

  4. 백테스트는 미래지향적인 편견을 가지고 있습니다.

  5. 실제 거래 성과는 백테스트와 다를 수 있습니다.

강화

  1. 최적값을 찾기 위한 테스트 매개 변수

  2. 추가 검증을 위해 트렌드 필터를 추가합니다.

  3. 스톱 로스 및 수익 메커니즘을 구축합니다.

  4. 신호 확인을 위한 다른 요소를 포함합니다.

  5. 편견을 제거하기 위해 백테스트 데이터를 처리합니다.

  6. 종이 거래는 실시간 거래의 매개 변수를 최적화합니다.

결론

이 전략은 간단한 스토카스틱 크로스오버를 거래하지만 안정성을 위해 정교화가 필요합니다. 매개 변수 조정, 위험 통제 등을 통해 개선하면 강력한 양 거래 시스템으로 전환 될 수 있습니다.


/*backtest
start: 2023-08-20 00:00:00
end: 2023-09-19 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © utanico

//@version=4
strategy(title="Stochastic", overlay=true, shorttitle="Stoch")
periodK = input(35, title="K", minval=1)
periodD = input(21, title="D", minval=1)
smoothK = input(21, title="Smooth", minval=1)
startYear = input(type=input.integer, title = "開始年", defval = 2020)
startMonth = input(type=input.integer, title = "開始月", defval = 1)
startDay = input(type=input.integer, title = "開始日", defval = 1)
endYear = input(type=input.integer, title = "終了年", defval = 2030)
endMonth = input(type=input.integer, title = "終了月", defval = 12)
endDay = input(type=input.integer, title = "終了日", defval = 31)

//開始日時
test_start = timestamp(startYear, startMonth, startDay, 00, 00)
//終了日時
test_end   = timestamp(endYear, endMonth, endDay, 00, 00)
//テスト期間の指定
is_test = true

k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)

if (is_test)
    if (k > d)
        strategy.entry("Stoch_LE", strategy.long, comment="Stoch_LE")
    //if (strategy.opentrades > 0 and k < d)
        //strategy.close("Stoch_LE",comment="CloseLONG")
    if (k < d)
        strategy.entry("Stoch_SE", strategy.short, comment="Stoch_SE")
    //if (strategy.opentrades < 0 and k > d)
        //strategy.close("Stoch_SE",comment="CloseShort")

더 많은