이 전략은
이 전략은 다른 기간과 함께 3 개의 이동 평균을 사용합니다: 50 기간, 100 기간 및 200 기간. 구매 논리는: 50 기간 MA가 100 기간 MA를 넘어서고 100 기간 MA가 200 기간 MA를 넘어서면, 길게 이동합니다.
이것은 낮은 변동성 범위에서 벗어나는 신호이며 트렌드의 시작입니다. 50 기간 MA
엔트리 이후, 전략은 이윤을 확보하기 위해 이윤을 취득하고 손실을 중지합니다. 이윤을 취득하는 것은 엔트리 가격의 8%로 설정됩니다. 손실을 중지하는 것은 엔트리 가격의 4%로 설정됩니다. 스톱 손실보다 높은 이윤을 취득하면 전략이 전반적으로 수익성있게 유지되도록합니다.
이 전략의 장점:
또한 몇 가지 위험이 있습니다.
해결책:
최적화는 다음 영역에서 수행 할 수 있습니다:
요약하자면, 전략은 전반적으로 명확한 논리를 가지고 있으며, 이동 평균 기간과 이익 취득 / 중지 손실 비율을 구성하여 낮은 위험 수익을 얻습니다. 양적 거래에서 유연하게 적용 할 수 있습니다. 입시 신호 및 중지 손실 방법과 같은 영역에서 추가 최적화가 가능하며, 최상의 결과를 달성하기 위해 매개 변수 조정과 결합하여 최적화 할 수 있습니다.
/*backtest start: 2023-12-10 00:00:00 end: 2023-12-17 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(shorttitle='Low volatility Buy w/ TP & SL (by Coinrule)',title='Low volatility Buy w/ TP & SL', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) //Backtest dates fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 10, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2019, 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" //MA inputs and calculations movingaverage_fast = sma(close, input(50)) movingaverage_slow = sma(close, input(200)) movingaverage_normal= sma(close, input(100)) //Entry strategy.entry(id="long", long = true, when = movingaverage_slow > movingaverage_normal and movingaverage_fast > movingaverage_normal) //Exit longStopPrice = strategy.position_avg_price * (1 - 0.04) longTakeProfit = strategy.position_avg_price * (1 + 0.08) strategy.close("long", when = close < longStopPrice or close > longTakeProfit and window()) //PLOT plot(movingaverage_fast, color=color.orange, linewidth=2) plot(movingaverage_slow, color=color.purple, linewidth=3) plot(movingaverage_normal, color=color.blue, linewidth=2)