
이 전략은 일반적인 이동 평균 크로스 전략을 최적화하여 세 개의 다른 기간의 이동 평균을 설정하고, 9 주기, 50 주기 및 100 주기의 이동 평균을 사용하여 골드 포크 형태를 구축합니다. 중장선 평행선이 상승 추세에있는 조건에서 단기 평행선에서 중장선 평행선을 통과하여 골드 포크 구매 신호를 형성합니다. 전략의 이름은 이동 평균 크로스 크로스 골드 포크 최적화 거래 전략입니다.
이 전략은 9주기, 50주기 및 100주기 이동 평균의 세 가지 이동 평균을 사용한다. 이 중 9주기 이동 평균은 단기 평균, 50주기 이동 평균은 중계 평균, 100주기 이동 평균은 장기 평균이다. 전략의 거래 신호는 단기 평균과 중계 평균의 교차에서 나온다. 구체적인 논리는, 장기 평균이 상승 추세에 있는 조건에서 (장기 평균은 중계 평균보다 높다) 단기 평균이 중계 평균을 통과하면 구매 신호가 발생하고, 단기 평균이 중계 평균을 통과하면 판매 신호가 발생하여 거래가 이루어진다.
상식적인 이중 이동 평균의 가로 경선 전략에 비해 이 전략은 거래 신호가 발생하기 전에 중·장기 트렌드 판단 조건을 추가하여 유효하지 않은 신호의 일부를 효과적으로 필터링할 수 있다. 장기적인 트렌드가 명확하지 않은 경우, 이 전략은 신호를 생성하지 않을 것이며, 포착을 피할 수 있다. 또한 이 전략은 단기 중기간에 트렌드적인 행동을 포착하는 데 적합하며, 격렬 진입의 가능성을 낮춘다.
이 전략은 매개 변수를 설정할 때 평행선의 주기적 조합을 조정할 필요가 있으며, 다른 주기적 조합은 전략의 효과에 영향을 미칩니다. 주기적 파라미터를 적절히 설정하지 않으면 너무 많은 가짜 신호를 발생시킬 위험이 있습니다. 또한, 거래자는 잠재적인 시스템적 위험을 경계하고 위험을 피하기 위해 적시에 손실을 막아야합니다.
다른 지표와 결합하여 시장의 추세를 판단하는 것을 고려할 수 있습니다. MACD, BOLL 등과 같이, 더 엄격한 입시 조건을 설정하거나, 변동률 지표와 결합하여 적응 이동 평균을 구성하여, 시장 환경에 따라 변수가 자동으로 조정될 수 있도록, 전략을 더 최적화 할 수 있습니다.
이 전략은 일반적인 쌍동이 평균의 교차를 기반으로, 장기 평균선 판단과 필터 조건을 추가하여, 거짓 신호를 효과적으로 필터링할 수 있으며, 단기 중기 경향 행태를 잡기 위해 적합하며, 간단한 실용적인 경향 추적 전략이다. 그러나 거래자는 여전히 변수 최적화 및 체계적인 위험에 주의를 기울이고, scient의 자금 관리 전략을 수립해야 한다.
/*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)