
이 거래 전략은 평행선 반전과 3일 최저 플래시 두 가지 기술 지표의 장점을 최대한 활용하여 조합하여 추세를 추적하는 동시에 반전 기회를 잡을 수 있으며, 일부 가짜 돌파 신호를 필터링하여 거래 시스템의 승률을 효과적으로 향상시킬 수 있습니다.
이 전략은 두 부분으로 구성되어 있습니다.
2일 평균선과 20일 평균선의 조합. 2일 평균선과 20일 평균선에서 이탈할 때, 매매 신호가 발생한다.
3일 최저 플래시 형태. 이 형태가 나타나는 것은 단기 반전의 신호이다. 형성되는 조건은: 중간 하루 최저, 전날과 다음 날보다 낮고, 다음 날 종결 가격은 전날 최고 가격보다 높다.
2일 평균선과 20일 평균선이 동시에 반전 신호를 표시하고, 3일 최저 플래시 형태의 신호 방향과 일치할 때, 구매 또는 판매 작업을 수행한다.
코드는 먼저 2일 평균선과 20일 평균선을 계산한다. 2일 평균선 위를 통과하거나 20일 평균선을 통과하면 구매/판매 신호가 발생한다.
다음으로 3일 최저 플래시 모형을 감지할 때 모형 방향 신호를 1 또는 -1으로 설정한다. 전날의 모형 신호를 읽고, 현재 평행선 신호와 조합하여 최종 출입 신호를 생성한다.
따라서, 평행선과 형태의 조합을 통해 필터링하면, 가짜 신호를 필터링할 수 있고, 거래 전략은 더욱 신뢰할 수 있다.
여러 기술 지표를 조합하여 상호 보완 및 검증의 역할을 수행하여 신호의 신뢰성을 향상시킬 수 있습니다.
평균선 반전은 트렌드 반전 지점을 적시에 포착하여 반전의 기회를 활용할 수 있다. 3일 최저 플래시가 반전이 형성되었다는 것을 추가적으로 확인할 수 있다.
20일 평균선은 중장기 트렌드를 추적하고, 2일 평균선은 단기 조정 후의 입시 시점을 잡기 위해 사용된다. 여러 시간 범위를 조합하면 트렌드를 전체적으로 파악할 수 있다.
이 전략은 파라미터에 민감하지 않고, 구현 및 최적화하기 쉽다.
반전 형태는 잘못된 판단을 유발할 수 있으며, 신뢰성을 판단하기 위해 경험의 축적이 필요합니다.
역전 신호는 지연될 수 있으며, 형태 특징을 관찰하고, 적절히 위치 유지 조정할 필요가 있다.
거래 품종에 대한 테스트 최적화가 필요하며, 일부 품종의 매개 변수 설정은 조정해야 할 수 있습니다.
철수 통제는 중요한 전환점을 놓치지 않기 위해 스톱로스 메커니즘을 도입해야 합니다.
다양한均線 조합을 테스트하고, 품종에 가장 적합한均線 파라미터를 선택한다.
다른 보조 지표들을 도입하여 다중 지표 검증을 실시한다.
리트랙과 리스크를 제어하기 위해 스톱 손실 모듈이 추가되었습니다.
입학 시점을 최적화하여 너무 이른 또는 너무 늦은 문제를 피하십시오.
특정 품종을 위한 파라미터 최적화, 적응력을 높이기.
이 전략은 평행선 반전과 단기 형태의 장점을 최대한 활용하여 두 가지의 효과적인 조합을 구현하여 거래 시스템의 안정성과 승률을 높일 수 있습니다. 그러나 위험 관리에 주의를 기울이고 다양한 품종의 특성에 맞게 변수를 테스트하고 최적화해야합니다.
/*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=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 25/12/2021
// This is combo strategies for get a cumulative signal.
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// Second strategy
// This startegy based on 3-day pattern reversal described in "Are Three-Bar
// Patterns Reliable For Stocks" article by Thomas Bulkowski, presented in
// January,2000 issue of Stocks&Commodities magazine.
// That pattern conforms to the following rules:
// - It uses daily prices, not intraday or weekly prices;
// - The middle day of the three-day pattern has the lowest low of the three days, with no ties allowed;
// - The last day must have a close above the prior day's high, with no ties allowed;
// - Each day must have a nonzero trading range.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
EMA20(Length ) =>
pos = 0.0
xPrice = close
xXA = ema(xPrice, Length)
nHH = max(high, high[1])
nLL = min(low, low[1])
nXS = iff((nLL > xXA)or(nHH < xXA), nLL, nHH)
pos := iff(nXS > close[1] , -1, iff(nXS < close[1] , 1, nz(pos[1], 0)))
pos
BarR()=>
pos = 0.0
pos := iff(open[2] > close[2] and high[1] < high[2] and low[1] < low[2] and low[0] > low[1] and high[0] > high[1], 1,
iff(open[2] < close[2] and high[1] > high[2] and low[1] > low[2] and high[0] < high[1] and low[0] < low[1], -1, nz(pos[1], 0)))
pos
strategy(title="Combo 2/20 EMA & 3 Day Pattern", shorttitle="Combo", overlay = true)
var I1 = "●═════ 2/20 EMA ═════●"
Length = input(14, minval=1, group = I1)
//var I2 = "●═════ 3-Bar-Reversal-Pattern ═════●"
var misc = "●═════ MISC ═════●"
reverse = input(false, title="Trade reverse", group = misc)
var timePeriodHeader = "●═════ Time Start ═════●"
d = input(1, title="From Day", minval=1, maxval=31, group=timePeriodHeader)
m = input(1, title="From Month", minval=1, maxval=12, group=timePeriodHeader)
y = input(2005, title="From Year", minval=0, group=timePeriodHeader)
StartTrade = true
prePos3Bar = BarR()
posEMA20 = EMA20(Length)
pos3BarR = security(syminfo.tickerid, "D", prePos3Bar[1], barmerge.gaps_off, barmerge.lookahead_on)
pos = iff(posEMA20 == 1 and pos3BarR == 1 and StartTrade , 1,
iff(posEMA20 == -1 and pos3BarR == -1 and StartTrade, -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 )