
이 전략은 현재 트렌드 방향을 판단하기 위해 브린 벨트 지표를 사용하며, 지수 이동 평균과 결합하여 스톱 스톱 관리를 수행하여 트렌드를 효과적으로 캡처합니다.
이 전략은 먼저 브린 띠의 중간선, 상반도 및 하반도를 계산한다. 중간선은 n일 종결 가격의 간단한 이동 평균이며, 상반도 및 하반도는 각각 중간선에서 하향으로 이동하는 두 표준차이다. 종결 가격이 상반도보다 높을 때, 거래가 낙관적 추세에 있음을 나타냅니다. 종결 가격이 하반도보다 낮을 때, 거래가 하향 추세에 있음을 나타냅니다.
전략은 종전 가격과 부린带의 상하 궤도의 관계를 비교하여 현재의 트렌드 방향을 판단한다. 종전 가격이 상하 궤도를 돌파하면 더 많이 하고, 종전 가격이 하하 궤도를 돌파하면 공백을 한다.
또한, 전략은 지수 이동 평균을 도입하여 손실을 막기 위한 트레일링 스톱으로 사용한다. 구체적으로, 만약 더 많은 것을 한 후에 가격이 아래로 내려가면, 스톱 라인은 그 아래로 이동하여, 스톱 라인 거리를 점차적으로 강화하고, 최대 수익을 잠금한다. 가격이 계속 올라간다면, 스톱 라인도 위로 이동하여, 수익이 계속 작동한다.
이 전략은 브린띠 판단 트렌드 방향과 EMA의 스톱 스톱 관리와 결합하여 다음과 같은 장점을 가지고 있다:
브린 밴드를 사용하면 트렌드 방향을 효과적으로 판단하고 돌파구에 신속하게 반응할 수 있습니다.
EMA 기반의 스톱로스 스톱은 수익을 최대한 고정시키고, 수익을 보장하면서 위험을 통제할 수 있다.
전략적 변수가 적고, 실행하기 쉽다. 린은 하나의 변수, EMA는 하나의 변수, 매우 간결하다.
다양한 품종에 광범위하게 적용될 수 있으며, 강한 적응력을 가지고 있다.
이 전략에는 몇 가지 위험도 있습니다.
브린은 하향 도로를 통과하는 것은 가짜 도로를 통과하는 위험을 완전히 피할 수 없습니다. 거래량과 같은 지표 필터링 신호를 결합 할 수 있습니다.
EMA 매개 변수 설정은 특정 품종에 따라 신중하게 테스트해야합니다. EMA 주기가 너무 짧으면 중단 손실이 증가 할 수 있으며 너무 길으면 추적 효과가 감소합니다.
과도한 최적화를 방지하기 위해 주의가 필요합니다. 부린 띠와 EMA 파라미터의 조합이 너무 많으면 과도한 적합성을 초래할 수 있습니다.
위험의 해결과 최적화 방향에 대해 다음과 같은 생각을 할 수 있습니다.
거래량을 증가시키거나 MACD와 같은 지표, 가짜 브레이크 신호를 필터링한다.
EMA 주기를 최적화 테스트하고 특정 품종에 더 적합한 매개 변수를 선택하십시오.
부린 띠와 EMA 파라미터를 안정적으로 유지하기 위해 최대한 노력하여 과도한 최적화로 인한 과도한 적합성의 위험을 피하십시오.
트렌드 중간에 RSI와 같은 지표들을 고려하여 포지션 조정 여부를 결정할 수 있다.
이 전략은 브린 벨트 판단 트렌드와 EMA의 중지 중지 관리를 통합하여 보다 완전한 트렌드 추적 시스템을 형성한다. 이 전략은 트렌드 방향을 빠르게 포착하고, 중지 라인을 계속 조정하여 수익을 고정한다. 전체적으로 이 전략은 실용적이고 적응력이 강하며, 추가 테스트 최적화를 할 가치가 있다. 그러나 또한 잘못된 판단과 과잉 최적화 문제를 방지하기 위해 파라미터 설정 및 위험 관리에 주의를 기울여야 한다. 다른 기술 지표와 결합하여 더 개선되어 향후 최적화 방향이 될 것이다.
/*backtest
start: 2022-11-10 00:00:00
end: 2023-11-16 00:00:00
period: 1d
basePeriod: 1h
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/
// © zxcv55602
//@version=4
strategy(shorttitle=" BB+EMA", title="Bollinger Bands", overlay=true)
date1 = input(title="Start Date", type=input.time, defval=timestamp("2020-01-01T00:00:00"))
date2 = input(title="Stop Date", type=input.time, defval=timestamp("2030-01-01T00:00:00"))
length = input(40, minval=1)
src = input(close, title="Source")
mult = input(2.0,title="StdDev",step=0.1)
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
//offset = input(0, "Offset", minval = -500, maxval = 500)
offset=0
stopcon=input(title="stopcon/lot", type=input.bool, defval=true)
lot1=input(title="lot",defval=1)
stoploss=input(title="stopcon",defval=1000)
emacon=input(title="emacon", type=input.bool, defval=true)
ema_value=input(title="value",defval=30, minval=2,step=1)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=color.new(color.blue,50), offset = offset)
p2 = plot(lower, "Lower", color=color.new(color.blue,50), offset = offset)
ema1=ema(close,ema_value)
plot(ema1, "SMA", color=#2962FF)
period() => true
//-----------
if period()
if strategy.opentrades==0 and ema1<upper
if close>upper
lot_L=stoploss/((close-lower)/2)
strategy.entry("OP_L",strategy.long,qty=stopcon==true?lot_L:lot1,stop=emacon==true?max(basis,ema1):basis)
if strategy.opentrades==0 and ema1>lower
if close<lower
lot_S=stoploss/((upper-close)/2)
strategy.entry("OP_S",strategy.short,qty=stopcon==true?lot_S:lot1,stop=emacon==true?min(basis,ema1):basis)
if strategy.position_size>0
strategy.exit("OP_L",stop=emacon==true?max(basis,ema1):basis,comment="exit_L")
if strategy.position_size<0
strategy.exit("OP_S",stop=emacon==true?min(basis,ema1):basis,comment="exit_S")