
이 전략은 이동 평균 지표, 측정 가격 지표, 그리고 충격 지표와 결합하여 트리플 필터링을 형성하여 중단계 트렌드를 포착하여 트렌드 상황에서 더 나은 수익을 얻을 수 있습니다.
이 전략은 크게 세 부분으로 구성됩니다.
20일 지수 이동 평균과 60일 지수 이동 평균을 사용하여 트렌드 필터를 구축한다. 단기 이동 평균 위에 장기 이동 평균을 가로질러 구매 신호가 형성되고, 단기 이동 평균 아래에 장기 이동 평균을 가로질러 판매 신호가 형성된다.
거래량을 거래량으로 계산한 양값 지표를 사용하여 자금 흐름을 판단한다. 양값의 상승은 자금의 순 유입을 나타내고, 양값의 감소는 자금의 순 유출을 나타낸다. 양값 지표의 공백 변환은 추세 전환의 신호로 사용될 수 있다.
20일 Donchian Channel Width를 사용하여 브린밴드 파라미터를 계산하여 상하 궤도를 형성한다. 가격이 상하 궤도에 가까워지면 회귀 압력이 발생할 수 있음을 나타냅니다. 가격이 하하 궤도에 가까워지면 지지부진이 일어날 수 있음을 나타냅니다.
이 세 부분을 통합하여, 캡처 중 단선 트렌드를 구축하는 다공간 전략. 단기 이동 평균에 장기 이동 평균을 통과하고, 수량 가격 지표가 상승 추세에있을 때, 가격이 브린 대역을 벗어난 직후, 구매 신호가 형성됩니다. 단기 이동 평균 아래에서 장기 이동 평균을 통과하고, 수량 가격 지표는 하향 추세에있을 때, 가격이 브린 대역을 벗어난 직후, 판매 신호가 형성됩니다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
세 가지 지표 필터링으로 가짜 침입을 효과적으로 방지할 수 있습니다.
트렌드, 자본의 흐름, 과매매, 과매매를 고려하면 신호가 더 신뢰할 수 있습니다.
지표 매개 변수는 최적화되어 다른 주기 및 품종에 적용된다.
이윤은 안정적이면서 인출은 통제할 수 있습니다.
논리는 명확하고 이해하기 쉽고, 파라미터를 조정하는 것은 유연하다.
이 전략에는 몇 가지 위험도 있습니다.
트렌드 변동의 위험. 시장의 트렌드가 변할 때, 스톱로스가 발생할 수 있다.
양 가격 지표의 지연성. 양 가격 지표의 지연으로 가격 변화가 발생하여 구매점과 판매점을 놓칠 수 있다.
매개 변수 조정 난이도. 다른 품종과 주기에는 매개 변수 조정이 필요하며, 그렇지 않으면 효과가 좋지 않을 수 있다.
회수 제도는 개선될 수 있다. 회수 제도는 동적 상쇄 또는 포지션 관리로 더욱 최적화될 수 있다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
손해 중지 전략을 추가하고, 이동 손해 중지, 추적 손해 중지 등으로 회수 통제를 추가합니다.
포지션 관리 모듈을 추가하여 시장의 변동성에 따라 포지션 크기를 조정합니다.
지표 매개 변수를 최적화하여 다양한 품종 주기에서 최적의 매개 변수 조합을 찾습니다.
기계 학습 모델 보조 판단을 증가시키고, 신호의 정확도를 향상시킵니다.
감정 지표, 뉴스 면 등과 결합하여 갑작스러운 사건에 대한 판단을 향상시킵니다.
이 전략은 이동 평균, 수량 지표 및 브린 띠 지표를 통합하여 중·단선에서 트렌드 상황을 포착하는 데 더 좋은 성능을 발휘한다. 더 나은 전략 효과를 얻을 수 있는 방법은 스톱 로즈, 포지션 관리 및 파라미터 선택 등의 측면을 추가로 최적화하는 것이다. 이 전략의 논리는 명확하고 이해하기 쉽고, 다른 요구에 따라 지표 및 파라미터를 조정할 수 있으며, 매우 유연하다.
/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 29/04/2019
// This is combo strategies for get
// a cumulative signal. Result signal will return 1 if two strategies
// is long, -1 if all strategies is short and 0 if signals of strategies is not equal.
//
// 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.
//
// Secon strategy
// The Average Directional Movement Index Rating (ADXR) measures the strength
// of the Average Directional Movement Index (ADX). It's calculated by taking
// the average of the current ADX and the ADX from one time period before
// (time periods can vary, but the most typical period used is 14 days).
// Like the ADX, the ADXR ranges from values of 0 to 100 and reflects strengthening
// and weakening trends. However, because it represents an average of ADX, values
// don't fluctuate as dramatically and some analysts believe the indicator helps
// better display trends in volatile markets.
//
// 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
fADX(Len) =>
up = change(high)
down = -change(low)
trur = rma(tr, Len)
plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, Len) / trur)
minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, Len) / trur)
sum = plus + minus
100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), Len)
ADXR(LengthADX, LengthADXR, Signal1, Signal2) =>
xADX = fADX(LengthADX)
xADXR = (xADX + xADX[LengthADXR]) / 2
pos = 0.0
pos := iff(xADXR < Signal1, 1,
iff(xADXR > Signal2, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal and Average Directional Movement Index Rating", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
LengthADX = input(title="Length ADX", defval=14)
LengthADXR = input(title="Length ADXR", defval=14)
Signal1 = input(13, step=0.01)
Signal2 = input(45, step=0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posADXR = ADXR(LengthADX, LengthADXR, Signal1, Signal2 )
pos = iff(posReversal123 == 1 and posADXR == 1 , 1,
iff(posReversal123 == -1 and posADXR == -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 ? red: possig == 1 ? green : blue )