이 전략은 이중 흔들림 추적 역전 거래 전략으로, 무작위 지표 역전 전략과 특정 예켄 변동률 지표를 통합하여 더 신뢰할 수 있는 거래 신호를 얻는다. 이 전략은 트렌드 역점에서 이익을 잡기 위해 고안되었으며, 중장선 거래에 적용된다.
이 전략은 두 부분으로 구성되어 있습니다.
이 부분은 무작위 지표의 빠른 선과 느린 선을 사용하여 거래 신호를 생성한다. 종전 가격이 전날의 종전 가격보다 2 일 연속으로 낮아지고 빠른 선이 느린 선보다 높을 때 더 많이 한다. 종전 가격이 전날의 종전 가격보다 2 일 연속으로 높고 빠른 선이 느린 선보다 낮아지면 공백한다.
이 지표는 한 기간 동안 최고 가격과 최저 가격의 차이에 대한 변화를 계산한다. 이 차이는 확장되면 변동률이 증가하면 공백을 할 수 있으며, 차이는 줄어들면 변동률이 감소하면 더 많은 것을 할 수 있다.
최종 거래 신호는 두 부분의 신호의 합성이다. 무작위 지표 신호와 변동률 지표 신호가 일치하면 그 신호를 취한다. 두 신호가 일치하지 않으면 거래하지 않는다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
두 가지 다른 유형의 지표를 통합하여 신호의 정확도를 향상시킬 수 있습니다.
이중 확인 메커니즘을 적용하면 잘못된 신호를 줄이고 위험을 통제할 수 있습니다.
역전환을 주요 거래방향으로 삼아 트렌드 전환점에서 수익을 얻을 수 있다.
매개 변수 설정은 다양한 품종과 주기에 적합하도록 조정할 수 있습니다.
지표 파라미터를 미세하게 조정하여 최적의 상태를 얻을 수 있다.
이 전략에는 다음과 같은 위험도 있습니다.
반전 신호는 오판이 발생할 수 있으며, 이로 인해 손실이 발생한다. 오판 가능성을 줄이기 위해 파라미터를 적절히 조정할 수 있다.
변동률이 급격히 확대될 때, 사외이익 방향에 손실 위험이 있다. 위험을 제어하기 위해 손해 중지 설정을 할 수 있다.
상황이 급격히 변동할 때, 이중 지표 포트폴리오는 무효가 될 수 있다. 이 시점에서는 지표가 다시 안정될 때까지 거래를 중단하는 것을 고려할 수 있다.
동시에 두 지표를 모니터링해야하는 것은 거래자의 작업량을 증가시킵니다. 자동 거래 프로그램을 작성하여 작업량을 줄일 수 있습니다.
이 전략은 다음과 같은 측면에서 최적화될 수 있습니다.
더 많은 변수 조합을 테스트하여 최적의 변수를 찾습니다.
수량 가격 지표와 같은 다른 확인 지표를 추가하여 다중 확인을 형성한다.
무작위 손실, 간격 손실과 같은 손실 제도를 추가하여 위험을 더욱 제어하십시오.
고정 지분, 켈리 등과 같은 자금 관리 전략을 최적화하여 수익성을 높인다.
다양한 품종과 주기 파라미터의 설정이 다르기 때문에, 더 많은 품종과 주기들의 적합성을 테스트할 수 있다.
이 전략은 종합적으로 이중 지표를 사용하여 거래 신호를 형성하여 시장의 반전을 주요 거래 방향으로 포착한다. 신호 정확도가 높고 위험 관리가 잘 된 장점이 있으며 개선 할 수있는 여지가 있습니다. 변수 최적화, 중지 손실 및 자금 관리 등의 개선으로이 전략을 최적화하여 강력한 중장선 반전 거래 전략으로 만들 수 있습니다.
/*backtest
start: 2023-09-10 00:00:00
end: 2023-10-10 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 29/07/2019
// 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
// Chaikin's Volatility indicator compares the spread between a security's
// high and low prices. It quantifies volatility as a widening of the range
// between the high and the low price.
// You can use in the xPrice1 and xPrice2 any series: Open, High, Low, Close, HL2,
// HLC3, OHLC4 and ect...
//
// 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
ChaikinVolatility(Length, ROCLength, Trigger) =>
pos = 0
xPrice1 = high
xPrice2 = low
xPrice = xPrice1 - xPrice2
xROC_EMA = roc(ema(xPrice, Length), ROCLength)
pos := iff(xROC_EMA < Trigger, 1,
iff(xROC_EMA > Trigger, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & Chaikin Volatility", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthCV = input(10, minval=1)
ROCLength = input(12, minval=1)
Trigger = input(0, minval=0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posChaikinVolatility = ChaikinVolatility(LengthCV, ROCLength, Trigger)
pos = iff(posReversal123 == 1 and posChaikinVolatility == 1 , 1,
iff(posReversal123 == -1 and posChaikinVolatility == -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 )