다중 지표 조합 거래 전략


생성 날짜: 2023-10-26 15:22:28 마지막으로 수정됨: 2023-10-26 15:22:28
복사: 0 클릭수: 693
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

다중 지표 조합 거래 전략

개요

이 전략은 CCI, ADX, AO 세 가지 지표를 조합하여 공평한 판단과 거래 신호를 생성합니다. 그 중 CCI는 시장이 과매매되어 있는지 판단하는 데 사용됩니다. ADX는 트렌드 방향을 판단하는 데 사용됩니다. AO는 흔들리는 시장을 결정하는 데 도움이됩니다.

전략 원칙

  1. CCI 지표는 시장이 과매매되고 있는지 판단하는 데 사용됩니다. CCI가 100 미만으로 과매매되고 100 미만으로 과매매됩니다. CCI가 0 미만으로 과매매하는 전략입니다.

  2. ADX 지표는 트렌드 강도를 판단한다. DI+는 상승 트렌드 강도를 나타내고, DI-는 하락 트렌드 강도를 나타낸다. ADX는 평균 트렌드 강도를 나타낸다. 이 전략은 DI+가 25보다 낮으면 더 많이 한다.

  3. AO 지표는 다공동력을 판단한다. AO는 빠른 SMA를 빼고 느린 SMA로 구성된다. AO의 상승은 현재 다공동력의 증가를, AO의 하락은 공중력의 증가를 의미한다. 이 전략은 AO가 0보다 낮으면 더한다.

  4. 위의 여러 지표를 통합하여 거래 전략은: CCI < 0과 DI+ < 25과 AO < 0일 때 더 많이; DI+ > 25일 때 평지.

  5. 동적으로 계산하는 주문 수를 계정 권리 이익으로 나누고, 클로즈 가격과 하락으로 정리하여, 계정 권리 이익 변화에 따라 조정하는 주문 수를 실현한다.

  6. strategy.entry를 사용하여 다중 신호를 발송하고, strategy.close를 사용하여 평점 신호를 발송한다.

우위 분석

  1. CCI를 사용하여 과매매 상황을 판단하여 위기 상황으로 인한 가짜 신호를 효과적으로 필터링 할 수 있습니다.

  2. ADX 지표는 트렌드의 존재와 강도를 판단하여 강력한 트렌드 신호를 포착할 수 있다.

  3. AO 지표는 트렌드의 열기와 동력을 판단하고, 불안정한 상황에서 거래하는 것을 피하는 데 도움이 됩니다.

  4. 다중 지표 조합은 신호를 상호 검증하여 신호의 신뢰성을 강화하고, 가짜 신호를 효과적으로 줄일 수 있다.

  5. 동적으로 계산된 주문 수를 통해 계정의 권익변동에 따라 포지션 규모를 조정할 수 있으며, 자금 관리에 대한 인식이 강하다.

  6. 전략 논리는 명확하고 간단하며, 이해하기 쉽고 추적할 수 있습니다.

위험 분석

  1. CCI 지표는 vsdk의 진동상태를 인식하는 능력이 약하여 잘못된 신호를 생성할 수 있다.

  2. ADX 지표는 추세 전환점을 놓칠 수 있습니다.

  3. AO 지표는 구부러진 평정에 대한 판단 효과가 좋지 않다.

  4. 다중 지표 조합은 신호 신뢰도를 높일 수 있지만, 지표 설정이 잘못되면 과도한 필터링으로 인해 잘못된 거래 기회가 발생할 수 있습니다.

  5. DYNAMICAOR는 시장의 변동성과 관련이 있으며, 다양한 품종과 시장 환경에 따라 매개 변수를 조정해야 한다.

  6. 전략적 인 인출은 더 커질 수 있으며, 위험을 통제하기 위해 엄격한 자금 관리가 필요합니다.

최적화 방향

  1. CCI 파라미터를 최적화하여 다양한 시장의 과매매 영역을 식별한다.

  2. 다양한 품종과 시장 환경에서의 트렌드 전환을 포착하기 위해 ADX 파라미터를 최적화하십시오.

  3. 다양한 변동 환경의 실제 트렌드를 인식하기 위해 AO 파라미터를 조정한다.

  4. 다양한 지표 중량 조합을 테스트하여 최적의 변수를 찾습니다.

  5. 탈퇴를 통제하기 위한 손실을 막는 전략을 추가한다.

  6. 거래량 지표와 결합하여 가짜 돌파구를 피하십시오.

  7. 다양한 품종 특성에 따라 고정 포지션을 조정한다.

요약하다

이 전략은 CCI, ADX 및 AO의 세 가지 지표의 조합을 통해 비교적 신뢰할 수있는 다중 신호를 형성한다. 동시에 동적으로 계산 된 주문 수와 포지션 관리를 결합하여 위험을 효과적으로 제어 할 수 있다. 전략 아이디어는 간단하고 명확하고 이해하기 쉽고 초보자 추적 학습에 적합하다. 그러나 이 전략은 충격적 인 행동을 인식하는 능력이 약하고 최적화 할 수있는 여지가 많으며 다양한 품종과 시장 환경에 맞게 추가 테스트 조정이 필요합니다.

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

//@version=3
strategy("Strategy Niel", shorttitle="Strategy Niel", max_bars_back=2000, initial_capital=1000)

//Input variables
buywhenadxabove = input(25)
buywhendiplusbelow = input(10)
buywhenccibelow = input(0)
buywhenawesomeoscillatorbelow = input(0)
sellwhendiplusabove = input(25)

//CCI script
numberofbarsforcci = input(20)
CCI = cci(close,numberofbarsforcci)

//+DI and ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
	up = change(high)
	down = -change(low)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
	minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
	[plus, minus]

adx(dilen, adxlen) => 
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
	[adx, plus, minus]

[sig, up, down] = adx(dilen, adxlen)

//plot(sig, color=red, title="ADX")
//plot(up, color=blue, title="+DI")
//plot(down, color=orange, title="-DI")


//Awesome Oscillator
nLengthSlow = input(34, minval=1, title="Length Slow")
nLengthFast = input(5, minval=1, title="Length Fast")
xSMA1_hl2 = sma(hl2, nLengthFast)
xSMA2_hl2 = sma(hl2, nLengthSlow)
xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
cClr = xSMA1_SMA2 > xSMA1_SMA2[1] ? blue : red
//plot(xSMA1_SMA2, style=histogram, linewidth=1, color=cClr)

buy = sig > buywhenadxabove and up < buywhendiplusbelow  and CCI < buywhenccibelow and xSMA1_SMA2 < buywhenawesomeoscillatorbelow 

ordersize=floor(strategy.equity/close) // Floor returns largest integer, strategy.equity gives total equity remaining - allows to dynamically calculate the order size as the account equity increases or decreases.
strategy.entry("long",strategy.long,ordersize,when= buy) //strategy.entry let's you enter the market variables id ("long"), strategy.long (long position entry), size of the order and when the order should happen
bought = strategy.position_size[0] > strategy.position_size[1]
entry_price = valuewhen(bought, open, 0)
sell = up > sellwhendiplusabove 
strategy.close("long", when=sell ) //strategy.close let's you close your position with variables id ('long') and when this should happen