이 전략은 통화 쌍의 장기 거래를 구현하기 위해 MACD 지표와 긴 및 긴 라인을 기반으로합니다. MACD 지표 라인이 긴 라인을 넘어서면 포지션을 열고 MACD 지표 라인이 닫힌 라인을 넘어서면 포지션을 닫습니다. 스톱 로스 전략도 구성됩니다.
이 전략은 MACD 지표의 빠르고 느린 라인을 사용합니다. 빠른 라인은 12 일 EMA의 매개 변수를 가지고 있으며 느린 라인은 26 일 EMA의 매개 변수를 가지고 있습니다. 두 라인의 차이는 MACD 히스토그램입니다. 또한, 9 일 EMA는 신호 라인으로 계산됩니다. MACD 히스토그램이 0.04 이상으로 넘어가면 긴 지위를 가지며 0.015 이하로 넘어가면 긴 지위를 닫습니다. 또한 5%의 스톱 로스를 설정합니다.
특히, 전략은 먼저 MACD 지표의 빠른 라인, 느린 라인 및 신호 라인을 계산합니다. 그 다음 긴 라인은 -0.04로 설정되며, 닫는 라인은 0.015로 설정됩니다. 현재 MACD 히스토그램이 긴 라인보다 크다면, 그것은 길게 간다. 현재 MACD 히스토그램이 닫는 라인보다 작으면 긴 포지션을 닫습니다. 또한, 스톱 로스 라인은 엔트리 가격의 95%로 설정됩니다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
이 전략은 또한 몇 가지 위험을 안고 있습니다.
매개 변수를 조정하고 다른 지표를 결합하는 방법과 같은 방법을 최적화하고 개선하는 데 사용할 수 있습니다.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
더 나은 매개 변수를 찾기 위해 다른 MACD 매개 변수 조합을 테스트하십시오.
다른 길이의 빠른 라인, 느린 라인, 신호 라인 더 적합한 조합을 찾을 수 있습니다.
다른 지표를 시도해보세요.
RSI, KD와 같은 지표는 매우 다른 결과를 얻을 수 있습니다.
긴 라인 및 근 라인 매개 변수를 최적화
더 적합한 매개 변수는 반복적인 백테스팅을 통해 찾을 수 있습니다.
스톱 로스 전략을 조정
중지 손실을 더 역동적으로 만들기 위해 후속 중지 고려
다른 통화 쌍에서 테스트
다른 쌍에 전략을 적용하고 효과를 조사
결론적으로, 이것은 전반적으로 매우 간단하고 직관적인 장기 거래 전략입니다. MACD 지표를 사용하여 시장 조건을 판단하고 잘못된 거래를 줄이기 위해 이중 필터 기준을 설정합니다. 리스크 제어도 스톱 로스로 구성됩니다. 논리는 명확하고 자원 점유율이 낮습니다. 이해하기 쉽고 실행할 가치가 있습니다. 물론, 여전히 매개 변수 조정, 지표 변경 및 기타 방법을 통해 개선 할 여지가 많습니다. 전략을 더욱 뛰어난 것으로 만들기 위해.
/*backtest start: 2024-01-04 00:00:00 end: 2024-01-11 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(shorttitle = "GBPJPY MACD", title = "GBPJPY MACD") fastMA = input(title="Fast moving average", defval = 12, minval = 7) slowMA = input(title="Slow moving average", defval = 26, minval = 7) lastColor = yellow [currMacd,_,_] = macd(close[0], fastMA, slowMA, 9) [prevMacd,_,_] = macd(close[1], fastMA, slowMA, 9) plotColor = currMacd > 0 ? currMacd > prevMacd ? lime : green : currMacd < prevMacd ? maroon : red plot(currMacd, style = histogram, color = plotColor, linewidth = 3) plot(0, title = "Zero line", linewidth = 1, color = gray) //MACD // Getting inputs fast_length = input(title="Fast Length", defval=12) slow_length = input(title="Slow Length", defval=26) src = input(title="Source", defval=close) signal_length = input(title="Signal Smoothing", minval = 1, maxval = 50, defval =9) sma_source = input(title="Simple MA(Oscillator)", type=bool, defval=false) sma_signal = input(title="Simple MA(Signal Line)", type=bool, defval=false) // Plot colors col_grow_above = #26A69A col_grow_below = #FFCDD2 col_fall_above = #B2DFDB col_fall_below = #EF5350 col_macd = #0094ff col_signal = #ff6a00 // Calculating fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length) slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length) hist = macd - signal //plot(hist, title="Histogram", style=columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 ) plot(macd, title="MACD", color=col_macd, transp=0) plot(signal, title="Signal", color=col_signal, transp=0) ///END OF MACD //Long and Close Long Lines linebuy = input(title="Enter Long", type=float, defval=-0.04) linesell = input(title="Close Long", type=float, defval=0.015) //Plot Long and Close Long Lines plot(linebuy,color=green),plot(linesell,color=red) //Stop Loss Input sl_inp = input(0.05, title='Stop Loss %', type=float)/100 //Order Conditions longCond = crossover(currMacd, linebuy) exitLong = crossover(currMacd, linesell) stop_level = strategy.position_avg_price * (1 - sl_inp) //Order Entries strategy.entry("long", strategy.long, when=longCond==true) strategy.close("long", when=exitLong==true) strategy.exit("Stop Loss", stop=stop_level)