The extreme short-term scalping strategy attempts to establish short positions when prices approach or break support lines and sets very small stop loss and take profit levels for high frequency trading. The strategy exploits short-term price breakthroughs to capture market fluctuations for profits.
The strategy first calculates the linear regression line of prices. If the actual closing price is lower than the forecast closing price, long positions are established. If the actual closing price is higher than the forecast closing price, short positions are established. Stop loss and take profit are set to very small number of pips. The strategy allows choosing only long, only short or all direction trading.
Key parameters include:
The main idea of the strategy is to capture short-term price breakthroughs of moving averages. When prices approach or break through support or resistance lines, timely establish positions. And set very small stop loss and take profit to realise profit then close positions immediately, repeating the process.
The strategy has the following advantages:
There are also some risks:
Corresponding risk management measures include:
Further optimisation directions include:
The extreme short-term scalping strategy is a typical high frequency trading strategy. By establishing positions around key price levels and setting very small stop loss and take profit, it captures short-term price fluctuations. Although it can achieve high returns, there are also certain risks. With continuous testing and optimisation, the strategy can be further enhanced for stability and profitability.
/*backtest start: 2024-01-09 00:00:00 end: 2024-01-16 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Extreme Scalping", overlay=true ) src = input(close,title="Source") len = input(defval=14, minval=1, title="Length") offset = input(1) out = linreg(src, len, offset) plot(out) gap_tick=input(100) fixedTP=input(300) fixedSL=input(100) useFixedSLTP=input(true) direction=input(defval="ALL",title="Direction of order",options=["ALL","BUY ONLY","SELL ONLY"]) gap=gap_tick*syminfo.mintick plot(out+gap,color=color.red) plot(out-gap,color=color.green) tp=useFixedSLTP?fixedTP:gap_tick sl=useFixedSLTP?fixedSL:gap_tick longCondition = close<(out-gap) and (direction=="ALL" or direction=="BUY ONLY") shortCondition = close>(out+gap) and (direction=="ALL" or direction=="SELL ONLY") if (longCondition) strategy.entry("Long", strategy.long) strategy.exit("exit long","Long",profit = tp,loss = sl) if (shortCondition) strategy.entry("Short", strategy.short) strategy.exit("exit short","Short",profit =tp,loss=sl) // === Backtesting Dates === thanks to Trost // testPeriodSwitch = input(true, "Custom Backtesting Dates") // testStartYear = input(2019, "Backtest Start Year") // testStartMonth = input(10, "Backtest Start Month") // testStartDay = input(3, "Backtest Start Day") // testStartHour = input(0, "Backtest Start Hour") // testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0) // testStopYear = input(2019, "Backtest Stop Year") // testStopMonth = input(12, "Backtest Stop Month") // testStopDay = input(31, "Backtest Stop Day") // testStopHour = input(23, "Backtest Stop Hour") // testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0) // testPeriod() => // time >= testPeriodStart and time <= testPeriodStop ? true : false // isPeriod = testPeriodSwitch == true ? testPeriod() : true // // === /END // if not isPeriod // strategy.cancel_all() // strategy.close_all()