리소스 로딩... 로딩...

123 역전 이동 평균 펀드 전략

저자:차오장, 날짜: 2023-10-20 16:05:43
태그:

img

전반적인 설명

123 리버서블 이동 평균 봉투 전략은 123 리버서블 이동 평균 봉투 기술과 이동 평균 봉투 지표를 결합한 정량적 거래 전략이다. 이는 반전을 사용하여 시장 전환 기회를 잡고 이동 평균 봉투와 트렌드 방향을 결정하여 안정적인 이익을 달성하는 장점을 통합합니다.

전략 논리

이 전략은 두 부분으로 구성됩니다.

첫 번째 부분은 123 역전 전략이다. 그것의 거래 신호는 KDJ 오시레이터에서 온다. 구체적으로, 닫기 가격이 2 일 연속 상거래 하루 동안 이전 닫기보다 낮고, 9 일 느린 K 라인이 50 이하라면 구매 신호가 생성됩니다. 닫기 가격이 2 일 연속 상거래 하루 동안 이전 닫기보다 높고, 9 일 빠른 K 라인이 50 이상이라면 판매 신호가 생성됩니다.

두 번째 부분은 이동 평균 봉투 전략이다. 트렌드를 결정하기 위해 이동 평균과 이동 평균 위의 봉투 라인을 사용합니다. 구체적으로, 닫기 가격이 상단보다 높으면 구매 신호가 생성됩니다. 닫기 가격이 하단보다 낮으면 판매 신호가 생성됩니다.

이 전략은 위의 두 가지 유형의 거래 신호를 결합합니다. 123 회전과 이동 평균 봉투가 모두 구매 신호를 제공 할 때만 긴 포지션을 열고, 둘 다 판매 신호를 제공 할 때만 짧은 포지션을 열 것입니다. 이것은 일부 유효하지 않은 신호를 필터링하고 수익성을 향상시키는 동시에 거래 빈도를 줄입니다.

이점 분석

  • 수익성을 높이기 위해 역전과 트렌드를 결합합니다.

    123 역전 전략은 주요 지지 및 저항 수준 근처에서 역전 기회를 잡는 데 탁월합니다. 이동 평균 봉투 전략은 트렌드 방향을 정확하게 결정합니다. 둘 다 사용하면 높은 확률의 가격 수준에서 역전을 잡는 확률을 향상시킵니다.

  • 이중 필터는 거래 빈도를 줄입니다.

    거래는 두 지표가 신호를 제공 할 때만 수행됩니다. 이것은 단일 지표의 과도한 유효하지 않은 신호의 간섭을 피하고 따라서 거래 빈도와 비용을 줄입니다.

  • 사용자 정의 가능한 매개 변수는 유연성을 제공합니다

    조정 가능한 매개 변수는 사용자가 더 나은 적응력을 위해 시장 조건과 개인적인 선호도에 맞게 전략을 조정 할 수 있습니다.

  • 일방적 거래는 운영을 단순화

    이 전략은 거꾸로 움직이지 않고 길거나 짧게만 움직입니다. 이것은 논리를 단순화하고 을 당할 위험을 줄여줍니다.

위험 분석

  • 역행은 지속되는 추세로 투쟁합니다

    이 전략은 주로 수익을 위한 반전에 의존합니다. 긴 트렌드 기간 동안 지속적인 손실을 초래할 수 있습니다.

  • 매개 변수 최적화는 어렵죠

    여러 개의 조정 가능한 매개 변수는 최적화 문제를 야기합니다. 잘못된 매개 변수 조합은 성능을 저하시킬 수 있습니다.

  • 높은 매출은 무역 위험을 증가시킵니다

    빈번한 위치 변경은 작은 수익을 확보 할 수 있지만 과잉 거래로 인한 비용과 위험을 증가시킵니다.

  • 마감 제한이 없습니다

    스톱 손실이 없다는 것은 최대 마감에 제한이 없다는 것을 의미합니다. 블랙 스완 이벤트는 심각한 손실을 일으킬 수 있습니다.

최적화 방향

  • 스톱 손실을 추가합니다

    유출을 제한하기 위해 이동 또는 후속 스톱 손실을 구현하십시오. 비정상적인 시장 움직임 중에 일찍 중단하면 자본을 보호합니다.

  • 매개 변수를 최적화

    역 테스트 및 앞으로 테스트 더 높은 안정성을위한 최적의 매개 변수를 찾기 위해. 향상된 적응력을 위해 동적 최적화를 고려하십시오.

  • 신호 필터를 추가합니다

    MACD와 볼링거 밴드 같은 필터를 추가하면 신호를 검증하고 품질을 더욱 향상시킬 수 있으며 원치 않는 거래를 줄일 수 있습니다.

  • 거래 빈도를 줄이세요

    반전 조건의 완화와 이동평균 설정의 조정으로 매출이 낮아지면 비용과 위험을 줄일 수 있습니다.

결론

123 리버서스 이동 평균 앙벨로프 전략은 리버서스 거래와 트렌드 추수의 장점을 결합하여 안정적인 위험 조정된 오버 퍼포먼스를 제공합니다. 추가 최적화는 더 나은 결과를위한 매개 변수 견고성을 향상시킬 수 있습니다. 여러 신호 유형의 효과적인 합성은 트렌드와 범위에 적합하며 양자 거래자가 연구하고 구현하는 데 유용합니다.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 22/03/2021
// This is combo strategies for get a cumulative signal. 
//
// 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.
//
// Second strategy
// Moving Average Envelopes are percentage-based envelopes set above and 
// below a moving average. The moving average, which forms the base for 
// this indicator, can be a simple or exponential moving average. Each 
// envelope is then set the same percentage above or below the moving average. 
// This creates parallel bands that follow price action. With a moving average 
// as the base, Moving Average Envelopes can be used as a trend following indicator. 
// However, this indicator is not limited to just trend following. The envelopes 
// can also be used to identify overbought and oversold levels when the trend is 
// relatively flat. 
//
// 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


MAE(Length,PercentShift) =>
    pos = 0.0
    xSMA = sma(close, Length)
    xHighBand = xSMA + (xSMA * PercentShift / 100)
    xLowBand = xSMA - (xSMA * PercentShift / 100)
    pos := iff(close > xHighBand, 1,
             iff(close <xLowBand, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Moving Average Envelopes", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- MA Envelope ----")
LengthMA = input(18, minval=1)
PercentShift = input(0.2, minval = 0.01, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMAE = MAE(LengthMA,PercentShift)
pos = iff(posReversal123 == 1 and posMAE == 1 , 1,
	   iff(posReversal123 == -1 and posMAE == -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 )

더 많은