
이 전략은 브린 밴드, 이동 평균 및 MACD의 3가지 지표를 결합하여 보다 완전한 거래 체계를 형성한다. 이는 시장의 추세를 판단하는 동시에 반전 기회를 잡을 수 있다.
이 전략의 이름은 ?? 삼각형 ?? 설정 트렌드 추적 전략 ?? 이다. 이 이름은 트렌드 방향과 ?? 설정 입시 지점을 판단 할 때 동시에 세 가지 기술 지표를 사용하는 특징을 강조한다.
이 거래의 기본 논리는 다음과 같습니다.
트렌드 방향을 판단한다. 브린 밴드 중간 궤도, EMA 이동 평균 및 MACD의 0축 비교를 통해 현재 시장이 있는 다단계 또는 공백 단계를 판단한다.
진입 시기를 찾는다. 다중 (또는 공백) 트렌드를 확인한 후, 전략은 EMA 이동 평균이 브린 중궤도를 돌파했는지, 그리고 MACD 기둥 모양 선이 포지 (또는 마이너스) 로 돌파 신호 라인을 돌파했는지에 따라 진입을 판단한다.
정지 스톱 손해 설정. 경기장에 들어가면, 고정 스톱 위치와 정지 스톱 위치가 미리 설정된다.
이 전략의 가장 큰 장점은 트렌드, 평균선, MACD의 세 가지 다른 유형의 기술 지표를 동시에 사용하여 의사 결정을 안내하는 것입니다. 이것은 시장의 움직임을 더 정확하게 판단 할 수있게 해줍니다. 또한 일부 역전 기회를 잡는 데 더 유리합니다.
첫째, 브린 벨트 중간 궤도선은 현재 단계의 주요 트렌드 방향을 명확하게 반영할 수 있다. EMA 평행선의 역할은 트렌드 운행을 추적하는 것이다. 이들의 비교와 결합은 현재 다중 헤드 및 공백 상태를 더 정확하게 판단할 수 있다.
둘째, 부린띠는 그 자체로 비교적 강한 포용성을 갖는다. 중궤도선 근처에서도 일정 지지압위치를 반영하므로, EMA 선의 돌파는 일정 신호가치를 갖는다.
또한, MACD의 추가는 다공 에너지의 소모를 볼 수 있다. 그것의 절대값 크기는 대중의 정서 고조 또는 냉정함을 나타내고, 역전 가능성을 시사한다.
마지막으로, 전략은 단편 거래의 위험/이익 상황을 제어할 수 있는 스톱/손실 조건을 미리 설정하여 전체적으로 안정적인 운영을 보장한다.
이 전략은 다양한 분석 도구를 사용하지만 다음과 같은 주요 위험 요소가 있습니다.
부린띠의 파라미터가 잘못 설정되어 있고, 중궤도선은 주류를 명확하게 반영하지 못한다.
평선 시스템은 멀티 헤드 신호를 발산하지만, MACD는 명확하게 수정되지 않았으며, 공중 헤드 파워가 확대될 수 있다.
스톱 스톱 손실 범위가 너무 커서 단일 손실이 확대 될 수 있습니다.
이 문제에 대한 주요 해결책은 다음과 같습니다.
브린 대역변수를 조정하여 중궤도선이 주 트렌드를 효과적으로 반영하도록 한다.
더 많은 공중 에너지를 판단하는 기술적인 지표들을 도입한다.
역사 거래 상황을 평가하고, 스톱 스톱 손실 파라미터를 최적화한다.
이 전략은 다음의 몇 가지 측면에서 더 개선될 수 있습니다.
트렌드 판단에 더 많은 지표를 도입한다. KDJ, ATR 등 보조 판단, 판단 정확도를 높인다.
운영 수준에서 더 세밀한 스톱 방식을 설정한다. 이동 스톱, 새로운 최고 (최저) 를 돌파한 후 스톱 비율을 증가시키는 등이다.
다양한 품종의 성과를 평가한다. 더 많은 상황 특성에 맞게 파라미터를 조정한다.
테스트 효과와 다양한 시간 프레임과 시장의 피드백 결과를 평가했다. 그에 따라 매개 변수를 조정했다.
기계 학습 알고리즘을 추가하고, 매개 변수의 자동 최적화와 정책 규칙의 동적 업데이트를 구현한다.
이 전략은 브린 밴드, 이동 평균 및 MACD의 세 가지 주요 기술 지표를 동시에 사용합니다. 그것은 추세를 명확하게 판단하고, 어느 정도의 포용성을 가지고 있으며, 반전 기회를 잡을 수도 있습니다. 더 많은 보조 도구를 판단하고, 스톱 스톱 손실 전략을 최적화함으로써, 더 안정적인 거래 성과를 얻을 수 있습니다. 이 전략은 추가 평가 및 개선 가치가 있으며, 정량적 의사 결정의 강력한 도구가 될 수 있습니다.
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Combined Strategy", overlay=true, shorttitle="Comb Strat", default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// Precio de beneficio y Stop Loss
takeProfitTicks = 87636
stopLossTicks = 53350
// Bollinger Bands + EMA
length_bb = input(150, title="BB Length")
src_bb = input(close, title="BB Source")
mult = input(2.0, title="BB StdDev")
basis = ta.sma(src_bb, length_bb)
dev = mult * ta.stdev(src_bb, length_bb)
upper = basis + dev
lower = basis - dev
len_ema = input(34, title="EMA Length")
src_ema = input(close, title="EMA Source")
out_ema = ta.ema(src_ema, len_ema)
typeMA = input("SMA", title="Method")
smoothingLength = input(5, title="Length")
var float smoothingLine = na
if (typeMA == "SMA")
smoothingLine := ta.sma(out_ema, smoothingLength)
else if (typeMA == "EMA")
smoothingLine := ta.ema(out_ema, smoothingLength)
// MACD
fast_length = input(title="Fast Length", defval=9)
slow_length = input(title="Slow Length", defval=17)
src_macd = input(title="Source", defval=close)
signal_length = input.int(title="Signal Smoothing", minval=1, maxval=50, defval=9)
sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"])
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])
fast_ma = sma_source == "SMA" ? ta.sma(src_macd, fast_length) : ta.ema(src_macd, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src_macd, slow_length) : ta.ema(src_macd, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal
// Condiciones de compra y venta
longCondition = (out_ema > basis) and (macd > signal) and (signal > 0)
shortCondition = (out_ema < basis) and (macd < signal) and (signal < 0)
// Variables de estado
var bool longExecuted = na
var bool shortExecuted = na
// Estrategia
if (longCondition and not longExecuted)
strategy.entry("Long", strategy.long)
longExecuted := true
shortExecuted := na
if (shortCondition and not shortExecuted)
strategy.entry("Short", strategy.short)
shortExecuted := true
longExecuted := na
// Take Profit y Stop Loss para Compras y Ventas Cortas
strategy.exit("Take Profit/Close Long", from_entry="Long", profit=takeProfitTicks, loss=stopLossTicks)
strategy.exit("Take Profit/Close Short", from_entry="Short", profit=takeProfitTicks, loss=stopLossTicks)
// Cierre de posiciones cuando la dirección cambia
if ((out_ema < basis) and (macd < signal))
strategy.close("Long")
longExecuted := na
if ((out_ema > basis) and (macd > signal))
strategy.close("Short")
shortExecuted := na
// Plots
plot(basis, "BB Basis", color=#FF6D00)
plot(upper, "BB Upper", color=color.new(#2962FF, 0.5))
plot(lower, "BB Lower", color=color.new(#2962FF, 0.5))
plot(smoothingLine, title="Smoothing Line", color=#f37f20, linewidth=2)
hline(0, "Zero Line", color=color.new(#787B86, 50))
plot(hist, title="Histogram", style=plot.style_columns, color=(hist >= 0 ? (hist[1] < hist ? color.green : color.red) : (hist[1] < hist ? color.red : color.green)))
plot(macd, title="MACD", color=color.blue)
plot(signal, title="Signal", color=color.orange)