Big Snapper Alerts R30 Chaiking Volatility condition TP RSI
Big Snapper Alerts R3.0 + Chaiking Volatility condition + TP RSI Educational Script - Use this tool at your own responsability. backtest
Big Snapper Alerts R3.0 + Chaiking Volatility condition + TP RSI
Educational Script - Use this tool at your own responsability.
backtest

Parameters
| Name | Default | What it controls |
|---|---|---|
| v_input_string_1 | 0 | Coloured MA Type: : HullMA | EMA | WMA | VWMA | SMMA | DEMA | TEMA | SMA | ZEMA | TMA | SSMA |
| v_input_int_1 | 18 | Coloured MA - Length |
| v_input_1_close | 0 | Coloured MA - Source: close | high | low | open | hl2 | hlc3 | hlcc4 | ohlc4 |
| v_input_string_2 | 0 | Fast MA Type: : EMA | SMA | WMA | VWMA | SMMA | DEMA | TEMA | HullMA | ZEMA | TMA | SSMA |
| v_input_int_2 | 21 | Fast MA - Length |
| v_input_string_3 | 0 | Medium MA Type: : EMA | SMA | WMA | VWMA | SMMA | DEMA | TEMA | HullMA | ZEMA | TMA | SSMA |
| v_input_int_3 | 55 | Medium MA - Length |
| v_input_string_4 | 0 | Slow MA Type: : EMA | SMA | WMA | VWMA | SMMA | DEMA | TEMA | HullMA | ZEMA | TMA | SSMA |
| v_input_int_4 | 89 | Slow MA Length |
| v_input_2_close | 0 | 3xMA and Bollinger Source: close | high | low | open | hl2 | hlc3 | hlcc4 | ohlc4 |
| v_input_string_5 | 0 | Signal Filter Option : : SuperTrend | 3xMATrend | SuperTrend+3xMA | ColouredMA | No Alerts | MACross | MACross+ST | MACross+3xMA | OutsideIn:MACross | OutsideIn:MACross+ST | OutsideIn:MACross+3xMA |
| v_input_3 | false | hideMALines |
| v_input_4 | true | hideSuperTrend |
| v_input_5 | true | hideBollingerBands |
| v_input_6 | true | hideTrendDirection |
| v_input_7 | false | disableFastMAFilter |
| v_input_8 | false | disableMediumMAFilter |
| v_input_9 | false | disableSlowMAFilter |
| v_input_int_5 | 20 | Bollinge Bands Length |
| v_input_float_1 | 2 | Bollinger Bands StdDevs |
| v_input_10 | 8 | Bollinger Outside In LookBack |
| v_input_float_2 | 3.618 | SuperTrend Factor |
| v_input_int_6 | 5 | SuperTrend Length |
| v_input_string_6 | 0 | BUY Marker Colour: : Green | Lime | Aqua | DodgerBlue | Gray | Yellow |
| v_input_string_7 | 0 | SELL Marker Colour: : Maroon | Red | Fuchsia | Blue | Black | Orange |
| v_input_11 | 70 | overbought value |
| v_input_12 | 30 | oversold value |
| v_input_int_7 | 10 | Length |
| v_input_int_8 | 12 | ROCLength |
| v_input_int_9 | false | Trigger |
Source Pine Script
/*backtest
start: 2022-04-08 00:00:00
end: 2022-05-07 23:59:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":500000}]
*/
//@version=5
//
// Bannos
// #NotTradingAdvice #DYOR
// Disclaimer.
// I AM NOT A FINANCIAL ADVISOR.
// THESE IDEAS ARE NOT ADVICE AND ARE FOR EDUCATION PURPOSES ONLY.
// ALWAYS DO YOUR OWN RESEARC
strategy(title='Big Snapper Alerts R3.0 + Chaiking Volatility condition + TP RSI', shorttitle='SNAPPER Bannos', overlay=true)
//
// Author: Adaptation from Bannos. Source: JustUncleL
// Date: May-2022
// Version: R1.0
//
// Description:
// This is a diversified Binary Option or Scalping Alert indicator originally designed for
// lower Time Frame Trend or Swing trading. Although you will find it a useful tool for
// higher time frames as well.
//
// The Alerts are generated by the changing direction of the ColouredMA (HullMA by default,
// also SSMA works well) or optionally by fastMA crossing ColouredMA. Then you have the choice of
// selecting the Directional filtering on these signals or a Bollinger Outside IN swing
// reversal filter.
//
// The filters include:
//
// Type 1 - The three MAs (EMAs 21,55,89 by default) in various combinations or by themselves.
// When only one directional MA selected then direction filter is given by ColouredMA
// above(up)/below(down) selected MA.
// If more than one MA selected the direction is given by MAs being in correct order
// for trend direction.
//
// Type 2 - The SuperTrend direction is used to filter ColouredMA signals.
//
// Type 3 - Bollinger Band Outside In is used to filter ColouredMA for swing reversals.
//
// Type 4 - No directional filtering, all signals from the ColouredMA are shown.
//
// Type 5 - Signals given by FastMA (eg length 7) crossing the ColouredMA (eg length 14),
// suggested FastMA should same type as ColouredMA (eq HullMA or SSMA) and
// no less than half the length.
//
// Notes: - Each Type can be combined with most other types to form more complex filtration.
// - Alerts can also be disabled completely if you just want one indicator with
// one colouredMA and/or 3xMAs and/or Bollinger Bands and/or SuperTrend
// painted on the chart.
//
// Warning- Be aware that combining Bollinger OutsideIn swing filter and a directional filter
// can be counter productive as they are opposites. So careful consideration is needed
// when combining Bollinger OutsideIn with any of the directional filters.
//
// Hints: - For Binary Options try ColouredMA = HullMA(13) or HullMA(8) with Type 2 or 3 Filter.
// - When using Trend filters SuperTrend and/or 3xMA Trend, you will find if price reverses
// and breaks back through the Big Fat Signal line, then this can be a good reversal trade.
// - Try using SSMA instead of HullMA for signal line, it is similar to Hull but remains
// smoother at low lengths and works well with the MA Cross signals.
//
// Mofidifications:
//
// R0.# : Original alpha unpublished versions.
//
// R1.# : Original beta unpublished versions.
//
// R2.0 : Original Published version.
//
// R3.0 : - Added new Signal Type 5: Signals come from Fast MA crossing slower ColouredMA.
// - Replaced OutsideIn Coloured MA signals with those generated from the MA cross.
// - Added selectable colours for Big fat marker, the big arrows colours must still
// be selected in the "Style" parameters of the script.
//
// References:
// Some explanation about the what Hull Moving averageis and ideas of how the generated in
// Snapper can be used.
// - https://tradingsim.com/blog/hull-ma/
// - http://forextradingstrategies4u.com/hull-moving-average-forex-trading-strategy/
//
// Some Code borrowed from:
// - "Scalp Jockey - MTF MA Cross Visual Strategizer by JayRogers"
//
// Inspiration from @vdubus
//
//
// -----------------------------------------------------------------------------
// Copyright 2017 JustUncleL
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// The GNU General Public License can be found here
// <http://www.gnu.org/licenses/>.
//
// -----------------------------------------------------------------------------
//
//
// === INPUTS ===
// Coloured MA - type, length, source
typeColoured = input.string(defval='HullMA', title='Coloured MA Type: ', options=['SMA', 'EMA', 'WMA', 'VWMA', 'SMMA', 'DEMA', 'TEMA', 'HullMA', 'ZEMA', 'TMA', 'SSMA'])
lenColoured = input.int(defval=18, title='Coloured MA - Length', minval=1)
srcColoured = input(close, title='Coloured MA - Source')
// Fast MA - type, length
typeFast = input.string(defval='EMA', title='Fast MA Type: ', options=['SMA', 'EMA', 'WMA', 'VWMA', 'SMMA', 'DEMA', 'TEMA', 'HullMA', 'ZEMA', 'TMA', 'SSMA'])
lenFast = input.int(defval=21, title='Fast MA - Length', minval=1)
// Medium MA - type, length
typeMedium = input.string(defval='EMA', title='Medium MA Type: ', options=['SMA', 'EMA', 'WMA', 'VWMA', 'SMMA', 'DEMA', 'TEMA', 'HullMA', 'ZEMA', 'TMA', 'SSMA'])
lenMedium = input.int(defval=55, title='Medium MA - Length', minval=1)
// Slow MA - type, length
typeSlow = input.string(defval='EMA', title='Slow MA Type: ', options=['SMA', 'EMA', 'WMA', 'VWMA', 'SMMA', 'DEMA', 'TEMA', 'HullMA', 'ZEMA', 'TMA', 'SSMA'])
lenSlow = input.int(defval=89, title='Slow MA Length', minval=1)
// 3xMA source
ma_src = input(close, title='3xMA and Bollinger Source')
//
filterOption = input.string('SuperTrend', title='Signal Filter Option : ', options=['3xMATrend', 'SuperTrend', 'SuperTrend+3xMA', 'ColouredMA', 'No Alerts', 'MACross', 'MACross+ST', 'MACross+3xMA', 'OutsideIn:MACross', 'OutsideIn:MACross+ST', 'OutsideIn:MACross+3xMA'])
//
hideMALines = input(false)
hideSuperTrend = input(true)
hideBollingerBands = input(true)
hideTrendDirection = input(true)
//
disableFastMAFilter = input(false)
disableMediumMAFilter = input(false)
disableSlowMAFilter = input(false)
//
uKC = false // input(false,title="Use Keltner Channel (KC) instead of Bollinger")
bbLength = input.int(20, minval=2, step=1, title='Bollinge Bands Length')
bbStddev = input.float(2.0, minval=0.5, step=0.1, title='Bollinger Bands StdDevs')
oiLength = input(8, title='Bollinger Outside In LookBack')
//
SFactor = input.float(3.618, minval=1.0, title='SuperTrend Factor')
SPd = input.int(5, minval=1, title='SuperTrend Length')
//
buyColour_ = input.string('Green', title='BUY Marker Colour: ', options=['Green', 'Lime', 'Aqua', 'DodgerBlue', 'Gray', 'Yellow'])
sellColour_ = input.string('Maroon', title='SELL Marker Colour: ', options=['Maroon', 'Red', 'Fuchsia', 'Blue', 'Black', 'Orange'])
// --- Allocate Correct Filtering Choice
// Can only be one choice
uSuperTrendFilter = filterOption == 'SuperTrend' ? true : false
u3xMATrendFilter = filterOption == '3xMATrend' ? true : false
uBothTrendFilters = filterOption == 'SuperTrend+3xMA' ? true : false
//uOIFilter = filterOption == "OutsideIn:ClrMA" ? true : false
uOIMACrossFilter = filterOption == 'OutsideIn:MACross' ? true : false
uOI3xMAFilter = filterOption == 'OutsideIn:MACross+3xMA' ? true : false
uOISTFilter = filterOption == 'OutsideIn:MACross+ST' ? true : false
uMACrossFilter = filterOption == 'MACross' ? true : false
uMACrossSTFilter = filterOption == 'MACross+ST' ? true : false
uMACross3xMAFilter = filterOption == 'MACross+3xMA' ? true : false
// unless all 3 MAs disabled.
disable3xMAFilter = disableFastMAFilter and disableMediumMAFilter and disableSlowMAFilter
u3xMATrendFilter := disable3xMAFilter ? false : u3xMATrendFilter
// if no filters selected then must be "No Filters" option
disableAllFilters = u3xMATrendFilter or uSuperTrendFilter or uBothTrendFilters or uOI3xMAFilter or uOISTFilter or uOIMACrossFilter or uMACrossFilter or uMACrossSTFilter or uMACross3xMAFilter ? false : true
// if "No Alerts" option selected, then disable all selections
disableAllFilters := filterOption == 'No Alerts' ? false : disableAllFilters
uSuperTrendFilter := filterOption == 'No Alerts' ? false : uSuperTrendFilter
u3xMATrendFilter := filterOption == 'No Alerts' ? false : u3xMATrendFilter
uBothTrendFilters := filterOption == 'No Alerts' ? false : uBothTrendFilters
//uOIFilter := filterOption == "No Alerts"? false : uOIFilter
uOIMACrossFilter := filterOption == 'No Alerts' ? false : uOIMACrossFilter
uOI3xMAFilter := filterOption == 'No Alerts' ? false : uOI3xMAFilter
uOISTFilter := filterOption == 'No Alerts' ? false : uOISTFilter
uMACrossFilter := filterOption == 'No Alerts' ? false : uMACrossFilter
uMACrossSTFilter := filterOption == 'No Alerts' ? false : uMACrossSTFilter
uMACross3xMAFilter := filterOption == 'No Alerts' ? false : uMACross3xMAFilter
// --- CONSTANTS ---
dodgerblue = #1E90FF
lightcoral = #F08080
buyColour = color.green // for big Arrows, must be a constant.
sellColour = color.maroon // for big Arrows
// Colour Selectable for Big Fat Bars.
buyclr = buyColour_ == 'Lime' ? color.lime : buyColour_ == 'Aqua' ? color.aqua : buyColour_ == 'DodgerBlue' ? dodgerblue : buyColour_ == 'Gray' ? color.gray : buyColour_ == 'Yellow' ? color.yellow : color.green
sellclr = sellColour_ == 'Red' ? color.red : sellColour_ == 'Fuchsia' ? color.fuchsia : sellColour_ == 'Blue' ? color.blue : sellColour_ == 'Black' ? color.black : sellColour_ == 'Orange' ? color.orange : color.maroon
// === /INPUTS ===
// === FUNCTIONS ===
// Returns MA input selection variant, default to SMA if blank or typo.
variant(type, src, len) =>
v1 = ta.sma(src, len) // Simple
v2 = ta.ema(src, len) // Exponential
v3 = ta.wma(src, len) // Weighted
v4 = ta.vwma(src, len) // Volume Weighted
v5 = 0.0
sma_1 = ta.sma(src, len) // Smoothed
v5 := na(v5[1]) ? sma_1 : (v5[1] * (len - 1) + src) / len
v6 = 2 * v2 - ta.ema(v2, len) // Double Exponential
v7 = 3 * (v2 - ta.ema(v2, len)) + ta.ema(ta.ema(v2, len), len) // Triple Exponential
v8 = ta.wma(2 * ta.wma(src, len / 2) - ta.wma(src, len), math.round(math.sqrt(len))) // Hull WMA = (2*WMA (n/2) − WMA (n)), sqrt (n))
v11 = ta.sma(ta.sma(src, len), len) // Triangular
// SuperSmoother filter
// © 2013 John F. Ehlers
a1 = math.exp(-1.414 * 3.14159 / len)
b1 = 2 * a1 * math.cos(1.414 * 3.14159 / len)
c2 = b1
c3 = -a1 * a1
c1 = 1 - c2 - c3
v9 = 0.0
v9 := c1 * (src + nz(src[1])) / 2 + c2 * nz(v9[1]) + c3 * nz(v9[2])
// Zero Lag Exponential
e = ta.ema(v1, len)
v10 = v1 + v1 - e
// return variant, defaults to SMA if input invalid.
type == 'EMA' ? v2 : type == 'WMA' ? v3 : type == 'VWMA' ? v4 : type == 'SMMA' ? v5 : type == 'DEMA' ? v6 : type == 'TEMA' ? v7 : type == 'HullMA' ? v8 : type == 'SSMA' ? v9 : type == 'ZEMA' ? v10 : type == 'TMA' ? v11 : v1
// === /FUNCTIONS ===
// === SERIES VARIABLES ===
// MA's
ma_fast = variant(typeFast, ma_src, lenFast)
ma_medium = variant(typeMedium, ma_src, lenMedium)
ma_slow = variant(typeSlow, ma_src, lenSlow)
ma_coloured = variant(typeColoured, srcColoured, lenColoured)
// Get Direction of Coloured Moving Average
clrdirection = 1
falling_1 = ta.falling(ma_coloured, 2)
clrdirection := ta.rising(ma_coloured, 2) ? 1 : falling_1 ? -1 : nz(clrdirection[1], 1)
// get 3xMA trend direction based on selections.
madirection = ma_fast > ma_medium and ma_medium > ma_slow ? 1 : ma_fast < ma_medium and ma_medium < ma_slow ? -1 : 0
madirection := disableSlowMAFilter ? ma_fast > ma_medium ? 1 : ma_fast < ma_medium ? -1 : 0 : madirection
madirection := disableMediumMAFilter ? ma_fast > ma_slow ? 1 : ma_fast < ma_slow ? -1 : 0 : madirection
madirection := disableFastMAFilter ? ma_medium > ma_slow ? 1 : ma_medium < ma_slow ? -1 : 0 : madirection
madirection := disableFastMAFilter and disableMediumMAFilter ? ma_coloured > ma_slow ? 1 : -1 : madirection
madirection := disableFastMAFilter and disableSlowMAFilter ? ma_coloured > ma_medium ? 1 : -1 : madirection
madirection := disableSlowMAFilter and disableMediumMAFilter ? ma_coloured > ma_fast ? 1 : -1 : madirection
//
// Supertrend Calculations
SUp = hl2 - SFactor * ta.atr(SPd)
SDn = hl2 + SFactor * ta.atr(SPd)
STrendUp = 0.0
STrendDown = 0.0
STrendUp := close[1] > STrendUp[1] ? math.max(SUp, STrendUp[1]) : SUp
STrendDown := close[1] < STrendDown[1] ? math.min(SDn, STrendDown[1]) : SDn
STrend = 0
STrend := close > STrendDown[1] ? 1 : close < STrendUp[1] ? -1 : nz(STrend[1], 1)
Tsl = STrend == 1 ? STrendUp : STrendDown
// Standard Bollinger or KC Bands
basis = ta.sma(ma_src, bbLength)
rangema = ta.sma(ta.tr, bbLength)
stdev_1 = ta.stdev(ma_src, bbLength)
dev = uKC ? bbStddev * rangema : bbStddev * stdev_1
// Calculate Bollinger or KC Channel
upper = basis + dev
lower = basis - dev
// Lookback for previous highest bar index
noiupper = math.abs(ta.highestbars(oiLength))
noilower = math.abs(ta.lowestbars(oiLength))
// ColouredMA OutsideIn
//oiupper = clrdirection<0 and noiupper>0 and highest(oiLength)>upper[noiupper]? 1 : 0
//oilower = clrdirection>0 and noilower>0 and lowest(oiLength)<lower[noilower]? 1 : 0
// MACross OutsideIN
oiMACrossupper = ta.crossunder(ma_fast, ma_coloured) and noiupper > 0 and ta.highest(oiLength) > upper[noiupper] ? 1 : 0
oiMACrosslower = ta.crossover(ma_fast, ma_coloured) and noilower > 0 and ta.lowest(oiLength) < lower[noilower] ? 1 : 0
// === /SERIES VARIABLES ===
// === PLOTTING ===
// All the MA's
plot(ma_coloured, title='Coloured MA', color=clrdirection < 0 ? lightcoral : color.blue, linewidth=3, transp=20)
plot(hideMALines ? na : ma_fast, title='Fast MA', color=color.new(color.lime, 20), linewidth=2)
plot(hideMALines ? na : ma_medium, title='Medium MA', color=color.new(color.red, 10), linewidth=2)
plot(hideMALines ? na : ma_slow, title='Slow MA', color=color.new(color.gray, 10), linewidth=2)
// show 3xMA Trend Direction State.
dcolour = madirection == 1 ? color.green : madirection == -1 ? color.red : color.yellow
plotshape(hideTrendDirection ? na : madirection, title='3xMA Trend Direction', location=location.bottom, style=shape.square, color=dcolour, transp=10)
// SuperTrend
plot(hideSuperTrend ? na : Tsl, color=STrend == 1 ? color.green : color.maroon, style=plot.style_line, linewidth=2, title='SuperTrend')
// Bollinger Bands
p1 = plot(hideBollingerBands ? na : upper, title='BB upper', color=color.new(dodgerblue, 20), linewidth=1)
p2 = plot(hideBollingerBands ? na : lower, title='BB lower', color=color.new(dodgerblue, 20), linewidth=1)
//fill(p1, p2, color=color.new(dodgerblue, 96), title='BB fill')
// === /PLOTTING ===
// === ALERTING ===
// 3xMA Filtering
_3xmabuy = 0
_3xmasell = 0
_3xmabuy := clrdirection == 1 and close > ma_fast and madirection == 1 ? nz(_3xmabuy[1]) + 1 : clrdirection == 1 and madirection == 1 ? nz(_3xmabuy[1]) > 0 ? nz(_3xmabuy[1]) + 1 : 0 : 0
_3xmasell := clrdirection == -1 and close < ma_fast and madirection == -1 ? nz(_3xmasell[1]) + 1 : clrdirection == -1 and madirection == -1 ? nz(_3xmasell[1]) > 0 ? nz(_3xmasell[1]) + 1 : 0 : 0
//
// SuperTrend Filtering
stbuy = 0
stsell = 0
stbuy := clrdirection == 1 and STrend == 1 ? nz(stbuy[1]) + 1 : 0
stsell := clrdirection == -1 and STrend == -1 ? nz(stsell[1]) + 1 : 0
//
// 3xMA & SuperTrend Filtering
//
st3xmabuy = 0
st3xmasell = 0
st3xmabuy := (disable3xMAFilter or _3xmabuy > 0) and stbuy > 0 ? nz(st3xmabuy[1]) + 1 : 0
st3xmasell := (disable3xMAFilter or _3xmasell > 0) and stsell > 0 ? nz(st3xmasell[1]) + 1 : 0
// Bollinger Outside In using ColuredMA direction Filter.
//oibuy = 0
//oisell = 0
//oibuy := clrdirection == 1 and oilower==1? nz(oibuy[1])+1 : 0
//oisell := clrdirection ==-1 and oiupper==1? nz(oisell[1])+1 : 0
// Bollinger Outside In using MACross signal Filter
oiMACrossbuy = 0
oiMACrosssell = 0
oiMACrossbuy := oiMACrosslower == 1 ? nz(oiMACrossbuy[1]) + 1 : 0
oiMACrosssell := oiMACrossupper == 1 ? nz(oiMACrosssell[1]) + 1 : 0
// Bollinger Outside In + 3xMA Filter
oi3xmabuy = 0
oi3xmasell = 0
oi3xmabuy := oiMACrossbuy > 0 and (disable3xMAFilter or madirection == 1) ? nz(oi3xmabuy[1]) + 1 : 0
oi3xmasell := oiMACrosssell > 0 and (disable3xMAFilter or madirection == -1) ? nz(oi3xmasell[1]) + 1 : 0
// Bollinger Outside In + SuperTrend Filter
oistbuy = 0
oistsell = 0
oistbuy := oiMACrossbuy > 0 and STrend == 1 ? nz(oistbuy[1]) + 1 : 0
oistsell := oiMACrosssell > 0 and STrend == -1 ? nz(oistsell[1]) + 1 : 0
// FastMA crossover HullMA and SuperTrend
macrossSTbuy = 0
macrossSTsell = 0
macrossSTbuy := ta.crossover(ma_fast, ma_coloured) and STrend == 1 ? nz(macrossSTbuy[1]) + 1 : 0
macrossSTsell := ta.crossunder(ma_fast, ma_coloured) and STrend == -1 ? nz(macrossSTsell[1]) + 1 : 0
// FastMA crossover HullMA and 3xMA
macross3xMAbuy = 0
macross3xMAsell = 0
macross3xMAbuy := ta.crossover(ma_fast, ma_coloured) and (disable3xMAFilter or madirection == 1) ? nz(macross3xMAbuy[1]) + 1 : 0
macross3xMAsell := ta.crossunder(ma_fast, ma_coloured) and (disable3xMAFilter or madirection == -1) ? nz(macross3xMAsell[1]) + 1 : 0
//
// Check any Alerts set
long = u3xMATrendFilter and _3xmabuy == 1 or uSuperTrendFilter and stbuy == 1 or uBothTrendFilters and st3xmabuy == 1 or uOI3xMAFilter and oi3xmabuy == 1 or uOISTFilter and oistbuy == 1 or uOIMACrossFilter and oiMACrossbuy == 1 or uMACrossSTFilter and macrossSTbuy == 1 or uMACross3xMAFilter and macross3xMAbuy == 1
short = u3xMATrendFilter and _3xmasell == 1 or uSuperTrendFilter and stsell == 1 or uBothTrendFilters and st3xmasell == 1 or uOI3xMAFilter and oi3xmasell == 1 or uOISTFilter and oistsell == 1 or uOIMACrossFilter and oiMACrosssell == 1 or uMACrossSTFilter and macrossSTsell == 1 or uMACross3xMAFilter and macross3xMAsell == 1
//
// If Alert Detected, then Draw Big fat liner
//plotshape(long ? long : na, title='Long Line Marker', location=location.belowbar, style=shape.arrowup, color=buyclr, size=size.auto, text='████████████████', textcolor=buyclr, transp=20)
//plotshape(short ? short : na, title='Short Line Marker', location=location.abovebar, style=shape.arrowdown, color=sellclr, size=size.auto, text='████████████████', textcolor=sellclr, transp=20)
// --- Arrow style signals
// No Filters only Hull Signals
hbuy = 0
hsell = 0
hbuy := clrdirection == 1 ? nz(hbuy[1]) + 1 : 0
hsell := clrdirection == -1 ? nz(hsell[1]) + 1 : 0
// FastMA crossover HullMA
macrossbuy = 0
macrosssell = 0
macrossbuy := ta.crossover(ma_fast, ma_coloured) ? nz(macrossbuy[1]) + 1 : 0
macrosssell := ta.crossunder(ma_fast, ma_coloured) ? nz(macrosssell[1]) + 1 : 0
//
along = disableAllFilters and hbuy == 1 or uMACrossFilter and macrossbuy == 1
ashort = disableAllFilters and hsell == 1 or uMACrossFilter and macrosssell == 1
//
// If ColouredMA or MACross then draw big arrows
//plotarrow(along ? 1 : ashort ? -1 : na, title='ColouredMA or MACross Arrow', colorup=color.new(buyColour, 20), colordown=color.new(sellColour, 20), maxheight=100, minheight=50)
//----------Input Bannos----------------------------------------------------------------------------------------------------------//
var triggerlong = 0
var triggershort = 0
var up = 0
var down = 0
var bool longe = 0
var bool shorte = 0
var SL = 0
var entryvalueup = 0.00
var entryvaluedown = 0.00
var SLfactor = 0.5/100
var SLup = 0.00
var SLdown = 0.00
var longbuffer = 0
var shortbuffer = 0
//RSI parameters
overbought = input(70, title="overbought value")
oversold = input(30, title="oversold value")
sellRsi = ta.rsi(close, 11) > overbought
buyRsi = ta.rsi(close, 11) < oversold
var tampon_overbought = 0
var tampon_oversold = 0
//condition to use RSI
if sellRsi
tampon_overbought := 1
if buyRsi
tampon_oversold := 1
//close condition SL
if entryvalueup > 0 and low < SLup
SL := 1
//Chaikin Volatility Strategy indicator if Volatility > 0 then Long or short, otherweise no
Length = input.int(10, '', minval=1)
ROCLength = input.int(12, '',minval=1)
Trigger = input.int(0, '',minval=0)
hline(0)
hline(Trigger)
xPrice1 = high
xPrice2 = low
xPrice = xPrice1 - xPrice2
xROC_EMA = ta.roc(ta.ema(xPrice, Length), ROCLength)
var pos = 0
if xROC_EMA < Trigger
pos := 1
nz(pos[1], 0)
if xROC_EMA > Trigger
pos := -1
nz(pos[1], 0)
//-----------------------------------------------------------------------------
// plot(xROC_EMA, title="Chaikin Volatility Strategy")
// plot(longe ? 1 : 0, 'longe')
// plot(shorte ? 1 : 0, 'shorte')
plot(entryvalueup, 'entree Long')
plot(SLup, 'SL Long')
plot(entryvaluedown, 'entree Short')
plot(SLdown, 'SL Short')
// plot(entryvalueup, 'entrryvalueup')
// plot(entryvaluedown, 'entrryvaluedown')
// plot(up, 'up')
//plot(down, 'down')
// plot(ta.rsi(close, 11), 'RSI')
// plot(tampon_overbought, 'tampon Overbought')
// plot(tampon_oversold, 'tampon Oversold')
// plot( triggerlong, ' triggerlong')
//plot( triggershort, ' triggershort')
// plot(sellRsi ? 1 : 0, 'sellRsi')
//close condition TP
closelong = (tampon_overbought == 1 and ta.rsi(close, 11) < 63.8 or shorte or SL == 1)
closeshort = (tampon_oversold == 1 and ta.rsi(close, 11) > 36.2 or longe or SL == 1)
//reinit after long Close
if closelong
up := 0
longe := 0
tampon_overbought := 0
triggerlong := 0
SL := 0
entryvalueup := 0
//reinit after short Close
if closeshort
down := 0
shorte := 0
tampon_oversold := 0
triggershort := 0
SL := 0
entryvaluedown := 0
//condition sous sur MA SLOW to start
if close < ma_medium
triggerlong := 0
triggershort := 1
if close > ma_medium
triggershort := 0
triggerlong := 1
// Update alarm conditions
if long or along
longbuffer := 1
if short or ashort
shortbuffer := 1
longe := longbuffer and triggerlong and xROC_EMA > 3.5
shorte := shortbuffer and triggershort and xROC_EMA > 3.5
// // var longe = long ? 1 : 0
// // var shorte = short ? 1 : 0
if longe == 1 and close > open
up := 1
down := 0
entryvalueup :=close
SLup := close - 0.7*(high - low)
SLdown := 0
longbuffer := 0
if shorte == 1 and close < open
down := 1
up := 0
entryvaluedown := close
SLdown := close + 0.7*(high - low)
SLup := 0
shortbuffer := 0
strategy.entry('longe', strategy.long, when = up)
strategy.entry('shorte', strategy.short, when = down)
strategy.close('longe', when= closelong)
strategy.close('shorte', when= closeshort)
// === /ALERTING ===
// === ALARMS ===
//
alertcondition(up or down or closelong or closeshort, title='Signal Alert', message='SIGNAL')
alertcondition(up, title='Long Alert', message='LONG')
alertcondition(down, title='Short Alert', message='SHORT')
alertcondition(closelong, title='close Long Alert', message='Close LONG')
alertcondition(closeshort, title='close Short Alert', message='Close SHORT')
// === /ALARMS ===
//EOF
Published by ChaoZhang on the FMZ strategy square · last modified 2022-05-09. 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.
/agenkit build a production-grade trading bot with a backtest engine, risk controls and paper trading by default from strategies/Big-Snapper-Alerts-R30-Chaiking-Volatility-condition-TP-RSI.md- npx agenkit install engineering-kit in your project
- Paste the command into your agent and approve each phase
- 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
- Rose Cross Star Dual Indicator Volatility StrategyPine Script · Volatility · 1d
- Multi Indicator Volatility Trading RSI EMA ATR StrategyPine Script · Volatility · 3m
- Dynamic Volatility Trading System Multi Timeframe Nested Technical Indicator Strategy with Extreme Market Condition Monitoring for FuturesPine Script · Volatility · 1h
- Dual MA Indicator Oscillating Price Tracking StrategyPine Script · Breakout · 2h
- Dual directional Trailing Stop Moving Average Trend StrategyPine Script · Trend following · 1m
- Volatility Capture RSI Bollinger Band StrategyPine Script · Volatility · 15m