Distance from 50 SMA in ADR TermsIndicator produces a multiple of ADR% from the 50-day simple moving average to determine is a stock or etf is extended.
Qullamaggie
Qullamaggie [Modified] | FractalystWhat's the purpose of this strategy?
The strategy aims to identify high-probability breakout setups in trending markets, inspired by Kristjan "Qullamaggie" Kullamägi’s approach.
It focuses on capturing explosive price moves after periods of consolidation, using technical criteria like moving averages, breakouts, trailing stop-loss and momentum confirmation.
Ideal for swing traders seeking to ride strong trends while managing risk.
----
How does the strategy work?
The strategy follows a systematic process to capture high-momentum breakouts:
Pre-Breakout Criteria:
Prior Price Surge: Identifies stocks that have rallied 30-100%+ in recent month(s), signaling strong underlying momentum (per Qullamaggie’s volatility expansion principles).
Consolidation Phase: Looks for a tightening price range (e.g., flag, pennant, or tight base), indicating a potential "coiling" before continuation.
Trend Confirmation: Uses moving averages (e.g., 20/50/200 EMA) to ensure the stock is trading above key averages on the daily chart, confirming an uptrend.
Price Break: Enters when price clears the consolidation high with conviction.
Risk Management:
Initial Stop Loss: Placed below the consolidation low or a recent swing point to limit downside.
Break-Even Adjustment: Moves stop loss to breakeven once the trade reaches 1.5x risk-to-reward (RR), securing a "free trade" while letting winners run.
Trailing Stop (Unique Edge):
Market Structure Trailing: Instead of trailing via moving averages, the stop is dynamically adjusted using structural invalidation level. This adapts to price action, allowing the trade to stay open during volatile retracements while locking in gains as new structure forms.
Why This Matters: Most strategies use rigid trailing stops (e.g., below the 10EMA), which often exit prematurely in choppy markets. By trailing based on structure, this strategy avoids "noise" and captures larger trends, directly boosting overall returns.
----
What markets or timeframes is this suited for?
This is a long-only strategy designed for trending markets, and it performs best in:
Markets: Stocks (especially high-growth, liquid equities), cryptocurrencies (major pairs with strong volatility), commodities (e.g., oil, gold), and futures (index/commodity futures).
Timeframes: Primarily daily charts for swing trades (1-30 day holds), though weekly charts can help confirm broader trends.
Key Advantage: The TradingView script allows instant backtesting with adjustable parameters
You can:
- Test historical performance across multiple markets to identify which assets align best with the strategy.
- Optimize settings (e.g., trailing stop sensitivity, moving averages etc.) to match a market’s volatility profile.
Build a diversified portfolio by filtering for markets that show consistent profitability in backtests.
For example, you might discover cryptos require tighter trailing stops due to volatility, while stocks thrive with wider structural stops. The script automates this analysis, letting you to trade confidently.
----
What indicators or tools does the strategy use?
The strategy combines customizable technical tools with strict anti-lookahead safeguards:
Core Indicators:
Moving Averages: Adjustable periods (e.g., 20/50/200 EMA or SMA) and timeframes (daily/weekly) to confirm trend alignment. Users can test combinations (e.g., 10EMA vs. 20EMA) to optimize for specific markets.
Breakout Parameters:
Consolidation Length: Adjustable window to define the "tightness" of the pre-breakout pattern.
Entry Models: Flexible entry logics (Breakouts and fractals)
Anti-Lookahead Design:
All calculations (e.g., moving averages, consolidation ranges, volume averages) use only closed/confirmed data available at the time of the signal.
----
How do I manage risk with this strategy?
The strategy prioritizes customizable risk controls to align with your trading style and account size:
User-Defined Risk Inputs:
Risk Per Trade: Set a % of Equity (e.g., 1-2%) to determine position size. The strategy auto-calculates shares/contracts to match your selected risk per trade.
Flexibility: Choose between fixed risk or equity-based scaling.
The script adjusts position sizing dynamically based on your selection.
Pyramiding Feature:
Customizable Entries: Adjust the number of pyramiding trades allowed (e.g., 1-3 additional positions) in the strategy settings. Each new entry is triggered only if the prior trade hits its 1.5x RR target and the trend remains intact.
Risk-Scaled Additions: New positions use profits from prior trades, compounding gains without increasing initial risk.
Risk-Free Trade Mechanic:
Once a trade reaches 1.5x RR, the stop loss is moved to breakeven, eliminating downside risk.
The strategy then opens a new position (if pyramiding is enabled) using a portion of the locked-in profit. This "snowballs" winners while keeping total capital exposure stable.
Impact on Net Profit & Drawdown:
Net Profit Boost: Pyramiding lets you ride multi-leg trends aggressively. For example, a 100% runner could generate 2-3x more profit vs. a single-entry approach.
Controlled Drawdowns: Since new positions are funded by profits (not initial capital), max drawdown stays anchored to your original risk per trade (e.g., 1-2% of account). Even if later entries fail, the breakeven stop on prior trades protects overall equity.
Why This Works: Most strategies either over-leverage (increasing drawdowns) or exit too early. By recycling profits into new positions only after securing risk-free capital, this approach mimics hedge fund "scaling in" tactics while staying retail-trader friendly.
----
How does the strategy identify market structure for its trailing stoploss?
The strategy identifies market structure by utilizing an efficient logic with for loops to pinpoint the first swing candle that features a pivot of 2. This marks the beginning of the break of structure, where the market's previous trend or pattern is considered invalidated or changed.
----
What are the underlying calculations?
The underlying calculations involve:
Identifying Swing Points: The strategy looks for swing highs (marked with blue Xs) and swing lows (marked with red Xs). A swing high is identified when a candle's high is higher than the highs of the candles before and after it. Conversely, a swing low is when a candle's low is lower than the lows of the candles before and after it.
Break of Structure (BOS):
Bullish BOS: This occurs when the price breaks above the swing high level of the previous structure, indicating a potential shift to a bullish trend.
Bearish BOS: This happens when the price breaks below the swing low level of the previous structure, signaling a potential shift to a bearish trend.
Structural Liquidity and Invalidation:
Structural Liquidity: After a break of structure, liquidity levels are updated to the first swing high in a bullish BOS or the first swing low in a bearish BOS.
Structural Invalidation: If the price moves back to the level of the first swing low before the bullish BOS or the first swing high before the bearish BOS, it invalidates the break of structure, suggesting a potential reversal or continuation of the previous trend.
This method provides users with a technical approach to filter market regimes, offering an advantage by minimizing the risk of overfitting to historical data, which is often a concern with traditional indicators like moving averages.
By focusing on identifying pivotal swing points and the subsequent breaks of structure, the strategy maintains a balance between sensitivity to market changes and robustness against historical data anomalies, ensuring a more adaptable and potentially more reliable market analysis tool.
----
What entry criteria are used in this script?
The script uses two entry models for trading decisions: BreakOut and Fractal.
Underlying Calculations:
Breakout: The script records the most recent swing high by storing it in a variable. When the price closes above this recorded level, and all other predefined conditions are satisfied, the script triggers a breakout entry. This approach is considered conservative because it waits for the price to confirm a breakout above the previous high before entering a trade. As shown in the image, as soon as the price closes above the new candle (first tick), the long entry gets taken. The stop-loss is initially set and then moved to break-even once the price moves in favor of the trade.
Fractal: This method involves identifying a swing low with a period of 2, which means it looks for a low point where the price is lower than the two candles before and after it. Once this pattern is detected, the script executes the trade. This is an aggressive approach since it doesn't wait for further price confirmation. In the image, this is represented by the 'Fractal 2' label where the script identifies and acts on the swing low pattern.
----
What type of stop-loss identification method are used in this strategy?
This strategy employs two types of stop-loss methods: Initial Stop-loss and Trailing Stop-Loss.
Underlying Calculations:
Initial Stop-loss:
ATR Based: The strategy uses the Average True Range (ATR) to set an initial stop-loss, which helps in accounting for market volatility without predicting price direction.
Calculation:
- First, the True Range (TR) is calculated for each period, which is the greatest of:
- Current Period High - Current Period Low
- Absolute Value of Current Period High - Previous Period Close
- Absolute Value of Current Period Low - Previous Period Close
- The ATR is then the moving average of these TR values over a specified period, typically 14 periods by default. This ATR value can be used to set the stop-loss at a distance from the entry price that reflects the current market volatility.
Swing Low Based:
For this method, the stop-loss is set based on the most recent swing low identified in the market structure analysis. This approach uses the lowest point of the recent price action as a reference for setting the stop-loss.
Trailing Stop-Loss:
The strategy uses structural liquidity and structural invalidation levels across multiple timeframes to adjust the stop-loss once the trade is profitable. This method involves:
Detecting Structural Liquidity: After a break of structure, the liquidity levels are updated to the first swing high in a bullish scenario or the first swing low in a bearish scenario. These levels serve as potential areas where the price might find support or resistance, allowing the stop-loss to trail the price movement.
Detecting Structural Invalidation: If the price returns to the level of the first swing low before a bullish break of structure or the first swing high before a bearish break of structure, it suggests the trend might be reversing or invalidating, prompting the adjustment of the stop-loss to lock in profits or minimize losses.
By using these methods, the strategy dynamically adjusts the initial stop-loss based on market volatility, helping to protect against adverse price movements while allowing for enough room for trades to develop. The ATR-based stop-loss adapts to the current market conditions by considering the volatility, ensuring that the stop-loss is not too tight during volatile periods, which could lead to premature exits, nor too loose during calm markets, which might result in larger losses. Similarly, the swing low based stop-loss provides a logical exit point if the market structure changes unfavorably.
Each market behaves differently across various timeframes, and it is essential to test different parameters and optimizations to find out which trailing stop-loss method gives you the desired results and performance. This involves backtesting the strategy with different settings for the ATR period, the distance from the swing low, and how the trailing stop-loss reacts to structural liquidity and invalidation levels.
Through this process, you can tailor the strategy to perform optimally in different market environments, ensuring that the stop-loss mechanism supports the trade's longevity while safeguarding against significant drawdowns.
----
What type of break-even method is used in this strategy? What are the underlying calculations?
Moves the initial stop-loss to the entry price when the price reaches a certain RR ratio.
Calculation:
Break-even level = Entry Price + (Initial Risk * RR Ratio)
----
What tables are available in this script?
- Summary: Provides a general overview, displaying key performance parameters such as Net Profit, Profit Factor, Max Drawdown, Average Trade, Closed Trades and more.
Total Commission: Displays the cumulative commissions incurred from all trades executed within the selected backtesting window. This value is derived by summing the commission fees for each trade on your chart.
Average Commission: Represents the average commission per trade, calculated by dividing the Total Commission by the total number of closed trades. This metric is crucial for assessing the impact of trading costs on overall profitability.
Avg Trade: The sum of money gained or lost by the average trade generated by a strategy. Calculated by dividing the Net Profit by the overall number of closed trades. An important value since it must be large enough to cover the commission and slippage costs of trading the strategy and still bring a profit.
MaxDD: Displays the largest drawdown of losses, i.e., the maximum possible loss that the strategy could have incurred among all of the trades it has made. This value is calculated separately for every bar that the strategy spends with an open position.
Profit Factor: The amount of money a trading strategy made for every unit of money it lost (in the selected currency). This value is calculated by dividing gross profits by gross losses.
Avg RR: This is calculated by dividing the average winning trade by the average losing trade. This field is not a very meaningful value by itself because it does not take into account the ratio of the number of winning vs losing trades, and strategies can have different approaches to profitability. A strategy may trade at every possibility in order to capture many small profits, yet have an average losing trade greater than the average winning trade. The higher this value is, the better, but it should be considered together with the percentage of winning trades and the net profit.
Winrate: The percentage of winning trades generated by a strategy. Calculated by dividing the number of winning trades by the total number of closed trades generated by a strategy. Percent profitable is not a very reliable measure by itself. A strategy could have many small winning trades, making the percent profitable high with a small average winning trade, or a few big winning trades accounting for a low percent profitable and a big average winning trade. Most mean-reversion successful strategies have a percent profitability of 40-80% but are profitable due to risk management control.
BE Trades: Number of break-even trades, excluding commission/slippage.
Losing Trades: The total number of losing trades generated by the strategy.
Winning Trades: The total number of winning trades generated by the strategy.
Total Trades: Total number of taken traders visible your charts.
Net Profit: The overall profit or loss (in the selected currency) achieved by the trading strategy in the test period. The value is the sum of all values from the Profit column (on the List of Trades tab), taking into account the sign.
- Monthly: Displays performance data on a month-by-month basis, allowing users to analyze performance trends over each month and year.
- Weekly: Displays performance data on a week-by-week basis, helping users to understand weekly performance variations.
- UI Table: A user-friendly table that allows users to view and save the selected strategy parameters from user inputs. This table enables easy access to key settings and configurations, providing a straightforward solution for saving strategy parameters by simply taking a screenshot with Alt + S or ⌥ + S.
User-input styles and customizations:
Please note that all background colors in the style are disabled by default to enhance visualization.
How to Use This Strategy to Create a Profitable Edge and Systems?
Choose Your Strategy mode:
- Decide whether you are creating an investing strategy or a trading strategy.
Select a Market:
- Choose a one-sided market such as stocks, indices, or cryptocurrencies.
Historical Data:
- Ensure the historical data covers at least 10 years of price action for robust backtesting.
Timeframe Selection:
- Choose the timeframe you are comfortable trading with. It is strongly recommended to use a timeframe above 15 minutes to minimize the impact of commissions/slippage on your profits.
Set Commission and Slippage:
- Properly set the commission and slippage in the strategy properties according to your broker/prop firm specifications.
Parameter Optimization:
- Use trial and error to test different parameters until you find the performance results you are looking for in the summary table or, preferably, through deep backtesting using the strategy tester.
Trade Count:
- Ensure the number of trades is 200 or more; the higher, the better for statistical significance.
Positive Average Trade:
- Make sure the average trade is above zero.
(An important value since it must be large enough to cover the commission and slippage costs of trading the strategy and still bring a profit.)
Performance Metrics:
- Look for a high profit factor, and net profit with minimum drawdown.
- Ideally, aim for a drawdown under 20-30%, depending on your risk tolerance.
Refinement and Optimization:
- Try out different markets and timeframes.
- Continue working on refining your edge using the available filters and components to further optimize your strategy.
What Makes This Strategy Unique?
This strategy combines flexibility, smart risk management, and momentum focus in a way that’s rare and practical:
1. Adapts to Any Market Rhythm
Works on daily, weekly, or intraday charts without code changes.
Uses two entry types: classic breakouts (like trending stocks) or fractal patterns (to avoid false starts).
2. Smarter Stop-Loss System
No rigid rules: Stops adjust based on price structure (e.g., new “higher lows”), not fixed percentages.
Avoids whipsaws: Tightens stops only when the trend strengthens, not in choppy markets.
3. Safe Profit-Boosting Pyramiding
Adds new positions only after prior trades are risk-free (stops moved above breakeven).
Scales up using locked-in profits, not new capital, to grow gains safely.
4. Built-In Momentum Check
Tracks 1/3/6-month price growth to spotlight stocks with strong, lasting momentum.
Terms and Conditions | Disclaimer
Our charting tools are provided for informational and educational purposes only and should not be construed as financial, investment, or trading advice. They are not intended to forecast market movements or offer specific recommendations. Users should understand that past performance does not guarantee future results and should not base financial decisions solely on historical data.
Built-in components, features, and functionalities of our charting tools are the intellectual property of @Fractalyst Unauthorized use, reproduction, or distribution of these proprietary elements is prohibited.
- By continuing to use our charting tools, the user acknowledges and accepts the Terms and Conditions outlined in this legal disclaimer and agrees to respect our intellectual property rights and comply with all applicable laws and regulations.
ADR Checker - Breakouts📈 ADR Checker – Breakouts
Gain the edge by knowing when a stock has already made its move.
🚀 What It Does:
The ADR Checker - Breakouts is a powerful yet simple visual tool that helps traders instantly assess whether a stock has already exceeded its Average Daily Range (ADR) for the day — a critical piece of information for momentum traders, swing traders, and especially those following breakout, VCP, or CANSLIM strategies.
Using a customizable on-screen table that always stays in view (regardless of zoom or chart scaling), this script shows:
✅ Average ADR% – 20-day average range, calculated in %.
📊 Today’s Move – how much the stock has moved today.
🔥 % of Avg ADR – today's move relative to its historical average, with live color feedback:
🟥 Over 100% (Overextended – danger!)
🟧 70-100% (Caution zone)
🟩 Below 70% (Room to move)
💡 Why It Matters:
One of the most overlooked mistakes by breakout traders is entering a trade after the move has already happened. If a stock has already moved more than its typical daily range, the odds of further continuation sharply decrease, while the risk of pullback or chop increases.
With this tool, you can:
🚫 Avoid chasing extended breakouts
🎯 Time entries before the real move
⚠️ Quickly assess risk/reward potential intraday
🧠 Example Use Case:
Imagine you're watching a classic VCP setup or flat base breakout. The stock breaks out on volume—but when you check this indicator, you see:
Today’s Move: 7.2%
Avg ADR: 5.3%
% of ADR: 135% 🟥
This tells you the stock is already well beyond its average daily range. While it may continue higher, odds now favor a consolidation, shakeout, or pullback. This is your cue to wait for a better entry or pass entirely.
On the flip side, if the breakout just started and the % of ADR is still under 50%, you have confirmation that there’s room to run — giving you more confidence to enter early.
⚙️ Fully Customizable:
Choose position on screen (top/bottom left/right)
Customize text color, background, and size
🔧 Install This Tool and:
✅ Stop chasing extended moves
✅ Add discipline to your entries
✅ Improve your breakout win rate
Perfect for VCP, CANSLIM, and BREAKOUT traders who want a clean, edge-enhancing visual guide.
Swing Data - Optimized SK60
v. 1.83
indicator adjust to time frame.
This Pine Script code generates a trading indicator that calculates and displays various data points on a stock, including Average Daily Range (ADR%), Market Cap, Current Volume, Free Cash Flow (FCF) Yield %, Float %, whether moving averages (MA) are inline, and the moving averages of certain indexes like the Russell 2000, Nasdaq 100, and S&P 500. Here’s a breakdown of the script and how to use it.
Key Concepts and Functionality
Indicator Definition: The script begins by defining the indicator with a title (Swing Data - Optimized ADR%...) and short title (Optimized Swing Data), which will appear on the chart. The overlay=true command ensures that the indicator is drawn on the main price chart rather than in a separate pane.
Sector and Ticker:
s = syminfo.tickerid: This stores the ticker ID of the stock being analyzed.
sector = syminfo.sector: This retrieves the sector to which the stock belongs. If the sector information is unavailable, it assigns the value "N/A".
Dynamic Inputs: Several input parameters allow you to customize the indicator:
adrp_len: Defines the length for ADR% calculation.
len: Defines the moving average length for volume.
tbl_size, bg_col, and txt_col: Control the table's appearance, including the size of the text, background color, and text color.
posTable: Allows positioning of the table on the chart. Options include top-left, top-right, bottom-left, and bottom-right.
show_empty_row: Adds an empty row above the displayed values if set to true.
Volume Unit Handling (f_vol_unit): This function converts volume into appropriate units, like thousands (K), millions (M), or billions (B), to make volume easier to read. It’s applied to both the current volume and the average daily volume.
Moving Averages for Indexes (f_ma_indexes): This function calculates the 10-day, 20-day, 50-day, and 200-day simple moving averages (SMAs) for an index (such as Russell 2000 or Nasdaq 100). It also checks whether the MAs are inline, meaning if shorter MAs are above longer MAs, which is usually a bullish sign. It returns the result as "YES" or "NO" and assigns a color (green for yes, red for no).
Volume and Price Data: The script fetches several important data points:
vol_display: Current volume in human-readable units.
avgDaVol: Average daily volume.
adrp: Average Daily Range (ADR%) over a specified length.
fcf_yield_percent: Free Cash Flow Yield percentage.
ADR Calculation: The ADR% is calculated using the formula 100 * (ta.sma(high / low, adrp_len) - 1) and is fetched for the daily timeframe.
FCF Yield Color Logic: The Free Cash Flow yield is classified into three categories:
Green: Undervalued if FCF yield is over 5%.
Yellow: Neutral between 2-5%.
Red: Overvalued if below 2%.
MA's Inline Check for the Stock: The script checks if the stock's 10-day, 20-day, 50-day, and 200-day moving averages are inline (i.e., in a bullish alignment where shorter MAs are higher than longer MAs).
Float % Calculation: The float percentage is calculated as the ratio of float shares outstanding (FSO) to total shares outstanding (TSO). The color is set based on its breakout potential:
Red: Below 20% (manipulation risk).
Green: 20-50% (ideal breakout range).
Yellow: Above 50%.
Price Change %: The script calculates the percentage change in price between the current and previous close.
Volume Color Logic: The color of the "Current Volume" is based on whether it indicates buying or selling pressure:
Green: Volume is higher than average, and the price increased more than ADR%.
Red: Volume is higher than average, and the price decreased more than ADR%.
Yellow: Default color if neither condition is met.
Market Cap: The market cap is calculated by multiplying the total shares outstanding (TSO) by the current close price, and it’s displayed in a human-readable unit (K, M, or B).
Display Table:
A table is created to display all the calculated data in an organized manner. It includes fields for Market Cap, Avg Volume, ADR%, Current Volume, FCF Yield %, Float %, MA's Inline status, and Sector. Additionally, it shows the inline status for the Russell 2000, Nasdaq 100, and S&P 500.
How to Use:
Customization: Users can customize the inputs, including the length of ADR% and volume moving averages, and adjust the table size, text color, and position.
Visualization: The indicator provides a comprehensive table on the chart showing key data points for technical analysis, including whether moving averages are inline for both the stock and major indexes.
This indicator is particularly useful for swing traders or technical analysts who want a clear overview of a stock’s volume, volatility (via ADR%), and the alignment of moving averages, combined with fundamental metrics like market cap and free cash flow yield.
Swing Trading Indicators (Improved)This "Swing Trading Indicators" script is a sophisticated trading tool designed for traders who wants to use technical analysis for identifying optimal entry points, safeguarding profits, and protect their capital. With foundations loosely based on the momentum burst strategy by Pradeep Bonde, Kristjan Kullamaggie's trading methodologies, and incorporating automatic stop-losses based on Average Daily Range (ADR) and Average True Range (ATR), this script offers a comprehensive solution if you want to capitalize on short-term market movements.
Key Features:
Indicators and Moving Averages: Includes EMA (5, 10, 20, 50 days), SMA (200 days), and the highest and lowest prices over 200 days to provide a multifaceted view of market trends and momentum.
Thrust Indicator: Central to the script, the thrust indicator signals a buy point when a candlestick bar closes above the highs of the last two days, indicating a momentum burst. This feature is particularly inspired by Pradeep Bonde's 4% breakout strategy, highlighting the script's capability to identify range expansion and upward thrusts as key entry moments.
Automatic Stop-Levels: Utilizes ADR and ATR to set dynamic stop-losses, helping traders to manage risk effectively by adapting to market volatility.
Comprehensive Market Analysis : Through volume analysis, RSI, closing range, and other parameters, the script offers a deep dive into market dynamics, aiding in decision-making.
Who Should Use It:
This tool is ideal for swing traders and momentum traders focused on short to medium-term gains. Its robust set of features makes it suitable for those who prefer a data-driven approach to identify buying opportunities and manage risk.
Trading Style Compatibility:
The thrust indicator shines in momentum trading strategies, providing clear signals for entering trades ahead of potential price jumps. The integration of moving averages and volume analysis supports a variety of trading styles, including day trading and swing trading, by offering insights into trend strength and potential reversals.
How the Thrust Indicator Works:
When you see a thrust indicator (green upwards arrow below a candle) when the price is moving out of a consolidation or low volatility price-range , that's the buy point.
The thrust indicator is NOT indended as an indicator for long term positions or trend reversals, but for entries at a good price while capturing the first day of a potential 5-20% move in the coming 3-5 days.
The thrust indicator pinpoints moments when a stock shows a strong upward momentum, characterized by a candlestick closing above the highs of the preceding two days. This identifies a momentum burst, signaling an optimal entry point for traders looking to profit from a short-term price movement, typically ranging from 5-20% over the following 3-5 days. Such precision in identifying entry points is invaluable for traders focusing on capturing quick gains from market volatility.
"Top / Watch out" Indicator:
In addition to the script's core functionality, the "WatchOut" indicator plays a crucial role in identifying potential reversals after significant price movements. By analyzing conditions such as recent price increases compared to the average daily range, RSI levels, and the opening price distance from the EMA, the "WatchOut" indicator alerts traders to exercise caution. This feature is pivotal for those looking to avoid entering trades that might be on the verge of a pullback or reversal, enhancing the script's utility in managing risk.
Chilllax Moving Averages with Qullamaggie colors// Display 2 Moving Averages. Default is 10d sma and 20d sma. You can choose any length. Choose sma, or ema. Choose ma of Open, High, Low, or Close
// Color code is based on Qullamaggie's idea:
// Dark green = 10d ma > 20d ma, and both trending up
// Light green = 10d ma > 20d ma, but only 10d ma trending up
// Yellow = 10d ma > 20d ma, but neither trending up
// You can change the color
// You can hide the colors, then it will simply show 2 moving averages of your choice
// Trend is comparing the ma from X trendlen days ago. Default to 5 days ago. So, if today's ma is > 5 days ago, it is trending up