
MACD 평균선 황소-곰 전환 전략 MACD 지표의 DIFF와 DEA 평균선을 계산하여 시장 추세가 전환되었는지 판단하여 거래 신호를 생성합니다. DIFF 상위 DEA를 통과하면 더 많은 것을하고 DIFF 아래 DEA를 통과하면 공백을 만듭니다. 이 전략은 가격 EMA 평균선을 필터링하는 동시에 가짜 돌파구를 방지합니다.
이 전략은 주로 MACD 지표의 DIFF와 DEA 평균선을 기반으로 한다. MACD는 지수 이동 평균의 차이를 나타내는 DIFF, DEA 및 MACD 선으로 구성된다. 그 중 DIFF 선은 단기 EMA 평균선과 장기 EMA 평균선의 차이를 나타내는 DEA 선은 DIFF의 EMA 평균선이며, DIFF 신호를 검증하기 위해 사용되며, MACD 선은 DIFF 빼기 DEA의 차이를 나타내는 등이 있다.
DIFF가 DEA를 상향으로 돌파할 때, 단기평균이 강해지기 시작하고, 시장이 다단으로 들어갑니다. DIFF가 DEA를 상향으로 돌파할 때, 단기평균이 약해지기 시작하고, 시장이 공백으로 들어갑니다. 따라서, 이 전략은 DIFF에서 DEA를 돌파할 때 더 많이 하고, 아래로 돌파할 때 공백을 만듭니다.
동시에, 전략은 가격의 EMA 평균선과 결합하여 가짜 브레이크를 필터링합니다. DIFF가 DEA를 상향으로 돌파하고 가격이 지난 번의 가격보다 낮을 때만 더 많은 것을 할 수 있습니다.
MACD 평균선 황소 곰 전환 전략은 MACD 지표와 가격 EMA 평균선을 결합하여 MACD 지표만으로 생성되는 가짜 신호를 피하고 거래 효과를 향상시킵니다. 이 전략은 시장 추세가 빠르게 전환되는 것을 판단하여 짧은 라인 작업에 적합합니다.
이 장점은 다음과 같습니다.
MACD 수평선 황소와 곰의 전환 전략에는 몇 가지 위험도 있습니다.
이러한 위험은 다음과 같은 몇 가지 측면에서 최적화 될 수 있습니다.
MACD 평균선 황소 곰 전환 전략은 다음과 같은 몇 가지 차원에서 최적화 할 수있는 최적화 공간이 있습니다.
MACD 평평선 황소 곰 전환 전략은 DIFF, DEA 교차 판단 시장의 단계 다수 헤드 및 공수 시점을 판단하고, 가격 EMA 평평선 필터 가짜 신호와 함께, 시장 추세 전환을 신속하게 판단하는 효과를 실현한다. 이 전략은 간단한 명확한 거래 논리, 전환점을 판단 신속하게, 짧은 선과 중간 선에 적합하다. 작동 다음 단계는 매개 변수를 조정하고, 필터를 강화하고, 거래 주파수를 제어하는 등의 측면에서 최적화 할 수 있으며, 전략을 더 안정적으로 만든다.
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("macd_strategy",
shorttitle="macd",
overlay=true,
pyramiding=1,
max_bars_back=5000,
calc_on_order_fills = false,
calc_on_every_tick=true,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100,
commission_type =strategy.commission.percent,
commission_value=0.00075)
[diff, dea, _] = macd(close, 12, 26, 7)
dea_close = ema(diff, 3)
price = ema(close, 9)
plot(price)
cross_over_price = na
cross_over_signal = na
cross_over_price := cross_over_price[1]
cross_over_signal := cross_over_signal[1]
cross_under_price = na
cross_under_signal = na
cross_under_price := cross_under_price[1]
cross_under_signal := cross_under_signal[1]
if (crossover(diff,dea))
cross_over_price := price[1]
cross_over_signal := diff
if (crossunder(diff,dea))
cross_under_price := price[1]
cross_under_signal := diff
if dea > 0
cross_over_price = na
cross_over_signal = na
else
cross_under_price = na
cross_under_signal = na
if diff > 0
if cross_under_price > cross_under_price[1]*1 and cross_under_signal < cross_under_signal[1]*0.95
strategy.entry("S", strategy.short, comment="S")
else
if cross_over_price < cross_over_price[1]*1 and cross_over_signal > cross_over_signal[1]*0.95
strategy.entry("B", strategy.long, comment="B")
// strategy.exit("exit_s", "S", stop = strategy.position_avg_price*1.05, when=strategy.position_size < 0)
// strategy.exit("exit_b", "B", stop = strategy.position_avg_price*0.95, when=strategy.position_size > 0)
strategy.close_all(when=(strategy.position_size < 0 and (dea < 0 or diff > cross_under_signal*1 or crossover(diff, dea)) or (strategy.position_size > 0 and (dea > 0 or diff < cross_over_signal*1 or crossunder(diff, dea)))))