The Scalping Dips in Bull Market strategy is a trend-following strategy. It buys the dip during bull markets, sets a wide stop loss to lock in profits when exiting positions. This strategy is suitable for bull markets and can yield excess returns.
This strategy first calculates the percentage price change over a lookback period. When the price drops by more than the preset callback percentage, a buy signal is triggered. At the same time, the moving average line needs to be above the close price as a confirmation of the uptrend.
After entering a position, stop loss and take profit prices are set. The stop loss percentage is large to ensure sufficient funds; the take profit percentage is small for fast profit taking. When the stop loss or take profit is triggered, the position will be closed.
The advantages of this strategy are:
There are also some risks with this strategy:
Counter measures: Strictly control position sizing, adjust stop loss percentage, properly reduce take profit exit ratio to mitigate risks.
The strategy can be optimized in the following aspects:
The Scalping Dips in Bull Market strategy locks in excess returns using a wide stop loss. It capitalizes on buying callback dips in bull market trends for profit opportunities. Fine tuning parameters and risk controls can yield good steady returns.
/*backtest start: 2023-12-30 00:00:00 end: 2024-01-29 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Coinrule //@version=3 strategy(shorttitle='Scalping Dips On Trend',title='Scalping Dips On Trend (by Coinrule)', overlay=true, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 30, commission_type=strategy.commission.percent, commission_value=0.1) //Backtest dates fromMonth = input(defval = 1, title = "From Month") fromDay = input(defval = 10, title = "From Day") fromYear = input(defval = 2020, title = "From Year") thruMonth = input(defval = 1, title = "Thru Month") thruDay = input(defval = 1, title = "Thru Day") thruYear = input(defval = 2112, title = "Thru Year") showDate = input(defval = true, title = "Show Date Range") start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => true inp_lkb = input(1, title='Lookback Period') perc_change(lkb) => overall_change = ((close[0] - close[lkb]) / close[lkb]) * 100 // Call the function overall = perc_change(inp_lkb) //MA inputs and calculations MA=input(50, title='Moving Average') MAsignal = sma(close, MA) //Entry dip= -(input(2)) strategy.entry(id="long", long = true, when = overall< dip and MAsignal > close and window()) //Exit Stop_loss= ((input (10))/100) Take_profit= ((input (3))/100) longStopPrice = strategy.position_avg_price * (1 - Stop_loss) longTakeProfit = strategy.position_avg_price * (1 + Take_profit) strategy.close("long", when = close < longStopPrice or close > longTakeProfit and window())