0bps

Strategy vault / Scalping

Noros Price Channel Scalping Strategy

Noro's Price Channels Scalping Strategy is a scalping trading strategy based on price channels and volatility bands. This strategy uses price channels and volatility bands to identify market trends and takes…

Author
ChaoZhang
Complexity
Starter · 58 lines
Parameters
5
Backtest bar
3h · intraday
Tested on
BTC/USDT · futures

IMG

Overview

Noro's Price Channels Scalping Strategy is a scalping trading strategy based on price channels and volatility bands. This strategy uses price channels and volatility bands to identify market trends and takes positions when trend reversals occur.

Strategy Logic

The strategy first calculates the highest price channel (lasthigh) and lowest price channel (lastlow) of the price, then calculates the middle line of the price channel (center). Next, it calculates the distance (dist) between the price and the middle line as well as the simple moving average of the distance (distsma). Based on this, the volatility bands of 1 time (hd and ld) and 2 times (hd2 and ld2) the distance from the middle line can be calculated.

When the price breaks through the volatility band of 1 time the distance from the middle line, it is judged as bullish. When the price breaks through the volatility band below the middle line, it is judged as bearish. The strategy opens positions in reverse when signs of exhaustion occur in trends. For example, in an uptrend, if there are two yang lines, short positions will be opened on the close of the second yang line; in a downtrend, if there are two yin lines, long positions will be opened on the close of the second yin line.

Advantages of the Strategy

  1. Use price channels to determine market trend direction and avoid trading errors
  2. Use volatility bands to judge whether the trend is exhausted and accurately capture turning points
  3. Adopt scalping trading to earn profits quickly

Risks of the Strategy

  1. Price channels and volatility bands may fail when price fluctuations are large
  2. Scalping trading requires high trading frequency, which can increase trading costs and slippage risks
  3. Stop loss strategies need to be fully considered to control loss risks

Optimization of the Strategy

  1. Optimize parameters of price channels and volatility bands to adapt to more market conditions
  2. Incorporate other indicators to determine trends and turning points
  3. Increase stop loss strategies 4. Consider impacts of trading costs and slippage

Conclusion

In general, Noro's Price Channels Scalping Strategy is a strategy very suitable for scalping trading. It uses price channels and volatility bands to determine market trends, and opens reverse positions when topping or bottoming signs appear. The strategy has high trading frequency, fast profit-making, but also faces certain risks. Further optimization can enable the strategy to be applied in more different markets.

Parameters

NameDefaultWhat it controls
v_input_1trueLong
v_input_2trueShort
v_input_320Period
v_input_4trueShow Bands
v_input_5trueShow Background

Source Pine Script

/*backtest
start: 2023-11-10 00:00:00
end: 2023-12-10 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=2
strategy("Noro's Bands Scalper Strategy v1.0", shorttitle = "Scalper str 1.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
needbb = input(true, defval = true, title = "Show Bands")
needbg = input(true, defval = true, title = "Show Background")
src = close

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2

//Trend
trend = close < ld and high < hd ? -1 : close > hd and low > ld ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up7 = trend == 1 and bar == -1 and bar[1] == -1 ? 1 : 0
dn7 = trend == 1 and bar == 1 and bar[1] == 1 and close > strategy.position_avg_price ? 1 : 0
up8 = trend == -1 and bar == -1 and bar[1] == -1 and close < strategy.position_avg_price ? 1 : 0
dn8 = trend == -1 and bar == 1 and bar[1] == 1 ? 1 : 0

if up7 == 1 or up8 == 1
    strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 ? 0 : na)

if dn7 == 1 or dn8 == 1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 ? 0 : na)

Published by ChaoZhang on the FMZ strategy square · last modified 2023-12-11. Collected in the Quant Trading Vault. Unvalidated research: re-test with your own data and costs before trusting it.

Build this with AgenKit

A spec is not a trading system. Paste this into your coding agent and AgenKit runs a specialist team — architecture, test-first build, risk gates, review — with paper trading on by default.

in Claude Code, Cursor, Codex & 4 more
/agenkit build a production-grade trading bot with a backtest engine, risk controls and paper trading by default from strategies/Noros-Price-Channel-Scalping-Strategy.md
  1. npx agenkit install engineering-kit in your project
  2. Paste the command into your agent and approve each phase
  3. Get tests, backtest, risk controls and a paper-trading switch

Understand it first

Before you run this, read the lesson behind the idea and how to backtest it honestly. Specs like this one are the survivors of an unknown number of trials; deflate their results accordingly.

Related specs

esc

Try , , or .

↑↓ move↵ open