A.I.Driven Aggressive Intraday Models For 20190610(New to TradingView and trying to learn how best to share our daily Model Trades with the awesome community here. Still learning the tools here and may not be using the best approaches to publish ideas/charts/scirpts - please help us learn by suggesting best practices)
>>>>> Model Trades Published pre-market this morning at tradersai blogspot <<<<<
***** Medium-Frequency Models*****: For today, Monday 06/10, our medium-frequency models indicate going long on a break above 2903 with a 10-point trailing stop, and going short on a break below 2845 with an 8-point trailing stop.
---Note: For the trades to trigger, the breaks should occur during the regular session hours starting at 9:30am ET. By design, these models do NOT open any new positions after 3:45pm. Only one open position at any given time.---
***** Aggressive Intraday Models *****: For today, Monday 06/10, our aggressive intraday models indicate going long on a break above 2895 or 2886 or 2874 with an 8-point trailing stop, and going short on a break below 2890 or 2882 or 2870 with a 6-point trailing stop.
---- Note: For the trades to trigger, the breaks should occur during regular session hours starting at 9:30am ET. Due to the intraday nature of these aggressive models, they indicate closing any open trades at 3:55pm and remaining flat into the session close. No opening of new positions after 3:45pm. Only one open position at any given time.----
Поиск скриптов по запросу "a股板块+沪深两市+股价不超过10元的股票+技术形态好"
Moving Gain Loss PercentTracks the percentage gain/loss in three ranges:
single candle (can be turned on or off)
custom range of candles
custom range of candles
For example, with a range of 3 candles, and the serie:
1 - close 10
2 - close 5
3 - close 20
The moving gain would be:
1 - close 10 - gain 10, infinite%
2 - close 5 - gain 5, infinite%
3 - close 18 - gain 8, 80%
Or, for example if the range is 12 candles on a monthly chart, then the result is the Year-To-Date gain/loss plotted as a percentage.
Sexy RSI for sexy tradersHello fellow sexy traders.
I was tired of constantly having to add my own horizontals/MAs to the default RSI so I decided to make this modification.
The default settings include channels from 40-80 (green horizontals) for a bullish range, and 20-60 (red horizontals) for the bearish range.
Also includes white line at 50 level, and blue horizontals at extremes (90 and 10).
If RSI stays in one of the red or green range that can signify the trend direction, as directed by Andrew Cardwell (inventor of the RSI).
If you wish for other levels to be included, just let me know! Comment on here or dm me on twitter @boss_charts and I can add the settings for you, so all you have to do is click a button and it will set it to your desired config. I want this to be a tool that is useful for heavy traders to save them time.
Additionally, in order to tell the level of the RSI and how overextended it might be, I added the setting for the RSI to change color depending on its level. Current settings are as follows:
Normal RSI (30-70) = PURPLE
Conventional Overbought/Oversold (30-20 + 70-80) = RED
1st extended (20-15 + 80-85) = PINK
2nd extended (15-10 + 85-90) = ORANGE
VERY EXTENDED (<10 + >90) = YELLOW
That way you can get an idea of how drastic a move is by the color alone. According to Dr. Cardwell, a drastic move to over/under extended can be a sign of strength.
Finally, there are the default MAs added that Mr. Cardwell defines as useful for defining the trend. These being the 9 MA and 45 EMA/WMA.
The strategy with these is to have the MAs on both price and RSI. If the 9MA is above the 45 MA on both price and RSI, then this is bullish and you can look for longs.
Conversely, if the 9 is below the 45 on both RSI and price that is bearish, and you can look for shorts.
I added the background color change for the points where the MAs cross each other, so you do not have to have the MAs fogging up your charts to know where they are relative to one another. This is similar to my MA cross indicator which contains the same functionality.
Never financial advice. Backtest it for yourself and find MA configurations that work for you.
Enjoy! Feel free to send feedback/requests whenever.
Multi SMA EMA WMA HMA BB (5x8 MAs Bollinger Bands) MAX MTF - RRBMulti SMA EMA WMA HMA 4x7 Moving Averages with Bollinger Bands MAX MTF by RagingRocketBull 2019
Version 1.0
All available MAX MTF versions are listed below (They are very similar and I don't want to publish them as separate indicators):
ver 1.0: 4x7 = 28 MTF MAs + 28 Levels + 3 BB = 59 < 64
ver 2.0: 5x6 = 30 MTF MAs + 30 Levels + 3 BB = 63 < 64
ver 3.0: 3x10 = 30 MTF MAs + 30 Levels + 3 BB = 63 < 64
ver 4.0: 5(4+1)x8 = 8 CurTF MAs + 32 MTF MAs + 20 Levels + 3 BB = 63 < 64
ver 5.0: 6(5+1)x6 = 6 CurTF MAs + 30 MTF MAs + 24 Levels + 3 BB = 63 < 64
ver 6.0: 4(3+1)x10 = 10 CurTF MAs + 30 MTF MAs + 20 Levels + 3 BB = 63 < 64
Fib numbers: 8, 13, 21, 34, 55, 89, 144, 233, 377
This indicator shows multiple MAs of any type SMA EMA WMA HMA etc with BB and MTF support, can show MAs as dynamically moving levels.
There are 4 MA groups + 1 BB group, a total of 4 TFs * 7 MAs = 28 MAs. You can assign any type/timeframe combo to a group, for example:
- EMAs 9,12,26,50,100,200,400 x H1, H4, D1, W1 (4 TFs x 7 MAs x 1 type)
- EMAs 8,13,21,30,34,50,55,89,100,144,200,233,377,400 x M15, H1 (2 TFs x 14 MAs x 1 type)
- D1 EMAs and SMAs 8,13,21,30,34,50,55,89,100,144,200,233,377,400 (1 TF x 14 MAs x 2 types)
- H1 WMAs 13,21,34,55,89,144,233; H4 HMAs 9,12,26,50,100,200,400; D1 EMAs 12,26,89,144,169,233,377; W1 SMAs 9,12,26,50,100,200,400 (4 TFs x 7 MAs x 4 types)
- +1 extra MA type/timeframe for BB
There are several versions: Simple, MTF, Pro MTF, Advanced MTF, MAX MTF and Ultimate MTF. This is the MAX MTF version. The Differences are listed below. All versions have BB
- Simple: you have 2 groups of MAs that can be assigned any type (5+5)
- MTF: +2 custom Timeframes for each group (2x5 MTF) +1 TF for BB, TF XY smoothing
- Pro MTF: 4 custom Timeframes for each group (4x3 MTF), 1 TF for BB, MA levels and show max bars back options
- Advanced MTF: +4 extra MAs/group (4x7 MTF), custom Ticker/Symbols, Timeframe <>= filter, Remove Duplicates Option
- MAX MTF: +2 subtypes/group, packed to the limit with max possible MAs/TFs: 4x7, 5x6, 3x10, 4(3+1)x10, 5(4+1)x8, 6(5+1)x6
- Ultimate MTF: +individual settings for each MA, custom Ticker/Symbols
MAX MTF version tests the limits of Pinescript trying to squeeze as many MAs/TFs as possible into a single indicator.
It's basically a maxed out Advanced version with subtypes allowing for mixed types within a group (i.e. both emas and smas in a single group/TF)
Pinescript has the following limits:
- max 40 security calls (6 calls are reserved for dupe checks and smoothing, 2 are used for BB, so only 32 calls are available)
- max 64 plot outputs (BB uses 3 outputs, so only 61 plot outputs are available)
- max 50000 (50kb) size of the compiled code
Based on those limits, you can only have the following MAs/TFs combos in a single script:
1. 4x7, 5x6, 3x10 - total number of MTF MAs must always be <= 32, and you can still have BB and Num Levels = total MAs, without any compromises
2. 5(4+1)x8, 6(5+1)x6, 4(3+1)x10 - you can use the Current Symbol/Timeframe as an extra (+1) fixed TF with the same number of MTF MAs
- you don't need to call security to display MAs on the Current Symbol/Timeframe, so the total number of MTF MAs remains the same and is still <= 32
- to fit that many MAs into the max 64 plot outputs limit you need to reduce the number of levels (not every MA Group will have corresponding levels)
Features:
- 4x7 = 28 MAs of any type
- 4x MTF groups with XY step line smoothing
- +1 extra TF/type for BB MAs
- 2 MA subtypes within each group/TF
- 4x7 = 28 MA levels with adjustable group offsets, indents and shift
- supports any existing type of MA: SMA, EMA, WMA, Hull Moving Average (HMA)
- custom tickers/symbols for each group
- show max bars back option
- show/hide both groups of MAs/levels/BB and individual MAs
- timeframe filter: show only MAs/Levels with TFs <>= Current TF
- hide MAs/Levels with duplicate TFs
- support for custom TFs that are not available in free accounts: 2D, 3D etc
- support for timeframes in H: H, 2H, 4H etc
Notes:
- Uses timeframe textbox instead of input resolution dropdown to allow for 240 120 and other custom TFs
- Uses symbol textbox instead of input symbol to avoid establishing multiple dummy security connections to the current ticker - otherwise empty symbols will prevent script from running
- Possible reasons for missing MAs on a chart:
- there may not be enough bars in history to start plotting it. For example, W1 EMA200 needs at least 200 bars on a weekly chart.
- for charts with low/fractional prices i.e. 0.00002 << 0.001 (default Y smoothing step) decrease Y smoothing as needed (set Y = 0.0000001) or disable it completely (set X,Y to 0,0)
- for charts with high price values i.e. 20000 >> 0.001 increase Y smoothing as needed (set Y = 10-20). Higher values exceeding MAs point density will cause it to disappear as there will be no points to plot. Different TFs may require diff adjustments
- TradingView Replay Mode UI and Pinescript security calls are limited to TFs >= D (D,2D,W,MN...) for free accounts
- attempting to plot any TF < D1 in Replay Mode will only result in straight lines, but all TFs will work properly in history and real-time modes. This is not a bug.
- Max Bars Back (num_bars) is limited to 5000 for free accounts (10000 for paid), will show error when exceeded. To plot on all available history set to 0 (default)
- Slow load/redraw times. This indicator becomes slower, its UI less responsive when:
- Pinescript Node.js graphics library is too slow and inefficient at plotting bars/objects in a browser window. Code optimization doesn't help much - the graphics engine is the main reason for general slowness.
- the chart has a long history (10000+ bars) in a browser's cache (you have scrolled back a couple of screens in a max zoom mode).
- Reload the page/Load a fresh chart and then apply the indicator or
- Switch to another Timeframe (old TF history will still remain in cache and that TF will be slow)
- in max possible zoom mode around 4500 bars can fit on 1 screen - this also slows down responsiveness. Reset Zoom level
- initial load and redraw times after a param change in UI also depend on TF. For example: D1/W1 - 2 sec, H1/H4 - 5-6 sec, M30 - 10 sec, M15/M5 - 4 sec, M1 - 5 sec. M30 usually has the longest history (up to 16000 bars) and W1 - the shortest (1000 bars).
- when indicator uses more MAs (plots) and timeframes it will redraw slower. Seems that up to 5 Timeframes is acceptable, but 6+ Timeframes can become very slow.
- show_last=last_bars plot limit doesn't affect load/redraw times, so it was removed from MA plot
- Max Bars Back (num_bars) default/custom set UI value doesn't seem to affect load/redraw times
- In max zoom mode all dynamic levels disappear (they behave like text)
- Dupe check includes symbol: symbol, tf, both subtypes - all must match for a duplicate group
- For the dupe check to work correctly a custom symbol must always include an exchange prefix. BB is not checked for dupes
Good Luck! Feel free to learn from/reuse the code to build your own indicators.
APEX - WaveTrend [v1]WaveTrend is a smoothed oscillator which enables it to detect true reversals in an extremely accurate manner. The beauty of this indicator is that does not generate signals during choppy sideways markets.
The basic settings are 10 / 3 / 4 these are very aggressive settings, that will generate a lot of signals in all even not so volatile markets. If you need high-quality signals you settings close to 10 / 3 /21. The strongest buy/sell signals are given when the cross occurs above or below the threshold. In the 10 / 3 / 4 you threshold for buy should be around -90 values. If you use the very smoothed variant the threshold will be around -45 to -50 values.
This indicator will be first available in APEX v1 currently being beta tested.
Schaff Trend Cycle 1.1 with signal codingThis is an edit of Lazy Bear's Schaff Trend Cycle original description here. I've added in the syntax so that you can generate an alert when it crosses the threshold in either direction. Just tick the box to show threshold crosses.
More background on the indicator is here.
www.investopedia.com
Other common settings are fast 23 slow 53 or 10/30, 3/10. I have also set it to 9/20 for test purposes. They have different pluses and minuses on different timeframes.
Double EMA & ALMA StrategyThe ALMA (50 period) acts as the main trend filter, meaning that long positions are taken above the ALMA and short positions are taken below the ALMA. For instance, the 5 and 10 period exponential moving averages are added on the chart to give early signals to the trend.
Therefore, when the 5/10 EMA triggers a bullish crossover, long signals are taken when price is above the ALMA, likewise, when the 5/10 EMA triggers a bearish crossover, short signals are taken when price is below the ALMA.
Find out optimal values by trying. May not produce accurate results in horizontal markets. Thank you.
Inverted Yield Curve with VIX Fear IndexUS 2 year and US 10 year comparison, inverted yield curve with VIX. I use this on a weekly chart with 2 moving averages, the 40 week (ma200 daily) and the 520 week (10 year median).
The bottom histogram is the VIX and the plot is the yield curve. When the VIX is above a certain level (you can set it in settings) and the ýield curve is close to or at inversion the background goes red.
The last seven recessions were preceded by an inverted yield curve. Here I combined the two main fear indexes, the VIX and the run for safe US treasuries (Inverted Yield Curve).
This is preset to the 2 year and 10 year US bond, weekly, and the normal VIX ticker but you can set it to whatever you like.
Published with source code for anyone to modify. Please comment below if you do so! This is the second in a series of indicators I intend to publish as a package of economic recoverty/recession symptom indicators.
Follow me for updates, next one up is commodities with dr Copper and oil!
Advanced Larry Williams 9.2- By EduHit rate greater than Setup 9.1
However, the stop of this setup becomes more expensive in certain situations.
PURCHASE SIGN
1 - Paper comes in a bullish trend in the operational term to be operated.
2 - Exponential moving average of 9 upward periods.
3 - Wait for a candle to make the largest closing (candle reference).
4 - If the next candle CLOSES below the minimum of the candle reference the setup is armed.
5 - Mark the candle maxim that closed below the reference. It's the trigger!
6 - If the next candle exceeds this maximum by 1 cent the trade is triggered. Put the stop loss at the low of the candle that closed below (0.01 to 0.10 below)
7 - If the next candle does not fire, let's lower the trigger to the lower maximums, SINCE the mm9exp does not turn down.
8 - It exceeded the maximum we will have the entrance.
9 - Original stop-loss in the minimum of the candle we set the maximum activated.
SIGN OF SALE
1 - Paper comes in a downtrend in the operating period to be operated.
2 - Exponential moving average of 9 periods descending.
3 - Wait for a candle that makes the lowest closing (candle reference).
4 - If the next candle CLOSE above the maximum of the reference candle the setup is armed.
5 - Bookmark the candle that closed above the reference. It's the trigger!
6 - If the next candle breaks this minimum, the trade is triggered.
7 - Place the stop-loss at the maximum of the candle that closed up.
8 - If the next candle does not trigger, we will raise the trigger to the highest minimums SINCE the exponential moving average of 9 periods does not turn upwards.
9 - It broke the minimum we will have the entrance.
10 - Stop-loss original in the maximum of the candle that we set the minimum activated.
*********************************************************************************************************************************************************
Índice de acerto Superior ao Setup 9.1
Porém o stop deste setup acaba se tornando mais caro em determinadas situações.
SINAL DE COMPRA
1 - Papel vem em tendência de alta no prazo operacional a ser operado.
2 - Média móvel exponencial de 9 períodos ascendente.
3 - Aguardar um candle que faça o maior fechamento (candle referência).
4 - Se o próximo candle FECHAR abaixo da mínima do candle referência o setup está armado.
5 - Marcar a máxima do candle que fechou abaixo do referência. É o gatilho!
6 - Se o próximo candle superar essa máxima em 1 centavo o trade é acionado. Colocar o stop-loss na mínima do candle que fechou abaixo (0,01 a 0,10 abaixo)
7 - Se o próximo candle não acionar, vamos abaixando o gatilho para as máximas menores DESDE QUE a mm9exp não vire para baixo.
8 - Superou a máxima teremos a entrada.
9 - Stop-loss original na mínima do candle que marcamos a máxima ativada.
SINAL DE VENDA
1 - Papel vem em tendência de baixa no prazo operacional a ser operado.
2 - Média móvel exponencial de 9 períodos descendente.
3 - Aguardar um candle que faça o menor fechamento (candle referência).
4 - Se o próximo candle FECHAR acima da máxima do candle referência o setup está armado.
5 - Marcar a mínima do candle que fechou acima do referência. É o gatilho!
6 - Se o próximo candle romper essa mínima o trade é acionado.
7 - Colocar o stop-loss na máxima do candle que fechou acima.
8 - Se o próximo candle não acionar, vamos levantando o gatilho para as mínimas maiores DESDE QUE a média móvel exponencial de 9 períodos não vire para cima.
9 - Rompeu a mínima teremos a entrada.
10 - Stop-loss original na máxima do candle que marcamos a mínima ativada.
Reset Every (Price)Someone requested a high/low price indicator that would reset the "remembered" prices daily. I started out doing just that, and then decided to make it much more configurable.
Choose the units (minutes, hours, days, weeks, months) and the number of those units, and this will reset the highest/lowest value remembered to the current values on your chosen time interval.
This should work with any time interval you desire, within reason...asking for resets every 4000 hours on a monthly chart will probably not work.
GE, monthly, every 7 months:
Ford, weekly, every 18 months:
Dow Jones Industrial Average, weekly, every 90 days:
LTCBTC, daily, every 10 days:
ETHUSD, 30 minutes, every 10 days:
BTCUSD, 1 minute, every 10 hours:
EURUSD, 1 minute, every 50 minutes:
Also, I am about to publish another version of this with just one source input that can be applied to any indicator...stay tuned!
XPloRR MA-Trailing-Stop StrategyXPloRR MA-Trailing-Stop Strategy
Long term MA-Trailing-Stop strategy with Adjustable Signal Strength to beat Buy&Hold strategy
None of the strategies that I tested can beat the long term Buy&Hold strategy. That's the reason why I wrote this strategy.
Purpose: beat Buy&Hold strategy with around 10 trades. 100% capitalize sold trade into new trade.
My buy strategy is triggered by the fast buy EMA (blue) crossing over the slow buy SMA curve (orange) and the fast buy EMA has a certain up strength.
My sell strategy is triggered by either one of these conditions:
the EMA(6) of the close value is crossing under the trailing stop value (green) or
the fast sell EMA (navy) is crossing under the slow sell SMA curve (red) and the fast sell EMA has a certain down strength.
The trailing stop value (green) is set to a multiple of the ATR(15) value.
ATR(15) is the SMA(15) value of the difference between the high and low values.
The scripts shows a lot of graphical information:
The close value is shown in light-green. When the close value is lower then the buy value, the close value is shown in light-red. This way it is possible to evaluate the virtual losses during the trade.
the trailing stop value is shown in dark-green. When the sell value is lower then the buy value, the last color of the trade will be red (best viewed when zoomed)(in the example, there are 2 trades that end in gain and 2 in loss (red line at end))
the EMA and SMA values for both buy and sell signals are shown as a line
the buy and sell(close) signals are labeled in blue
How to use this strategy?
Every stock has it's own "DNA", so first thing to do is tune the right parameters to get the best strategy values voor EMA , SMA, Strength for both buy and sell and the Trailing Stop (#ATR).
Look in the strategy tester overview to optimize the values Percent Profitable and Net Profit (using the strategy settings icon, you can increase/decrease the parameters)
Then keep using these parameters for future buy/sell signals only for that particular stock.
Do the same for other stocks.
Important : optimizing these parameters is no guarantee for future winning trades!
Here are the parameters:
Fast EMA Buy: buy trigger when Fast EMA Buy crosses over the Slow SMA Buy value (use values between 10-20)
Slow SMA Buy: buy trigger when Fast EMA Buy crosses over the Slow SMA Buy value (use values between 30-100)
Minimum Buy Strength: minimum upward trend value of the Fast SMA Buy value (directional coefficient)(use values between 0-120)
Fast EMA Sell: sell trigger when Fast EMA Sell crosses under the Slow SMA Sell value (use values between 10-20)
Slow SMA Sell: sell trigger when Fast EMA Sell crosses under the Slow SMA Sell value (use values between 30-100)
Minimum Sell Strength: minimum downward trend value of the Fast SMA Sell value (directional coefficient)(use values between 0-120)
Trailing Stop (#ATR): the trailing stop value as a multiple of the ATR(15) value (use values between 2-20)
Example parameters for different stocks (Start capital: 1000, Order=100% of equity, Period 1/1/2005 to now) compared to the Buy&Hold Strategy(=do nothing):
BEKB(Bekaert): EMA-Buy=12, SMA-Buy=44, Strength-Buy=65, EMA-Sell=12, SMA-Sell=55, Strength-Sell=120, Stop#ATR=20
NetProfit: 996%, #Trades: 6, %Profitable: 83%, Buy&HoldProfit: 78%
BAR(Barco): EMA-Buy=16, SMA-Buy=80, Strength-Buy=44, EMA-Sell=12, SMA-Sell=45, Strength-Sell=82, Stop#ATR=9
NetProfit: 385%, #Trades: 7, %Profitable: 71%, Buy&HoldProfit: 55%
AAPL(Apple): EMA-Buy=12, SMA-Buy=45, Strength-Buy=40, EMA-Sell=19, SMA-Sell=45, Strength-Sell=106, Stop#ATR=8
NetProfit: 6900%, #Trades: 7, %Profitable: 71%, Buy&HoldProfit: 2938%
TNET(Telenet): EMA-Buy=12, SMA-Buy=45, Strength-Buy=27, EMA-Sell=19, SMA-Sell=45, Strength-Sell=70, Stop#ATR=14
NetProfit: 129%, #Trade
Renko Price Bars Overlay// Shows the price renko bars (or range bars) instead of the PERIOD renko
// bars that are integrated into Trading View. The normal renko bars that
// Trading View offers only consider the drawing of a new brick when the
// price closes above or below the required brick size. This can produce
// misleading charts since depending on the time interval of a chart, new
// bricks may or may not be drawn. True price renko bars will draw a new
// brick immediately upon the price exceeding the next target brick size.
// When running this script in "Traditional" mode, the painting of the
// brick overlay band is INDEPENDENT of the chart interval. If price
// exceeds the required target price for the next brick, the band is
// updated immediately, instead of waiting for the price bar on the chart
// interval to close first. The brick starting anchor point will attempt
// to be a "nice number" at a round interval for the chart ticker. For
// example, if viewing EURUSD with the box size equal to 50 ticks/pips,
// the open and close prices will take the form of 1.2100, 1.2150, 1.2200,
// 1.2250, and so on. This is the same behavior as the normal traditional
// Renko bars in Trading View and other major trading platforms such as
// Meta Trader.
// Use the tick size in traditional mode to specify the block size, in
// ticks. This may give interesting results in FOREX pairs... as the tick
// size in Trading View may be 0.00001 instead of the normal pip size of
// 0.0001, so a 10 pip block size may be '100', and not the expected '10'.
// FOREX futures should work in the manner expected, a 10 pip block size
// will indeed equal 0.0010.
// The "ATR" mode functions differently than the Trading View built in
// version. The block size is updated each time the range is exceeded.
// In Trading View, when using the ATR mode, the ATR is the last ATR
// value calculated on the ENTIRE data interval, and is applied to all
// past data. You can see this when you press the '+' sign of the ticker
// in the top left of the chart window and you will see the brick size
// as a constant, the brick size is not a function of the ever changing
// ATR value of the price action. The block size of this script is not
// updated for each price candle (i.e. each 1HR on a 1HR chart), instead
// it is updated only when the price thresholds are exceeded requiring a
// the band to be updated. At that point the current ATR is considered
// and the brick size is updated.
// Options exist to show the current high and low of the brick, and to
// show the required levels that the price must exceed to draw a new
// brick and update the band.
Please leave comments if you notice any bugs or would like any new features added. I don't find much use for plotting the H/L of the current renko candle, but I have seen some request it in the past.
Cheers.
EMA Indicators with BUY sell SignalCombine 3 EMA indicators into 1. Buy and Sell signal is based on
- Buy signal based on 20 Days Highest High resistance
- Sell signal based on 10 Days Lowest Low support
Input :-
1 - Short EMA (20), Mid EMA (50) and Long EMA (200)
2 - Resistance (20) = 20 Days Highest High line
3 - Support (10) = 10 Days Lowest Low line
Volume Range EventsChanges in the feelings (positive, negative, neutral) in the market concerning the valuation of an instrument are often preceded with sudden outbursts of buying and selling frenzies. The aim of this indicator is to report such outbursts. We can see them as expansions of volume, sometimes 10 times more than usual. and as extensions of the trading range, also sometimes 10 times more than usual (e.g. usual range is 10 cent suddenly a whole dollar.) The changes are calculated in such a way that these fit between plus and minus 100 percent, the bars are scaled in some sort of logarithmic way. The Emoline is the same as the one in the True Balance of Power indicator, which I already published
ONLY RISES ARE EVENTS
Sometimes analysts are tempted to give meaning to low volume or small ranges. These simply mean that the market has little interest in trading this instrument. I believe that in such cases the trader needs to wait for expansion and extension events to happen, then he can make a better guess of where the market is heading. As events often mark the beginning or ending of a trend, this indicator provides an early and clear signal, because it doesn’t bother us about non-events.
WHAT IS USUAL?
If the algorithm would use an average as a normal to scale volume or range events, then previous peaks will act as spoilers by making the average so high that a following peak is scaled too small. I developed a function, usual() , that kicks out all extremes of a ‘population of values’ and which returns the average of the non-extreme values. It can be called with any serial. This function is called by both algorithms that report volume and range peaks, which guarantees that the results are really comparable. As this function has a fixed look back of 8 periods, we might state that ‘usual’ is a short lived relative value. I think this doesn’t matter for the practical use of the indicator.
COLORING AND INTERPRETATION
I follow the categories in the ‘Better Volume Indicator’, published by LeazyBear, these are:
1. Climactic Volumes, event >40 % (this means peak is 1.5 X usual)
LIME: Climax Buying Volume, direction up, range event also > 30 %
RED: Climax Selling Volume, direction down, range event also > 30 %
AQUA: Climax Churning Volume, both directions, range event < 30%
2. Smaller Volumes, event <40 %
GREEN: Supportive Volume, both directions, if combined with range event
BLUE: Churning Volume, both directions, if not combined with range event (Professional Trading)
3. Just Range Events
BLACK histogram bars (Amateurish Trading)
Forex Master v4.0 (EUR/USD Mean-Reversion Algorithm)DESCRIPTION
Forex Master v4.0 is a mean-reversion algorithm currently optimized for trading the EUR/USD pair on the 5M chart interval. All indicator inputs use the period's closing price and all trades are executed at the open of the period following the period where the trade signal was generated.
There are 3 main components that make up Forex Master v4.0:
I. Trend Filter
The algorithm uses a version of the ADX indicator as a trend filter to trade only in certain time periods where price is more likely to be range-bound (i.e., mean-reverting). This indicator is composed of a Fast ADX and a Slow ADX, both using the same look-back period of 50. However, the Fast ADX is smoothed with a 6-period EMA and the Slow ADX is smoothed with a 12-period EMA. When the Fast ADX is above the Slow ADX, the algorithm does not trade because this indicates that price is likelier to trend, which is bad for a mean-reversion system. Conversely, when the Fast ADX is below the Slow ADX, price is likelier to be ranging so this is the only time when the algorithm is allowed to trade.
II. Bollinger Bands
When allowed to trade by the Trend Filter, the algorithm uses the Bollinger Bands indicator to enter long and short positions. The Bolliger Bands indicator has a look-back period of 20 and a standard deviation of 1.5 for both upper and lower bands. When price crosses over the lower band, a Long Signal is generated and a long position is entered. When price crosses under the upper band, a Short Signal is generated and a short position is entered.
III. Money Management
Rule 1 - Each trade will use a limit order for a fixed quantity of 50,000 contracts (0.50 lot). The only exception is Rule
Rule 2 - Order pyramiding is enabled and up to 10 consecutive orders of the same signal can be executed (for example: 14 consecutive Long Signals are generated over 8 hours and the algorithm sends in 10 different buy orders at various prices for a total of 350,000 contracts).
Rule 3 - Every order will include a bracket with both TP and SL set at 50 pips (note: the algorithm only closes the current open position and does not enter the opposite trade once a TP or SL has been hit).
Rule 4 - When a new opposite trade signal is generated, the algorithm sends in a larger order to close the current open position as well as open a new one (for example: 14 consecutive Long Signals are generated over 8 hours and the algorithm sends in 10 different buy orders at various prices for a total of 350,000 contracts. A Short Signal is generated shortly after the 14th Long Signal. The algorithm then sends in a sell order for 400,000 contracts to close the 350,000 contracts long position and open a new short position of 50,000 contracts).
My5min1. Follow the instructions for entry and exit exactly as above. Don’t second guess, or assume/presume anything.
2. Avoid entering the trade when the price is temporarily above /below 10 day MA, but the price candle hasn’t fully formed yet. Enter the trade only after the price candle closes above/below the 10 day MA.
3. Exit the trade immediately when the price candle closes above/below 10 day MA in the direction opposite to the trade. Don’t remain in the trade wishing it to turn in your favor.
4. Never ever trade in the opposite direction of the market. i.e. don’t buy when the price is below 200 day MA and sell when the price is above 200 day MA.
5. Take profits when limit is reached. Don’t be greedy and keep on increasing the target. Remember- A bird in hand is worth two in the bush.
MACD, backtest 2015+ only, cut in half and doubledThis is only a slight modification to the existing "MACD Strategy" strategy plugin!
found the default MACD strategy to be lacking, although impressive for its simplicity. I added "year>2014" to the IF buy/sell conditions so it will only backtest from 2015 and beyond ** .
I also had a problem with the standard MACD trading late, per se. To that end I modified the inputs for fast/slow/signal to double. Example: my defaults are 10, 21, 10 so I put 20, 42, 20 in. This has the effect of making a 30min interval the same as 1 hour at 10,21,10. So if you want to backtest at 4hr, you would set your time interval to 2hr on the main chart. This is a handy way to make shorter time periods more useful even regardless of strategy/testing, since you can view 15min with alot less noise but a better response.
Used on BTCCNY OKcoin, with the chart set at 45 min (so really 90min in the strategy) this gave me a percent profitable of 42% and a profit factor of 1.998 on 189 trades.
Personally, I like to set the length/signals to 30,63,30. Meaning you need to triple the time, it allows for much better use of shorter time periods and the backtests are remarkably profitable. (i.e. 15min chart view = 45min on script, 30min= 1.5hr on script)
** If you want more specific time periods you need to try plugging in different bar values: replace "year" with "n" and "2014" with "5500". The bars are based on unix time I believe so you will need to play around with the number for n, with n being the numbers of bars.
Stochastic + Bollinger Bands Multi-Timeframe StrategyThis strategy fuses the Stochastic Oscillator from the 4-hour timeframe with Bollinger Bands from the 1-hour timeframe, operating on a 10-hour chart to capture a unique volatility rhythm and temporal alignment discovered through observational alpha.
By blending momentum confirmation from the higher timeframe with short-term volatility extremes, the strategy leverages what some traders refer to as “rotating volatility” — a phenomenon where multi-timeframe oscillations sync to reveal hidden trade opportunities.
🧠 Strategy Logic
✅ Long Entry Condition:
Stochastic on the 4H timeframe:
%K crosses above %D
Both %K and %D are below 20 (oversold zone)
Bollinger Bands on the 1H timeframe:
Price crosses above the lower Bollinger Band, indicating a potential reversal
→ A long trade is opened when both momentum recovery and volatility reversion align.
✅ Long Exit Condition:
Stochastic on the 4H:
%K crosses below %D
Both %K and %D are above 80 (overbought zone)
Bollinger Bands on the 1H:
Price reaches or exceeds the upper Bollinger Band, suggesting exhaustion
→ The long trade is closed when either signal suggests a potential reversal or overextension.
🧬 Temporal Structure & Alpha
This strategy is deployed on a 10-hour chart — a non-standard timeframe that may align more effectively with multi-timeframe mean reversion dynamics.
This subtle adjustment exploits what some traders identify as “temporal drift” — the desynchronization of volatility across timeframes that creates hidden rhythm in price action.
→ For example, Stochastic on 4H (lookback 17) and Bollinger Bands on 1H (lookback 20) may periodically sync around 10H intervals, offering unique alpha windows.
📊 Indicator Components
🔹 Stochastic Oscillator (4H, Length 17)
Detects momentum reversals using %K and %D crossovers
Helps define overbought/oversold zones from a mid-term view
🔹 Bollinger Bands (1H, Length 20, ±2 StdDev)
Measures price volatility using standard deviation around a moving average
Entry occurs near lower band (support), exits near upper band (resistance)
🔹 Multi-Timeframe Logic
Uses request.security() to safely reference 4H and 1H indicators from a 10H chart
Avoids repainting by using closed higher-timeframe candles only
📈 Visualization
A plot selector input allows toggling between:
Stochastic Plot (%K & %D, with overbought/oversold levels)
Bollinger Bands Plot (Upper, Basis, Lower from 1H data)
This helps users visually confirm entry/exit triggers in real time.
🛠 Customization
Fully configurable Stochastic and BB settings
Timeframes are independently adjustable
Strategy settings like position sizing, slippage, and commission are editable
⚠️ Disclaimer
This strategy is intended for educational and informational purposes only.
It does not constitute financial advice or a recommendation to buy or sell any asset.
Market conditions vary, and past performance does not guarantee future results.
Always test any trading strategy in a simulated environment and consult a licensed financial advisor before making real-world investment decisions.
Мой скрипт//@version=5
indicator("Fibonacci Yearly Levels – Pro (by Pablo)", overlay=true)
// 1) Фиксация закрытия прошлого года
var float year_close = na
isNewYear = ta.change(year(time)) // true на первом баре нового года
if isNewYear
year_close := close // закрытие последнего бара прошлого года
year_close := nz(year_close, close) // первичная инициализация на истории
// 2) Уровни вверх (базовые + расширения)
up5 = year_close * 1.05
up8 = year_close * 1.08
up13 = year_close * 1.13
up21 = year_close * 1.21
up34 = year_close * 1.34
up54 = year_close * 1.54
up89 = year_close * 1.89 // расширение
up144 = year_close * 2.44 // расширение
up233 = year_close * 3.33 // расширение
// 3) Уровни вниз (симметрично и только позитивные цены)
dn5 = year_close * 0.95
dn8 = year_close * 0.92
dn13 = year_close * 0.87
dn21 = year_close * 0.79
dn34 = year_close * 0.66
dn54 = year_close * 0.46
dn89 = year_close * 0.11 // 1 - 0.89 = 0.11 (ниже -144% и -233% не рисуем — это < 0)
// 4) Плоты уровней (title — константы)
plot(year_close, color=color.yellow, linewidth=2, title="Year Close")
// вверх
plot(up5, color=color.new(color.green, 70), title="+5%")
plot(up8, color=color.new(color.green, 60), title="+8%")
plot(up13, color=color.new(color.green, 50), title="+13%")
plot(up21, color=color.new(color.green, 40), title="+21%")
plot(up34, color=color.new(color.green, 30), title="+34%")
plot(up54, color=color.new(color.green, 20), title="+54%")
plot(up89, color=color.new(color.green, 10), title="+89%")
plot(up144, color=color.new(color.green, 0), title="+144%")
plot(up233, color=color.new(color.green, 0), linewidth=2, style=plot.style_circles, title="+233%")
// вниз
plot(dn5, color=color.new(color.red, 70), title="-5%")
plot(dn8, color=color.new(color.red, 60), title="-8%")
plot(dn13, color=color.new(color.red, 50), title="-13%")
plot(dn21, color=color.new(color.red, 40), title="-21%")
plot(dn34, color=color.new(color.red, 30), title="-34%")
plot(dn54, color=color.new(color.red, 20), title="-54%")
plot(dn89, color=color.new(color.red, 10), title="-89%")
// -144% и -233% не отрисовываем — это отрицательные цены
// 5) Сигналы входов по методике (пробой ±8% с подтверждением)
longEntry = ta.crossover(close, up8) // LONG при пробое +8% снизу вверх
shortEntry = ta.crossunder(close, dn8) // SHORT при пробое -8% сверху вниз
plotshape(longEntry, title="Long Entry", style=shape.triangleup, color=color.lime,
size=size.small, location=location.belowbar, text="LONG")
plotshape(shortEntry, title="Short Entry", style=shape.triangledown, color=color.red,
size=size.small, location=location.abovebar, text="SHORT")
// (опционально — включи алерты)
alertcondition(longEntry, title="LONG entry (+8%)", message="LONG: price crossed above +8% yearly level")
alertcondition(shortEntry, title="SHORT entry (-8%)", message="SHORT: price crossed below -8% yearly level")
OsMA by A8/4 - Limited Edition🌟 **OsMA by A8/4 — The Ultimate Indicator for XAUUSD Trading** 🌟
An intelligent **automated system** designed exclusively for **gold trading**, equipped with everything you need in one tool 🔥
💡 **Key Features of OsMA by A8/4**
✅ **Auto Entry Signals**
Automatically detects trade opportunities using a **refined MACD Histogram formula** for enhanced accuracy.
Displays **LONG/SHORT arrows only on the first bar** to keep your chart clean and readable.
✅ **Auto Take Profit & Stop Loss System (Auto TP/SL)**
Once a signal appears, the system automatically sets:
* **TP1 = +15 USD**
* **TP2 = +25 USD**
* **SL = -10 USD**
These levels are displayed as **dashed lines** on the chart — clear and updated in real-time.
✅ **Smart DCA System (3 Orders)**
Works for both LONG and SHORT positions:
* **Order 1:** Entry upon signal confirmation (after candle close)
* **Order 2:** Entry at 5 USD below/above Order 1
* **Order 3:** Entry at another 5 USD below/above Order 2
The system automatically **calculates the average entry price** and **adjusts the SL** to -10 USD from the average cost.
This helps **spread risk** and **increase recovery potential** when prices rebound 💰
✅ **Specially Designed for XAUUSD Trading**
Compatible with both **Spot Gold** and **TFEX Gold Futures**.
Perfect for traders who value **clear, structured entry and exit strategies**.
MAOs🌟 **MAOs By A8/4 — The Ultimate Indicator for XAUUSD Trading** 🌟
An intelligent **automated system** designed exclusively for **gold trading**, equipped with everything you need in one tool 🔥
💡 **Key Features of MAOs By A8/4**
✅ **Auto Entry Signals**
Automatically detects trade opportunities using a **refined MACD Histogram formula** for enhanced accuracy.
Displays **LONG/SHORT arrows only on the first bar** to keep your chart clean and readable.
✅ **Auto Take Profit & Stop Loss System (Auto TP/SL)**
Once a signal appears, the system automatically sets:
* **TP1 = +15 USD**
* **TP2 = +25 USD**
* **SL = -10 USD**
These levels are displayed as **dashed lines** on the chart — clear and updated in real-time.
✅ **Smart DCA System (3 Orders)**
Works for both LONG and SHORT positions:
* **Order 1:** Entry upon signal confirmation (after candle close)
* **Order 2:** Entry at 5 USD below/above Order 1
* **Order 3:** Entry at another 5 USD below/above Order 2
The system automatically **calculates the average entry price** and **adjusts the SL** to -10 USD from the average cost.
This helps **spread risk** and **increase recovery potential** when prices rebound 💰
✅ **Specially Designed for XAUUSD Trading**
Compatible with both **Spot Gold** and **TFEX Gold Futures**.
Perfect for traders who value **clear, structured entry and exit strategies**.
Quasimodo Pattern Strategy Back Test [TradingFinder] QM Trading🔵 Introduction
The QM pattern, also known as the Quasimodo pattern, is one of the popular patterns in price action, and it is often used by technical analysts. The QM pattern is used to identify trend reversals and provides a very good risk-to-reward ratio. One of the advantages of the QM pattern is its high frequency and visibility in charts.
Additionally, due to its strength, it is highly profitable, and as mentioned, its risk-to-reward ratio is very good. The QM pattern is highly popular among traders in supply and demand, and traders also use this pattern.
The Price Action QM pattern, like other Price Action patterns, has two types: Bullish QM and Bearish QM patterns. To identify this pattern, you need to be familiar with its types to recognize it.
🔵 Identifying the QM Pattern
🟣 Bullish QM
In the bullish QM pattern, as you can see in the image below, an LL and HH are formed. As you can see, the neckline is marked as a dashed line. When the price reaches this range, it will start its upward movement.
🟣 Bearish QM
The Price Action QM pattern also has a bearish pattern. As you can see in the image below, initially, an HH and LL are formed. The neckline in this image is the dashed line, and when the LL is formed, the price reaches this neckline. However, it cannot pass it, and the downward trend resumes.
🔵 How to Use
The Quasimodo pattern is one of the clearest structures used to identify market reversals. It is built around the concept of a structural break followed by a pullback into an area of trapped liquidity. Instead of relying on lagging indicators, this pattern focuses purely on price action and how the market reacts after exhausting one side of liquidity. When understood correctly, it provides traders with precise entry points at the transition between trend phases.
🟣 Bullish Quasimodo
A bullish Quasimodo forms after a clear downtrend when sellers start losing control. The market continues to make lower lows until a sudden higher high appears, signaling that buyers are entering with strength. Price then pulls back to retest the previous low, creating what is known as the Quasimodo low.
This area often becomes the final trap for sellers before the market shifts upward. A visible rejection or displacement from this zone confirms bullish momentum. Traders usually place entries near this level, stops below the low, and targets at previous highs or the next resistance zone. Combining the setup with demand zones or Fair Value Gaps increases its accuracy.
🟣 Bearish Quasimodo
A bearish Quasimodo forms near the top of an uptrend when buyers begin to lose strength. The market continues to make higher highs until a sudden lower low breaks the bullish structure, showing that selling pressure is entering the market. Price then retraces upward to retest the previous high, forming the Quasimodo high, where breakout buyers are often trapped.
Once rejection appears at this level, it indicates a likely reversal. Traders can enter short near this area, with stop-losses placed above the high and targets near the next support or previous lows. The setup gains more reliability when aligned with supply zones, SMT divergence, or bearish Fair Value Gaps.
🔵 Setting
Pivot Period : You can use this parameter to use your desired period to identify the QM pattern. By default, this parameter is set to the number 5.
Take Profit Mode : You can choose your desired Take Profit in three ways. Based on the logic of the QM strategy, you can select two Take Profit levels, TP1 and TP2. You can also choose your take profit based on the Reward to Risk ratio. You must enter your desired R/R in the Reward to Risk Ratio parameter.
Stop Loss Refine : The loss limit of the QM strategy is based on its logic on the Head pattern. You can refine it using the ATR Refine option to prevent Stop Hunt. You can enter your desired coefficient in the Stop Loss ATR Adjustment Coefficient parameter.
Reward to Risk Ratio : If you set Take Profit Mode to R/R, you must enter your desired R/R here. For example, if your loss limit is 10 pips and you set R/R to 2, your take profit will be reached when the price is 20 pips away from your entry point.
Stop Loss ATR Adjustment Coefficient : If you set Stop Loss Refine to ATR Refine, you must adjust your loss limit coefficient here. For example, if your buy position's loss limit is at the price of 1000, and your ATR is 10, if you set Stop Loss ATR Adjustment Coefficient to 2, your loss limit will be at the price of 980.
Entry Level Validity : Determines how long the Entry level remains valid. The higher the level, the longer the entry level will remain valid. By default it is 2 and it can be set between 2 and 15.
🔵 Results
The following examples show the backtest results of the Quasimodo (QM) strategy in action. Each image is based on specific settings for the symbol, timeframe, and input parameters, illustrating how the QM logic can generate signals under different market conditions. The detailed configuration for each backtest is also displayed on the image.
⚠ Important Note : Even with identical settings and the same symbol, results may vary slightly across different brokers due to data feed variations and pricing differences.
Default Properties of Backtests :
OANDA:XAUUSD | TimeFrame: 5min | Duration: 1 Year :
BINANCE:BTCUSD | TimeFrame: 5min | Duration: 1 Year :
CAPITALCOM:US30 | TimeFrame: 5min | Duration: 1 Year :
NASDAQ:QQQ | TimeFrame: 5min | Duration: 5 Year :
OANDA:EURUSD | TimeFrame: 5min | Duration: 5 Year :
PEPPERSTONE:US500 | TimeFrame: 5min | Duration: 5 Year :
EMA + SuperTrend Signals (Customized Subham) - FIXED//@version=5
indicator("EMA + SuperTrend Signals (modes + filters) - FIXED firstClose", overlay=true, shorttitle="EMA×ST Modes", max_labels_count=500)
// ====== USER INPUTS ======
useHeikin = input.bool(false, "Use Heikin Ashi price (set true if chart is Heikin Ashi)")
srcType = input.string("Close", "Price source for EMA/SuperTrend", options= )
emaFastLen = input.int(10, "Fast EMA Length", minval=1)
emaSlowLen = input.int(50, "Slow EMA Length", minval=1)
useEMAFilter = input.bool(true, "Require EMA filter for signals (Fast EMA > Slow EMA)")
atrLen = input.int(10, "SuperTrend ATR Length", minval=1)
atrMult = input.float(3.0, "SuperTrend ATR Multiplier", step=0.1)
showArrows = input.bool(true, "Show buy/sell arrows")
showBands = input.bool(true, "Show final upper/lower bands")
showST = input.bool(true, "Show SuperTrend line")
showEMA = input.bool(true, "Plot EMAs")
showBg = input.bool(true, "Color background by ST")
alertsEnabled = input.bool(true, "Enable alertcondition()s")
// ====== SIGNAL MODE / BEHAVIOR ======
signalMode = input.string("Flip only", "Signal Mode", options= )
allowOnTrendNotOnlyFlip = input.bool(true, "Allow signals based on Signal Mode (in addition to flips)")
// ====== SIDEWAYS / NOISE FILTER INPUTS ======
useAdxFilter = input.bool(true, "Use ADX filter (require trend strength)")
adxLen = input.int(14, "ADX length", minval=1)
adxThreshold = input.int(20, "ADX threshold (lower = more signals)")
useVolFilter = input.bool(true, "Use ATR% volatility filter (require sufficient movement)")
volPctThreshold = input.float(0.002, "ATR / Price threshold (e.g. 0.002 = 0.2%)", step=0.0001)
useRsiFilter = input.bool(true, "Use RSI filter")
rsiLen = input.int(14, "RSI length", minval=1)
rsiBuyThreshold = input.int(50, "RSI buy threshold (require RSI > this for buys)", minval=1, maxval=99)
rsiSellThreshold = input.int(50, "RSI sell threshold (require RSI < this for sells)", minval=1, maxval=99)
// ====== HEIKIN ASHI VALUES (optional) ======
var float haOpen = na
var float haClose = na
var float haHigh = na
var float haLow = na
if useHeikin
haClose := (open + high + low + close) / 4.0
haOpen := na(haOpen ) ? (open + close) / 2.0 : (haOpen + haClose ) / 2.0
haHigh := math.max(high, math.max(haOpen, haClose))
haLow := math.min(low, math.min(haOpen, haClose))
// ====== PRICE SOURCE FUNCTION ======
_getSrc(_choice) =>
float _result = na
if useHeikin
if _choice == "Close"
_result := haClose
else if _choice == "HL2"
_result := (haHigh + haLow) * 0.5
else
_result := (haHigh + haLow + haClose) / 3.0
else
if _choice == "Close"
_result := close
else if _choice == "HL2"
_result := (high + low) * 0.5
else
_result := (high + low + close) / 3.0
_result
priceSrc = _getSrc(srcType)
priceHigh = useHeikin ? haHigh : high
priceLow = useHeikin ? haLow : low
priceClose = nz(priceSrc, close)
// ====== EMA CALC ======
emaFast = ta.ema(priceSrc, emaFastLen)
emaSlow = ta.ema(priceSrc, emaSlowLen)
// ====== SUPER TREND CALC (finalUpper / finalLower) ======
hl2_local = (priceHigh + priceLow) * 0.5
atr = ta.atr(atrLen)
upperBasic = hl2_local + atrMult * atr
lowerBasic = hl2_local - atrMult * atr
var float finalUpper = na
var float finalLower = na
finalUpper := nz(finalUpper , upperBasic)
finalLower := nz(finalLower , lowerBasic)
finalUpper := (upperBasic < finalUpper or priceClose > finalUpper) ? upperBasic : finalUpper
finalLower := (lowerBasic > finalLower or priceClose < finalLower) ? lowerBasic : finalLower
var int trend = 1
trend := nz(trend , 1)
if (priceClose > nz(finalUpper , finalUpper))
trend := 1
else if (priceClose < nz(finalLower , finalLower))
trend := -1
superTrend = trend == 1 ? finalLower : finalUpper
isBull = trend == 1
isBear = trend == -1
// ====== SIGNAL RULE BASE (flips) ======
prevTrend = nz(trend , trend)
bullFlip = (trend == 1 and prevTrend == -1)
bearFlip = (trend == -1 and prevTrend == 1)
// EMA crossover signals (series)
emaXoverBuy = ta.crossover(emaFast, emaSlow)
emaXoverSell = ta.crossunder(emaFast, emaSlow)
// price vs superTrend confirmation
priceAboveST = priceClose > superTrend
priceBelowST = priceClose < superTrend
// Basic EMA filters
emaFilterBuy = (emaFast > emaSlow) and (priceClose > emaFast)
emaFilterSell = (emaFast < emaSlow) and (priceClose < emaFast)
// Build raw candidates depending on mode
flipBuy = bullFlip
flipSell = bearFlip
// firstClose: first bar where trend flipped and price confirms on that bar's close
firstCloseBuy = (trend == 1) and (prevTrend == -1) and (priceClose > superTrend)
firstCloseSell = (trend == -1) and (prevTrend == 1) and (priceClose < superTrend)
// emaCrossoverCandidate: EMA cross while trend confirms
emaCandidateBuy = emaXoverBuy and (trend == 1)
emaCandidateSell = emaXoverSell and (trend == -1)
// Compose the raw buy/sell depending on chosen Signal Mode
var bool buySignal_raw = false
var bool sellSignal_raw = false
if signalMode == "Flip only"
buySignal_raw := flipBuy
sellSignal_raw := flipSell
else if signalMode == "First close in trend"
buySignal_raw := firstCloseBuy or (allowOnTrendNotOnlyFlip and flipBuy)
sellSignal_raw := firstCloseSell or (allowOnTrendNotOnlyFlip and flipSell)
else // "EMA crossover in trend"
buySignal_raw := emaCandidateBuy or (allowOnTrendNotOnlyFlip and flipBuy)
sellSignal_raw := emaCandidateSell or (allowOnTrendNotOnlyFlip and flipSell)
// Apply EMA filter option (if enabled)
if useEMAFilter
buySignal_raw := buySignal_raw and emaFilterBuy
sellSignal_raw := sellSignal_raw and emaFilterSell
// ====== SIDEWAYS FILTERS IMPLEMENTATION ======
// Manual ADX implementation (Wilder smoothing)
up = priceHigh - priceHigh
down = priceLow - priceLow
plusDM = (up > down and up > 0) ? up : 0.0
minusDM = (down > up and down > 0) ? down : 0.0
tr1 = priceHigh - priceLow
tr2 = math.abs(priceHigh - nz(priceClose , priceClose))
tr3 = math.abs(priceLow - nz(priceClose , priceClose))
trueRange = math.max(tr1, math.max(tr2, tr3))
smoothedTR = ta.rma(trueRange, adxLen)
smoothedPlusDM = ta.rma(plusDM, adxLen)
smoothedMinusDM = ta.rma(minusDM, adxLen)
plusDI = smoothedTR == 0 ? 0.0 : (100.0 * smoothedPlusDM / smoothedTR)
minusDI = smoothedTR == 0 ? 0.0 : (100.0 * smoothedMinusDM / smoothedTR)
dx = (plusDI + minusDI == 0) ? 0.0 : (100.0 * math.abs(plusDI - minusDI) / (plusDI + minusDI))
adxValue = ta.rma(dx, adxLen)
adxOk = useAdxFilter ? (adxValue > adxThreshold) : true
// ATR% check
safePrice = priceClose == 0.0 ? nz(close) : priceClose
atrPct = atr / math.abs(safePrice)
volOk = useVolFilter ? (atrPct > volPctThreshold) : true
// RSI checks
rsiValue = ta.rsi(priceSrc, rsiLen)
rsiOkBuy = useRsiFilter ? (rsiValue > rsiBuyThreshold) : true
rsiOkSell = useRsiFilter ? (rsiValue < rsiSellThreshold) : true
// Allow signal only when all enabled filters pass (separate for buy/sell)
allowBuy = adxOk and volOk and rsiOkBuy
allowSell = adxOk and volOk and rsiOkSell
// Final gated signals
buySignal = buySignal_raw and allowBuy
sellSignal = sellSignal_raw and allowSell
// Avoid both at once
if (buySignal and sellSignal)
buySignal := false
sellSignal := false
// ====== PLOTTING ======
plot(showEMA ? emaFast : na, title="EMA Fast", linewidth=2)
plot(showEMA ? emaSlow : na, title="EMA Slow", linewidth=2)
pUpper = plot(showBands ? finalUpper : na, title="Final Upper", linewidth=2, style=plot.style_line)
pLower = plot(showBands ? finalLower : na, title="Final Lower", linewidth=2, style=plot.style_line)
plot(showST ? superTrend : na, title="SuperTrend", linewidth=3, style=plot.style_line)
fill(pUpper, pLower, color = color.new(color.blue, 92))
plotshape(series = (showArrows and buySignal), title="Buy Arrow", style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", textcolor=color.white, size=size.tiny)
plotshape(series = (showArrows and sellSignal), title="Sell Arrow", style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", textcolor=color.white, size=size.tiny)
// ====== BACKGROUND COLOR ======
var color bg_col = na
if showBg
if not (adxOk and volOk)
bg_col := color.new(color.gray, 85)
else
bg_col := isBull ? color.new(color.green, 90) : color.new(color.red, 90)
else
bg_col := na
bgcolor(bg_col)
// ====== ALERTS ======
alertcondition(alertsEnabled and buySignal, title="EMA+ST Buy", message="EMA+ST BUY — signal passed filters.")
alertcondition(alertsEnabled and sellSignal, title="EMA+ST Sell", message="EMA+ST SELL — signal passed filters.")
alertcondition(alertsEnabled and (buySignal or sellSignal), title="EMA+ST Any Signal", message="EMA+ST signal detected.")
// ====== DEBUG / LABELS ======
showDebug = input.bool(false, "Show debug label (mode, ADX, ATR%, RSI)")
if showDebug and barstate.islast
var label dbg = na
label.delete(dbg)
dbgText = "Mode:" + signalMode + " ADX:" + str.tostring(adxValue, "#.0") + " ATR%:" + str.tostring(atrPct*100, "#.2") + "% RSI:" + str.tostring(rsiValue, "#.1")
dbg := label.new(bar_index, high, dbgText, xloc=xloc.bar_index, yloc=yloc.abovebar, style=label.style_label_left, color=color.gray, textcolor=color.white)
var label lastLbl = na
if barstate.islast
label.delete(lastLbl)
lastLbl := label.new(bar_index, high, isBull ? "ST: Bull" : "ST: Bear", xloc=xloc.bar_index, yloc=yloc.abovebar, style=label.style_label_left, color=isBull ? color.green : color.red, textcolor=color.white)






















