Penguin Volatility State StrategyPenguin Volatility State Strategy
This document provides details on the "Penguin Volatility State" trading strategy for the TradingView platform. It is a strategy designed to identify different market conditions and execute trades based on momentum and volatility.
Overview
This strategy uses a combination of several popular indicators, including Bollinger Bands (BB), Keltner Channels (KC), Exponential Moving Averages (EMAs), and the Relative Strength Index (RSI), to classify the market into four main states, represented by different colors on the chart:
Green: Strong uptrend.
Red: Strong downtrend.
Yellow: A pullback or consolidation phase within an uptrend (potential reversal signal).
Blue: A pullback or consolidation phase within a downtrend (potential reversal signal).
The goal of the strategy is to enter trades in the direction of the strong trend (Green and Red states) and allow the user to filter out noise during sideways market conditions (Yellow and Blue states).
How the Indicators Work
Bollinger Bands & Keltner Channels: Used to measure market volatility. The difference between the width of the BB and KC (diff) is used to calculate an RSI to measure the "acceleration" of volatility.
EMAs (Fast & Slow): Used to determine the primary trend direction. If the fast EMA is above the slow EMA, it is considered an uptrend, and vice versa.
RSI of Diff: This is the core component for measuring the momentum of volatility. When this RSI value is above its own moving average, it signifies strong momentum, which is a key condition for entering a trade.
Filters and Strategy Logic
Users can customize the strategy's behavior through three main filters:
Filter Sideways Markets (RULE 1): If enabled, the strategy will only enter trades in the Green state (for Longs) and Red state (for Shorts), avoiding sideways conditions (Yellow and Blue).
Trade Only on Strong Momentum (RULE 2): If enabled, the strategy will only enter trades when there is strong momentum (when the RSI of Diff is above its moving average).
Enter/Exit on Exact Transition (RULE 3): If enabled, the strategy will enter and exit orders only at the exact crossover of the RSI of Diff and its moving average. This can lead to more precise entries/exits but may also cause some opportunities to be missed.
Inputs
BB/KC Length: The number of bars used to calculate Bollinger Bands and Keltner Channels.
BB Multiplier: The standard deviation multiplier for the Bollinger Bands.
KC Multiplier: The ATR multiplier for the Keltner Channels.
Fast EMA Length: The number of bars for the fast EMA.
Slow EMA Length: The number of bars for the slow EMA.
RSI of Diff Length: The number of bars for the RSI of diff.
SMA of RSI Length: The number of bars for the moving average of the RSI of Diff.
Trade Direction: Choose to trade Long Only, Short Only, or Both.
Filters (RULE 1, 2, 3): Enable/disable the filters as described above.
Pine Script Code
Here is the full code for the strategy. You can copy and paste it into the Pine Editor on TradingView.
//@version=5
strategy("Penguin Volatility State Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value=0.075)
// ===================================================================
// INPUTS
// ===================================================================
// --- Indicator Settings ---
string group_indicators = "Indicator Settings"
bb_len = input.int(20, "BB/KC Length", group=group_indicators)
bb_mult = input.float(2.0, "BB Multiplier", group=group_indicators)
kc_mult = input.float(2.0, "KC Multiplier", group=group_indicators)
ema_fast_len = input.int(12, "Fast EMA Length", group=group_indicators)
ema_slow_len = input.int(26, "Slow EMA Length", group=group_indicators)
rsi_diff_len = input.int(14, "RSI of Diff Length", group=group_indicators)
rsi_avg_len = input.int(7, "SMA of RSI Length", group=group_indicators)
// --- Strategy Filter Settings ---
string group_filters = "Strategy Filters"
trade_direction = input.string("Both", "Trade Direction", options= , group=group_filters)
use_regime_filter = input.bool(true, "RULE 1: Filter Sideways Markets (Yellow & Blue)?", group=group_filters)
use_strength_filter = input.bool(true, "RULE 2: Trade Only on Strong Momentum (RSI Accel)?", group=group_filters)
use_timing_filter = input.bool(false, "RULE 3: Enter/Exit on Exact Transition?", group=group_filters)
// ===================================================================
// INDICATOR CALCULATIONS
// ===================================================================
// --- Bollinger Bands & Keltner Channel ---
basisBB = ta.sma(close, bb_len)
dev = bb_mult * ta.stdev(close, bb_len)
upperBB = basisBB + dev
lowerBB = basisBB - dev
atr = ta.atr(bb_len)
upperKC = basisBB + kc_mult * atr
lowerKC = basisBB - kc_mult * atr
// --- Diff & RSI of Diff Calculation ---
diff = (upperBB - upperKC) / upperKC * 100
diff_change = ta.change(diff)
up = ta.rma(math.max(diff_change, 0), rsi_diff_len)
down = ta.rma(-math.min(diff_change, 0), rsi_diff_len)
rsi_diff = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsi_diff2 = ta.sma(rsi_diff, rsi_avg_len)
// --- EMAs for Market State ---
fast_ma = ta.ema(close, ema_fast_len)
slow_ma = ta.ema(close, ema_slow_len)
apcdc = ta.ema(ohlc4, 2)
// ===================================================================
// STATE DEFINITIONS
// ===================================================================
isBullishTrend = fast_ma > slow_ma
isBearishTrend = fast_ma < slow_ma
isGreen = isBullishTrend and apcdc > fast_ma
isRed = isBearishTrend and apcdc < fast_ma
isYellow = isBullishTrend and apcdc < fast_ma
isBlue = isBearishTrend and apcdc > fast_ma
isRsiAccel = rsi_diff > rsi_diff2
// ===================================================================
// STRATEGY LOGIC
// ===================================================================
// --- Apply Filters to define tradable conditions ---
can_long_base = use_regime_filter ? isGreen : (isGreen or isYellow)
can_short_base = use_regime_filter ? isRed : (isRed or isBlue)
long_condition = use_strength_filter ? can_long_base and isRsiAccel : can_long_base
short_condition = use_strength_filter ? can_short_base and isRsiAccel : can_short_base
entry_long_timing = ta.crossunder(rsi_diff2, rsi_diff) and can_long_base
exit_long_timing = ta.crossunder(rsi_diff, rsi_diff2)
entry_short_timing = ta.crossunder(rsi_diff2, rsi_diff) and can_short_base
exit_short_timing = ta.crossunder(rsi_diff, rsi_diff2)
// --- Determine Final Entry/Exit Conditions ---
final_entry_long = use_timing_filter ? entry_long_timing : long_condition
final_exit_long = use_timing_filter ? exit_long_timing : not long_condition
final_entry_short = use_timing_filter ? entry_short_timing : short_condition
final_exit_short = use_timing_filter ? exit_short_timing : not short_condition
// --- Check Trade Direction permission ---
allow_long = trade_direction == "Both" or trade_direction == "Long Only"
allow_short = trade_direction == "Both" or trade_direction == "Short Only"
// --- Execute Trades ---
if (final_entry_long and allow_long)
strategy.entry("Long", strategy.long)
if (final_exit_long)
strategy.close("Long")
if (final_entry_short and allow_short)
strategy.entry("Short", strategy.short)
if (final_exit_short)
strategy.close("Short")
// ===================================================================
// VISUALIZATION
// ===================================================================
bgcolor(isGreen ? color.new(color.green, 85) : isRed ? color.new(color.red, 85) : isYellow ? color.new(color.yellow, 85) : isBlue ? color.new(color.blue, 85) : na)
Disclaimer
This strategy is provided for educational and informational purposes only and is not financial advice.
Past performance from backtesting does not guarantee future results.
Trading involves risk. Investors should conduct their own research and exercise due diligence before making any investment decisions and should manage their own risk.
Trading-strategy
Chiaroscuro Scalp Model A [Signal + Visuals]This indicator is based on the Chiaroscuro Scalp Model A — a precision-based scalping system that identifies high-probability trade setups during the London and New York sessions. It combines daily range expansion, order blocks, fair value gaps, and W/M reversal patterns to generate 20-pip scalping opportunities with clearly plotted stop loss and take profit levels. Ideal for intraday traders seeking structured, rule-based entries.
Phase Cross Strategy with Zone### Introduction to the Strategy
Welcome to the **Phase Cross Strategy with Zone and EMA Analysis**. This strategy is designed to help traders identify potential buy and sell opportunities based on the crossover of smoothed oscillators (referred to as "phases") and exponential moving averages (EMAs). By combining these two methods, the strategy offers a versatile tool for both trend-following and short-term trading setups.
### Key Features
1. **Phase Cross Signals**:
- The strategy uses two smoothed oscillators:
- **Leading Phase**: A simple moving average (SMA) with an upward offset.
- **Lagging Phase**: An exponential moving average (EMA) with a downward offset.
- Buy and sell signals are generated when these phases cross over or under each other, visually represented on the chart with green (buy) and red (sell) labels.
2. **Phase Zone Visualization**:
- The area between the two phases is filled with a green or red zone, indicating bullish or bearish conditions:
- Green zone: Leading phase is above the lagging phase (potential uptrend).
- Red zone: Leading phase is below the lagging phase (potential downtrend).
3. **EMA Analysis**:
- Includes five commonly used EMAs (13, 26, 50, 100, and 200) for additional trend analysis.
- Crossovers of the EMA 13 and EMA 26 act as secondary buy/sell signals to confirm or enhance the phase-based signals.
4. **Customizable Parameters**:
- You can adjust the smoothing length, source (price data), and offset to fine-tune the strategy for your preferred trading style.
### What to Pay Attention To
1. **Phases and Zones**:
- Use the green/red phase zone as an overall trend guide.
- Avoid taking trades when the phases are too close or choppy, as it may indicate a ranging market.
2. **EMA Trends**:
- Align your trades with the longer-term trend shown by the EMAs. For example:
- In an uptrend (price above EMA 50 or EMA 200), prioritize buy signals.
- In a downtrend (price below EMA 50 or EMA 200), prioritize sell signals.
3. **Signal Confirmation**:
- Consider combining phase cross signals with EMA crossovers for higher-confidence trades.
- Look for confluence between the phase signals and EMA trends.
4. **Risk Management**:
- Always set stop-loss and take-profit levels to manage risk.
- Use the phase and EMA zones to estimate potential support/resistance areas for exits.
5. **Whipsaws and False Signals**:
- Be cautious in low-volatility or sideways markets, as the strategy may generate false signals.
- Use additional indicators or filters to avoid entering trades during unclear market conditions.
### How to Use
1. Add the strategy to your chart in TradingView.
2. Adjust the input settings (e.g., smoothing length, offsets) to suit your trading preferences.
3. Enable the strategy tester to evaluate its performance on historical data.
4. Combine the signals with your own analysis and risk management plan for best results.
This strategy is a versatile tool, but like any trading method, it requires proper understanding and discretion. Always backtest thoroughly and trade with discipline. Let me know if you need further assistance or adjustments to the strategy!
GP - SRSI ChannelGP - SRSI Channel Indicator
The GP - SRSI Channel is a channel indicator derived from the Stochastic RSI (SRSI) oscillator. It combines SRSI data from multiple timeframes to analyze minimum, maximum, and closing values, forming a channel based on these calculations. The goal is to identify overbought and oversold zones with color coding and highlight potential trading opportunities by indicating trend reversal points.
How It Works
SRSI Calculation: The indicator calculates the Stochastic RSI values using open, high, low, and close prices from the selected timeframes.
Channel Creation: Minimum and maximum values derived from these calculations are combined across multiple timeframes. The midpoint is calculated as the average of these values.
Color Coding: Zones within the channel are color-coded with a gradient from red to green based on the ratios. Green zones typically indicate selling opportunities, while red zones suggest buying opportunities.
Visual Elements:
The channel boundaries (min/max) are displayed as lines.
Overbought/oversold regions (95-100 and 0-5) are highlighted with shaded areas.
Additional explanatory labels are placed on key levels to guide users.
How to Use
Trading Strategy: This indicator can be used for both trend following and identifying reversal points. Selling opportunities can be evaluated when the channel reaches the upper green zone, while buying opportunities can be considered in the lower red zone.
Timeframe Selection: Users can analyze multiple timeframes simultaneously to gain a broader perspective.
Customization: RSI and Stochastic RSI parameters are adjustable, allowing users to tailor the indicator to their trading strategies.
Important Note
This indicator is for informational purposes only and should not be used as a sole basis for trading decisions. Please validate the results of the indicator with your own analysis.
Binary Option Strategy Tester with Martingale-Basic V.2In Binary options, strategy testing is a bit different. The strategy result depends upon expiry intervals and payout ratio.
My previous script was a try to resolve this but has some bugs in specific choices. The new version overcame those and added some new features useful for binary option strategy testing.
Assumption:
We are opening position at next candle after signal come
Chart interval is option expiry time.
We are taking the position at opening price
Our call will be profitable if we get a green candle and put will be profitable if we get a red candle
We can open only one trade at a time. So if we are in trade, subsequent signals will be ignored.
All Input Options:
Test Call/Put individually or both. Default BOTH
Select up to 5 Martingale levels. Default 2
Type of Martingale Trade. Default “SAME”
“SAME”: If you are trading CALL and incur a loss, you are taking CALL in subsequent Martingale levels.
“OPSITE”: if you are trading CALL and incur a loss, you are taking PUT in subsequent Martingale levels.
“FOLLOW CANDLE COLOR”: You are following candle color in Martingale levels, i.e if the loss candle is RED, you are taking PUT in subsequent candles.
“OPPOSITE CANDLE COLOR”: You are taking opposite candle color trade, i.e if the loss candle is RED, you are taking CALL in subsequent candle.
Select Specific Trading Session. Please select “USE SPECIFIC SESSION”. Default: TRUE
Put the investment amount per option. Default: 10
Payout ratio. Default: 80%
The strategy is taken from Vdub Binary Options SniperVX v1 (by @vdubus). I have deleted extra parts and kept only the necessary parts.
Result Table
Signal and Win Levels:
Signal and Loss:
Please note that Binary options trading is very risky. You must be aware of the risk and be willing to accept them in order to invest in binary options. Only invest what you can afford to lose. The past performance of any trading system, strategy, or methodology is not necessarily indicative of future results.
SpreadTrade - Auto-Cointegration (ps5)Decsription: Auto-Cointegration-Based Pair Trading Strategy (revised version)
To review, there are three popular styles of Pair trading: distance-based pair trading, correlation-based pair trading and cointegration-based pair trading. Typically, they require preliminary statistical estimation of the viability of the corresponding strategy.
Basically a pair trade strategy boils down to shorting the outperforming instrument and going long on the underperforming instrument whenever the temporary correlation weakens which means one instrument is going up and another is going down. Apart from the typical cointegration strategy which employs two cointegrated instruments, this script uses just one instrument, in base timeframe and in lagged timeframe, actually making it an auto-cointegration, or better still, an auto-correlation strategy.
Notice that each moving average function may require different Threshold settings.The orange cross symbol indicates the exit points. To filter out the signals use higher values for the LongWindow and the Threshold parameters. Also pay attention that in some cases with some moving averages the color of the signals has to be inverted.
Binary Option Strategy Tester with MartingaleIn Binary options, strategy testing is a bit different. The script is just a try to test Binary options strategies.
Assumption:
We are opening position at next candle after signal come
We are taking the position at opening price
Our call will be profitable if we get a green candle and put will be profitable if we get a red candle
We can open only one trade at a time. So if we are in trade, subsequent signals will be ignored.
The script is not counting your profit or loss, it just counting the winning and losing trades.
Input Options:
Choose long only or short only test. Default is both.
You can continue your trade with Martingale Level, up to 5. Default is 1 (no Martingale)
You can choose Martingale trade type
SAME: if call subsequent trade will be call only and vice versa
OPPOSITE: if call subsequent trade will be put
FOLLOW CANDLE COLOR: Subsequent trade will follow previous candle color
OPPOSITE CANDLE COLOR: Subsequent trade will opposite of previous candle color
You can choose trading session to test. Default is false.
The strategy is taken from Vdub Binary Options SniperVX v1 (by @vdubus) . I have deleted extra parts and kept only the necessary part.
Without Martingale
Result Table
With Martingale
I am very new to Pine script, so waiting for your comments and review.
eha Moving Averages StrategyMoving Average based strategies are very popular ones among both long-term investors and short-term traders as they can be tailored to any time frame. One of the main moving average strategies are crossovers. The very simple type is a price crossover , which is when the price crosses above or below a moving average to signal a potential change in trend.
Another strategy is to apply two moving averages to a chart: one longer (or slow) and one shorter (or fast). When the shorter-term MA crosses above the longer-term MA, it's a buy signal, as it indicates that the trend is shifting up (also known as “ Golden Cross ”). Meanwhile, when the shorter-term MA crosses below the longer-term MA, it's a sell signal, as it indicates that the trend is shifting down (which is also known as “ Dead/Death Cross ”).
This is a study to find a suitable trading strategy for 4-6 hour time frames. As you can see the performance is currently very poor. It has just generated almost 90 trades in a very long period from January 2017 to the time of publishing the study for the first time.
Moving averages work quite well in strong trending conditions but poorly in choppy or ranging conditions. Adjusting the time frame can correct this problem temporarily, although, at some point, these issues are likely to occur regardless of the time frame chosen for the moving average(s).
I am working on this basic strategy to make its performance better and I will update the post in the future. So keep in touch by following the post.
Why have I republished my study?
It sounds like TradingView stores and indexes scripts based on the title of the post rather than the actual title of the scripts and if one chose general terms as the title of the post, the TradingView script search engine may be unable to find it. So I decided to repost the strategy with a more searchable and unique prefix of " eha ".
Please provide me with your precious feedback.
Simple BTC trading strategy based on yesterday's trading rangeOnce market opens, the strategy calculates the price to send a stop buy order
The order is calculated as the sum of yesterday's range multiplied by a special number and today's open price
System has no stops yet
System closes the position on session close
The performance is quite good
Feel free to use it and trade it
Good luck and good trading
Signal for Backtesting-Trading Engine [PineCoders]This is a companion script to the PineCoders Backtesting-Trading Engine. It illustrates how to build a signal plot in another script, which can in turn be fed in the Engine to provide entry, exit, filter and stop information.
Connection to the Engine is done through its “External Indicator” input field at the very bottom of the Engine’s Settings/Inputs.
The Engine must be operating in study mode to be able to connect an external indicator to it.
The way this script builds the signal is straightforward, as you will see in the code. Two aspects are worth mentioning:
The “FudgeStop()” function used to fudge the stop value by one tick for the rare cases where it will match one of the protocol reserved values, i.e. 1, 2 or 3.
The priority and exclusivity given to the different types of signals in the signal-building “Signal = …” line. No two signals can be sent simultaneously through the signal plot, except for the entry and stop combination.
You can determine in this script’s Settings/Inputs the type of signals that will go through the signal plot.
This script respects the following protocol:
EXTERNAL SIGNAL PROTOCOL
Only one external indicator can be connected to a script; in order to leverage its use to the fullest, the engine provides options to use it as either an entry signal, an entry/exit signal or a filter. When used as an entry signal, you can also use the signal to provide the entry’s stop. Here’s how this works:
For filter state: supply +1 for bull (long entries allowed), -1 for bear (short entries allowed).
For entry signals: supply +2 for long, -2 for short.
For exit signals: supply +3 for exit from long, -3 for exit from short.
To send an entry stop level with an entry signal: Send positive stop level for long entry (e.g. 103.33 to enter a long with a stop at 103.33), negative stop level for short entry (e.g. -103.33 to enter a short with a stop at 103.33). If you use this feature, your indicator will have to check for exact stop levels of 1.0, 2.0 or 3.0 and their negative counterparts, and fudge them with a tick in order to avoid confusion with other signals in the protocol.
Remember that mere generation of the values by your indicator will have no effect until you explicitly allow their use in the appropriate sections of the Engine’s Settings/Inputs.
Look first. Then leap.