압력 균형 높은 확률 브레이크아웃 트레이딩 전략


생성 날짜: 2023-11-13 11:40:53 마지막으로 수정됨: 2023-11-13 11:40:53
복사: 2 클릭수: 665
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

압력 균형 높은 확률 브레이크아웃 트레이딩 전략

개요

이 전략은 여러 지표의 조합을 사용하여 트렌드 방향과 거래 시기를 판단하여 압력 균형 방법을 사용하여 거래의 승률을 높인다. MACD, PSAR 및 EMA의 세 가지 지표를 사용하여 판단을 수행하고, 스톱 로즈와 결합하여 효율적인 수익을 얻습니다.

전략 원칙

  1. EMA를 이용하여 평균선을 계산하여 전체 트렌드 방향을 판단한다. EMA가 큰 값은 현재 상승 추세에 있으며, EMA가 작은 값은 현재 하락 추세에 있다.

  2. MACD를 사용하여 빠른 선과 느린 선의 차이를 계산합니다. 차이는 0보다 크면 현재 상승 추세에 있으며, 차이는 0보다 작으면 현재 하락 추세에 있습니다.

  3. PSAR을 사용하여 연속적인 변화점을 계산할 때, PSAR 값이 더 큰 것은 현재 하향 추세에 있고, PSAR 값이 더 작은 것은 현재 상승 추세에 있다.

  4. 위의 세 가지 지표가 결합되면 트렌드 일관성을 판단한다. 세 가지 지표 판단 결과가 일치하면 트렌드가 명확하게 나타납니다. 구매 또는 판매 작업을 수행 할 수 있습니다.

  5. 구매 및 판매 조건에 따라 포지션을 개설하고, 스톱 로스 스톱 포인트를 설정하고, 스톱 로스 또는 스톱 로스 조건이 달성되면 포지션을 청산하여 수익을 얻습니다.

  6. 구체적인 운영 규칙은 다음과 같습니다.

    • 구매 조건: 상승 추세에 속하지 않고 MACD 차이는 0 미만이며 마감 가격은 EMA 평균보다 높습니다.
    • 판매 조건: 상승 추세, MACD 차이는 0보다 크며, 마감 가격은 EMA 평균보다 낮다
    • 다음 PSAR 값에 도달하면
    • 정지 조건: 설정된 정지 비율에 도달

전략적 이점

  1. 여러 지표로 추세를 판단하여 판단의 정확도를 높여줍니다.

  2. 압력 균형 방식을 사용하여, 트렌드가 명확할 때 포지션을 열고, 수익을 얻을 확률을 높인다.

  3. 스톱로스 스톱포인트를 설정하여 손실을 제한하고 수익을 고정합니다.

  4. 거래 규칙이 명확한 시스템, 절차화된 거래에 적합하다.

  5. 다양한 품종과 거래주기를 조정할 수 있습니다.

전략적 위험

  1. 트렌드 판단에 오류가 있을 수 있으며, 이는 포지션 개시 방향의 오류로 이어진다.

  2. 시장의 급격한 변동으로 인해 지표가 잘못된 신호를 보낼 수 있습니다.

  3. 스톱포인트가 너무 커서 제 시간에 멈출 수 없습니다.

  4. 매개 변수가 잘못 설정되어 너무 자주 거래되거나 적시에 거래가 되지 않습니다.

  5. 거래 품종의 유동성이 부족하여 계획대로 손실을 막을 수 없습니다.

  6. 변수를 최적화하고, 스톱포드를 조정하고, 유동성이 좋은 거래 품종을 선택함으로써 위험을 줄일 수 있다.

전략 최적화 방향

  1. 동향 판단의 정확성을 최적화하기 위해 EMA 주기 변수를 조정한다.

  2. MACD 단선, 느린 선의 주기 변수를 조정하여 MACD 지표의 민감성을 최적화한다.

  3. 스탠드 스탠드 비율 변수를 조정하여 스탠드 스탠드의 최적의 균형을 얻습니다.

  4. 다른 보조 지표들을 추가하여 포지션 개시 시점 선택의 정확성을 향상시킵니다.

  5. 거래 품종 선택을 최적화하여 유동성이 좋고 변동성이 높은 품종을 선택하십시오.

  6. 거래 시기를 조정하여 다른 품종의 시장 특성에 맞게 조정하십시오.

요약하다

이 전략은 다양한 지표를 사용하여 트렌드를 판단하고, 트렌드가 명확할 때 포지션을 열고, 스톱로스를 설정하여 시장 움직임을 효과적으로 파악하고, 일정 수익을 보장하는 전제하에서 비교적 이상적인 수익을 얻을 수 있습니다. 매개 변수를 최적화하고 다른 보조 지표를 추가함으로써 전략의 안정성과 수익 수준을 더욱 향상시킬 수 있습니다. 이 전략의 거래 규칙은 명확하고 이해하기 쉽고, 프로그램 거래에 적합합니다.

전략 소스 코드
/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 1h
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/
// © exlux99

//@version=4
strategy(title = "Crypto Scalper", overlay = true,  pyramiding=1,initial_capital = 100, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.03)
len = input(60, minval=1, title="Length EMA")
src = input(close, title="Source")
out = ema(src, len)
//
fast_length = input(title="Fast Length MACD", type=input.integer, defval=12)
slow_length = input(title="Slow Length MACD", type=input.integer, defval=26)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Oscillator MA Type MACD", type=input.string, defval="EMA", options=["SMA", "EMA"])
sma_signal = input(title="Signal Line MA Type MACD", type=input.string, defval="EMA", options=["SMA", "EMA"])

// Calculating
fast_ma = sma_source == "SMA" ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source == "SMA" ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal


start = input(0.02)
increment = input(0.02)
maximum = input(0.2)
var bool uptrend = na
var float EP = na
var float SAR = na
var float AF = start
var float nextBarSAR = na
if bar_index > 0
	firstTrendBar = false
	SAR := nextBarSAR
	if bar_index == 1
		float prevSAR = na
		float prevEP = na
		lowPrev = low[1]
		highPrev = high[1]
		closeCur = close
		closePrev = close[1]
		if closeCur > closePrev
			uptrend := true
			EP := high
			prevSAR := lowPrev
			prevEP := high
		else
			uptrend := false
			EP := low
			prevSAR := highPrev
			prevEP := low
		firstTrendBar := true
		SAR := prevSAR + start * (prevEP - prevSAR)
	if uptrend
		if SAR > low
			firstTrendBar := true
			uptrend := false
			SAR := max(EP, high)
			EP := low
			AF := start
	else
		if SAR < high
			firstTrendBar := true
			uptrend := true
			SAR := min(EP, low)
			EP := high
			AF := start
	if not firstTrendBar
		if uptrend
			if high > EP
				EP := high
				AF := min(AF + increment, maximum)
		else
			if low < EP
				EP := low
				AF := min(AF + increment, maximum)
	if uptrend
		SAR := min(SAR, low[1])
		if bar_index > 1
			SAR := min(SAR, low[2])
	else
		SAR := max(SAR, high[1])
		if bar_index > 1
			SAR := max(SAR, high[2])
	nextBarSAR := SAR + AF * (EP - SAR)

tplong=input(0.245, step=0.005)
sllong=input(1.0, step=0.005)
tpshort=input(0.055, step=0.005)
slshort=input(0.03, step=0.005)

if (uptrend and hist >0 and close < out)
	strategy.entry("short", strategy.short, stop=nextBarSAR, comment="short")
	strategy.exit("short_tp/sl", "short", profit=close * tpshort / syminfo.mintick, loss=close * slshort / syminfo.mintick, comment='SHORT EXIT',  alert_message = 'closeshort')
if (not uptrend and hist <0 and close > out)
	strategy.entry("long", strategy.long, stop=nextBarSAR, comment="long")
	strategy.exit("short_tp/sl", "long", profit=close * tplong / syminfo.mintick, loss=close * sllong / syminfo.mintick, comment='LONG EXIT',  alert_message = 'closelong')