이중 이동 평균 역전 및 ATR 트레일링 스톱의 조합 전략

저자:차오장, 날짜: 2024-01-26 11:26:40
태그:

img

전반적인 설명

이중 이동 평균 역전 및 ATR 트레일 스톱의 조합 전략은 매우 실용적인 양적 거래 전략입니다. 이 전략은 먼저 시장 트렌드와 역전 지점을 결정하기 위해 이중 이동 평균에서 형성된 죽음의 십자가와 황금 십자가를 사용합니다. 동시에 전략은 또한 평균 진정한 범위를 결합하여 리스크를 제어하면서 이익을 보장하기 위해 트레일 스톱을 설정합니다.

전략 원칙

이중 이동 평균 역전 전략

이중 이동 평균 역전 전략은 시장 추세를 결정하기 위해 빠르고 느린 라인의 교차를 사용합니다. 빠른 라인이 느린 라인의 아래에서 위에서 아래로 넘을 때, 시장 추세가 상승에서 하락으로 변화하고 있음을 나타내는 죽음의 십자가를 형성합니다. 빠른 라인이 아래에서 위로 느린 라인의 위에 넘을 때, 시장 추세가 하락에서 상승으로 변화하고 있음을 나타내는 황금 십자가를 형성합니다. 전략은 죽음의 십자가에 짧고 황금 십자가에 길게 간다.

특히, 전략은 9일 STOCH 빠른 라인을 빠른 라인으로, 3일 EMA를 느린 라인으로 사용합니다. 클로즈는 이전 클로즈보다 낮고 빠른 라인이 50을 넘어서서 느린 라인을 넘어서면 포지션을 마감합니다. 클로즈는 이전 클로즈보다 높고 빠른 라인이 50을 넘어서서 느린 라인을 넘어서면 포지션을 마감합니다.

ATR 후속 정지 전략

ATR 트레일링 스톱 전략은 평균 진정한 범위를 사용하여 스톱 손실 포인트를 설정합니다. ATR 지표는 시장의 단기 변동성을 효과적으로 반영 할 수 있습니다. 전략은 가격 트렌드가 역전되면 ATR의 값을 기반으로 트레일 스톱을 설정합니다.

구체적으로, 전략은 5 일 ATR를 사용하고 마이너스 3.5 배 ATR에 Stop Loss 포인트를 설정합니다. 가격이 Stop Loss 포인트에 도달하면 Stop Loss 포지션을 닫습니다.

이점 분석

이중 이동 평균 역전 및 ATR 후속 정지 전략의 조합 전략은 트렌드 및 역전 결정에서 이동 평균 전략의 장점과 위험 통제에서 ATR 후속 정지 전략의 장점을 결합하여 매우 실용적인 전략입니다.

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

  1. 두 개의 이동 평균으로 형성된 죽음의 십자가와 황금 십자가를 사용하여 시장 트렌드 반전 지점을 결정하고 반전 신호를 정확하게 식별하십시오.

  2. 역전 신호를 확인하고 거짓 신호를 피하기 위해 STOCH 표시기를 조합합니다.

  3. ATR 트레일링 스톱은 유연하게 시장 변동성에 따라 스톱 로스 포인트를 설정하여 수익 잠금을 극대화합니다.

  4. 이 전략은 여러 지표와 기술 분석 방법을 통합하여 전략을 더욱 견고하게 합니다.

  5. 전략 아이디어는 명확하고 이해하기 쉽고, 매개 변수는 조정에 유연하며, 라이브 거래에서 작동하기가 쉽습니다.

위험 분석

이 전략은 많은 장점을 가지고 있지만, 여전히 몇 가지 위험을 고려해야 합니다.

  1. 이중 이동 평균에 의해 생성되는 신호는 뒤떨어지고 역전 지점에서 정확하게 구매 및 판매 할 수 없습니다. 기간은 적당히 단축되거나 최적화를 위해 다른 지표와 결합 될 수 있습니다.

  2. ATR 지표는 큰 시장 변동에 민감하지 않으며 시간적으로 스톱 로스를 업데이트 할 수 없습니다. 조정을 위해 모멘텀 지표 또는 변동성 지표를 결합하는 것을 고려하십시오.

  3. 여러 매개 변수와 조건의 조합은 전략의 복잡성을 증가시킵니다. 부적절한 매개 변수는 과도하게 공격적인 거래를 유발하고 위험을 증가시킬 수 있습니다. 매개 변수는 신중하게 평가하고 점진적으로 조정해야합니다.

최적화 방향

위의 위험 분석에 따르면, 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 이동 평균 기간 매개 변수를 조정하여 회전 기회를 조기에 파악하기 위한 기간을 단축합니다.

  2. MACD, KD 등과 같은 반전 신호를 결정하기 위해 다른 지표를 추가하여 여러 가지 확인을 형성합니다.

  3. 동적으로 ATR 기간을 조정하거나 실시간으로 스톱 로스를 업데이트하기 위해 시장 변동성을 도입합니다.

  4. 주식 시장과 선물 시장의 차이점을 평가하고 양 시장에 더 적합하도록 매개 변수를 조정합니다.

  5. 트레이딩 비용과 백테스팅에서 미끄러짐을 추가하여 전략을 실시간 거래 환경에 더 가깝게 만듭니다.

  6. 여러 매개 변수를 동적으로 최적화하기 위해 기계 학습 모델을 추가하는 것을 고려하십시오.

요약

이중 이동 평균 역전 및 ATR 트레일링 스톱의 조합 전략은 효율적이고 실용적인 양적 전략입니다. 이동 평균과 시장 역전 결정과 ATR 트레일 스톱을 설정하여 위험을 제어하는 이중 장점을 결합합니다. 불필요한 손실을 줄이는 동시에 이익을 보장합니다. 전략은 유연한 매개 변수 조정을 가지고 있으며 라이브 거래에서 쉽게 작동합니다. 동시에 더 광범위한 시장 환경에 적응하기 위해 여러 측면에서 확장 및 최적화 할 수 있습니다. 전반적으로 전략은 양적 거래에 대한 우수한 전략적 틀을 제공합니다.


/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 17/05/2019
// This is combo strategies for get 
// a cumulative signal. Result signal will return 1 if two strategies 
// is long, -1 if all strategies is short and 0 if signals of strategies is not equal.
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Secon strategy
// Average True Range Trailing Stops Strategy, by Sylvain Vervoort 
// The related article is copyrighted material from Stocks & Commodities Jun 2009 
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos


ATR_TrailingStop(nATRPeriod, nATRMultip) =>
    xATR = atr(nATRPeriod)
    nLoss = nATRMultip * xATR
    pos = 0.0
    xATRTrailingStop = 0.0
    xATRTrailingStop := iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss),
                         iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss), 
                           iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))
    pos := iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
    	     iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 

    pos

strategy(title="Combo Backtest 123 Reversal & Average True Range Trailing Stops", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
nATRPeriod = input(5)
nATRMultip = input(3.5)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posATR_TrailingStop = ATR_TrailingStop(nATRPeriod, nATRMultip)
pos = iff(posReversal123 == 1 and posATR_TrailingStop == 1 , 1,
	   iff(posReversal123 == -1 and posATR_TrailingStop == -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 ? red: possig == 1 ? green : blue ) 

더 많은