골든 크로스 최적화 이동 평균 크로스오버 거래 전략

저자:차오장, 날짜: 2023-12-19 13:37:33
태그:

img

전반적인 설명

이 전략은 다른 기간과 함께 세 개의 이동 평균을 설정하여 전통적인 이동 평균 크로스오버 전략을 최적화하여 9 기간, 50 기간 및 100 기간 이동 평균과 함께 골든 크로스 패턴을 구성합니다. 단기 MA가 중기 MA를 넘어서고 장기 MA가 상승 추세에있을 때 구매 신호를 생성합니다. 전략 이름은 최적화 된 골든 크로스 이동 평균 크로스오버 거래 전략입니다.

전략 논리

이 전략은 9, 50 및 100의 기간을 가진 세 개의 이동 평균을 사용합니다. 9 기간 MA는 단기 MA, 50 기간 MA는 중기 MA, 100 기간 MA는 장기 MA입니다. 거래 신호는 단기 MA와 중기 MA 사이의 교차로 생성됩니다. 구체적으로, 장기 MA가 상승 추세에있을 때 (중기 MA보다 높을 때), 단기 MA가 중기 MA를 넘을 때 구매 신호가 유발됩니다. 단기 MA가 중기 MA를 넘을 때 판매 신호가 유발됩니다.

이점 분석

기존의 이중 이동 평균 크로스오버 전략과 비교하면 이 전략은 거래 신호를 생성하기 전에 중장기 트렌드를 판단하는 조건을 추가하여 일부 유효하지 않은 신호를 효과적으로 필터링할 수 있다. 장기 트렌드가 불분명할 때 전략은 신호를 생성하지 않아 통합에 갇히지 않는다. 동시에 이 전략은 단기 및 중기간에 트렌드 움직임을 포착하는 데 적합하며 공격적인 진입 가능성을 줄인다.

위험 분석

이 전략의 매개 변수를 설정할 때 이동 평균 기간의 조합은 조정되어야 합니다. 다른 기간 조합은 전략의 효과에 영향을 미칠 것입니다. 기간 매개 변수가 올바르게 설정되지 않으면 너무 많은 잘못된 신호를 생성 할 위험이 있습니다. 또한 거래자는 잠재적 인 시스템 리스크를 인식하고 위험을 완화하기 위해 적시에 손실을 중단해야합니다.

최적화 방향

MACD, BOLL 등과 같은 시장 추세를 판단하는 데 도움이 되는 다른 지표를 통합하는 것을 고려하고 더 엄격한 입시 조건을 설정하거나 변동성 지표를 통합하여 적응 가능한 이동 평균을 구성하여 매개 변수를 자동으로 조정할 수 있습니다. 시장 조건에 따라 전략을 더 최적화하기 위해.

결론

이 전략은 기존의 이중 이동 평균 크로스오버를 기반으로 장기적인 MA 판단과 필터 조건을 추가하여 잘못된 신호를 효과적으로 필터링할 수 있으며, 단기 및 중기 트렌드 움직임을 포착하는 데 적합합니다. 이것은 간단하고 실용적인 트렌드 추적 전략입니다. 그러나 거래자는 여전히 매개 변수 최적화 및 시스템 위험에주의를 기울이고 과학적 위험 관리 전략을 수립해야합니다.


/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Golden Cross, SMA 100, Moving Average Strategy (by Coinrule)", shorttitle="Golden_Cross_Strat_MA100_optimized", overlay=true, initial_capital = 1000,process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

// Input
switch1=input(true, title="Enable Bar Color?")
switch2=input(false, title="Show Fast Moving Average")
switch3=input(true, title="Show Slow Moving Average")

//Calculate Moving Averages
movingaverage_fast = sma(close, input(9))
movingaverage_slow = sma(close, input(100))
movingaverage_normal= sma(close, input(50))

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"


// Calculation
bullish_cross = crossover(movingaverage_fast, movingaverage_normal)
bearish_cross = crossunder(movingaverage_fast, movingaverage_normal)

//Entry and Exit
if bullish_cross and window() and movingaverage_slow > movingaverage_normal
    strategy.entry("long", strategy.long)

strategy.close("long", when = bearish_cross and window())

// Colors
bartrendcolor = close > movingaverage_fast and close > movingaverage_slow and change(movingaverage_slow) > 0 ? color.green : close < movingaverage_fast and close < movingaverage_slow and change(movingaverage_slow) < 0 ? color.red : color.blue
barcolor(switch1?bartrendcolor:na)

// Output
plot(movingaverage_fast, color=color.orange, linewidth=2)
plot(movingaverage_slow, color=color.purple, linewidth=3)
plot(movingaverage_normal, color=color.blue, linewidth=2)

bgcolor(color = showDate and window() ? color.gray : na, transp = 90)

더 많은