ConditionalAverages█ OVERVIEW
This library is a Pine Script™ programmer’s tool containing functions that average values selectively.
█ CONCEPTS
Averaging can be useful to smooth out unstable readings in the data set, provide a benchmark to see the underlying trend of the data, or to provide a general expectancy of values in establishing a central tendency. Conventional averaging techniques tend to apply indiscriminately to all values in a fixed window, but it can sometimes be useful to average values only when a specific condition is met. As conditional averaging works on specific elements of a dataset, it can help us derive more context-specific conclusions. This library offers a collection of averaging methods that not only accomplish these tasks, but also exploit the efficiencies of the Pine Script™ runtime by foregoing unnecessary and resource-intensive for loops.
█ NOTES
To Loop or Not to Loop
Though for and while loops are essential programming tools, they are often unnecessary in Pine Script™. This is because the Pine Script™ runtime already runs your scripts in a loop where it executes your code on each bar of the dataset. Pine Script™ programmers who understand how their code executes on charts can use this to their advantage by designing loop-less code that will run orders of magnitude faster than functionally identical code using loops. Most of this library's function illustrate how you can achieve loop-less code to process past values. See the User Manual page on loops for more information. If you are looking for ways to measure execution time for you scripts, have a look at our LibraryStopwatch library .
Our `avgForTimeWhen()` and `totalForTimeWhen()` are exceptions in the library, as they use a while structure. Only a few iterations of the loop are executed on each bar, however, as its only job is to remove the few elements in the array that are outside the moving window defined by a time boundary.
Cumulating and Summing Conditionally
The ta.cum() or math.sum() built-in functions can be used with ternaries that select only certain values. In our `avgWhen(src, cond)` function, for example, we use this technique to cumulate only the occurrences of `src` when `cond` is true:
float cumTotal = ta.cum(cond ? src : 0) We then use:
float cumCount = ta.cum(cond ? 1 : 0) to calculate the number of occurrences where `cond` is true, which corresponds to the quantity of values cumulated in `cumTotal`.
Building Custom Series With Arrays
The advent of arrays in Pine has enabled us to build our custom data series. Many of this library's functions use arrays for this purpose, saving newer values that come in when a condition is met, and discarding the older ones, implementing a queue .
`avgForTimeWhen()` and `totalForTimeWhen()`
These two functions warrant a few explanations. They operate on a number of values included in a moving window defined by a timeframe expressed in milliseconds. We use a 1D timeframe in our example code. The number of bars included in the moving window is unknown to the programmer, who only specifies the period of time defining the moving window. You can thus use `avgForTimeWhen()` to calculate a rolling moving average for the last 24 hours, for example, that will work whether the chart is using a 1min or 1H timeframe. A 24-hour moving window will typically contain many more values on a 1min chart that on a 1H chart, but their calculated average will be very close.
Problems will arise on non-24x7 markets when large time gaps occur between chart bars, as will be the case across holidays or trading sessions. For example, if you were using a 24H timeframe and there is a two-day gap between two bars, then no chart bars would fit in the moving window after the gap. The `minBars` parameter mitigates this by guaranteeing that a minimum number of bars are always included in the calculation, even if including those bars requires reaching outside the prescribed timeframe. We use a minimum value of 10 bars in the example code.
Using var in Constant Declarations
In the past, we have been using var when initializing so-called constants in our scripts, which as per the Style Guide 's recommendations, we identify using UPPER_SNAKE_CASE. It turns out that var variables incur slightly superior maintenance overhead in the Pine Script™ runtime, when compared to variables initialized on each bar. We thus no longer use var to declare our "int/float/bool" constants, but still use it when an initialization on each bar would require too much time, such as when initializing a string or with a heavy function call.
Look first. Then leap.
█ FUNCTIONS
avgWhen(src, cond)
Gathers values of the source when a condition is true and averages them over the total number of occurrences of the condition.
Parameters:
src : (series int/float) The source of the values to be averaged.
cond : (series bool) The condition determining when a value will be included in the set of values to be averaged.
Returns: (float) A cumulative average of values when a condition is met.
avgWhenLast(src, cond, cnt)
Gathers values of the source when a condition is true and averages them over a defined number of occurrences of the condition.
Parameters:
src : (series int/float) The source of the values to be averaged.
cond : (series bool) The condition determining when a value will be included in the set of values to be averaged.
cnt : (simple int) The quantity of last occurrences of the condition for which to average values.
Returns: (float) The average of `src` for the last `x` occurrences where `cond` is true.
avgWhenInLast(src, cond, cnt)
Gathers values of the source when a condition is true and averages them over the total number of occurrences during a defined number of bars back.
Parameters:
src : (series int/float) The source of the values to be averaged.
cond : (series bool) The condition determining when a value will be included in the set of values to be averaged.
cnt : (simple int) The quantity of bars back to evaluate.
Returns: (float) The average of `src` in last `cnt` bars, but only when `cond` is true.
avgSince(src, cond)
Averages values of the source since a condition was true.
Parameters:
src : (series int/float) The source of the values to be averaged.
cond : (series bool) The condition determining when the average is reset.
Returns: (float) The average of `src` since `cond` was true.
avgForTimeWhen(src, ms, cond, minBars)
Averages values of `src` when `cond` is true, over a moving window of length `ms` milliseconds.
Parameters:
src : (series int/float) The source of the values to be averaged.
ms : (simple int) The time duration in milliseconds defining the size of the moving window.
cond : (series bool) The condition determining which values are included. Optional.
minBars : (simple int) The minimum number of values to keep in the moving window. Optional.
Returns: (float) The average of `src` when `cond` is true in the moving window.
totalForTimeWhen(src, ms, cond, minBars)
Sums values of `src` when `cond` is true, over a moving window of length `ms` milliseconds.
Parameters:
src : (series int/float) The source of the values to be summed.
ms : (simple int) The time duration in milliseconds defining the size of the moving window.
cond : (series bool) The condition determining which values are included. Optional.
minBars : (simple int) The minimum number of values to keep in the moving window. Optional.
Returns: (float) The sum of `src` when `cond` is true in the moving window.
Komut dosyalarını "豪24配债" için ara
Volume fight strategyThe Volume fight strategy looks for the predominance of bullish or bearish trading volume on the chart by dividing the trading volume in the bar into 2 parts - "bullish volume" and "bearish volume", and comparing the weighted average values by volume with each other at a given distance.
This strategy is suitable for any instrument (cryptocurrency, Forex, stocks) and is able to work on any TF.
The Volume fight strategy should be used as an auxiliary indicator that tells you who is currently prevailing in the market - " bulls "or"bears".
To configure the strategy , it is necessary to set the range of evaluation of the predominance of bullish or bearish volume (the number of bars, by default-24 bars for TF=1H). The smaller the TF, the higher the range value should be used to filter out false signals.
When there is a predominance of "bulls" on the chart, a green triangle appears (relevant at the close of the bar) and the histogram is highlighted in green, when "bears" appear on the chart, a red triangle appears (relevant at the close of the bar) and the histogram is highlighted in red.
In the strategy settings, there is smoothing to reduce false signals and highlight the flat zone by specifying a percentage, at least which should be the difference between the forces of the "bullish" and "bearish" volume . If the difference between the volume forces is less than the specified one (by default-15%), the zone is considered flat and is displayed in gray on the histogram.
If you set the percentage to zero, the flat zones will not be highlighted, but there will be much more false signals, since the strategy becomes very sensitive when the smoothing percentage decreases.
There is a function-to show the color background of the current trading zone. For" bullish "- green, for" bearish " - red.
In the settings, you can enable the display and use of each signal in the trading zone, not only the initial one, but also each after the flat zone. By default, only the signal of the beginning of the ascending/descending zone is used.
The strategy has alerts for "bullish" and "bearish" movements.
👉Use alerts - "alert() function calls only"
If you have any questions, you can write to me in private messages or by using the contacts in my signature.
----------------------------------------------------
Стратегия Volume fight ищет на графике преобладание бычьего или медвежьего объёма торгов путём разделения торгового объёма в баре на 2 части - "бычий объём" и "медвежий объём", и сравнения средне-взвешенных значений по объёму между собой на заданной дистанции.
Данная стратегия подходит для любого инструмента (криптовалюта, Forex, акции) и способен работать на любом ТФ.
Стратегию Volume fight следует использовать как вспомогательный индикатор, который подсказывает Вам кто сейчас преобладает на рынке - "быки" или "медведи".
Для настройки стратегии необходимо выставить диапазон оценки преобладания бычьего или медвежьего объема (количество баров, по умолчанию - 24 бара для ТФ=1Ч). Чем меньше ТФ, тем выше следует использовать значение диапазона, чтобы отфильтровать ложные сигналы.
При возникновении преобладания на графике "быков" появляется зелёный треугольник (актуален по закрытию бара) и гистограмма подсвечивается зелёным цветом, при возникновении на графике "медведей" появляется красный треугольник (актуален по закрытию бара) и гистограмма подсвечивается красным цветом.
В настройках стратегии есть сглаживание для уменьшения ложных сигналов и выделения зоны флета с помощью указания процента, не менее которого, должна быть разница между силами "бычьего" и "медвежьего" объёма. Если разница между силами объёмов меньше заданного (по умолчанию - 15%), то зона считается флетовой и отображается на гистограмме серым цветом.
Если выставить процент равным нулю, то зоны флета выделяться не будут, но будет гораздо больше ложных сигналов, так как стратегия становится очень чувствительной при снижении процента сглаживания.
Есть функция - показывать цветовой фон текущей торговой зоны. Для "бычьего" - зелёный, для "медвежьего" - красный.
В настройках можно включить отображение и использование каждого сигнал в торговой зоне, не только начального, но и каждого после зоны флета. По умолчанию - только сигнал начала восходящей/нисходящей зоны.
Стратегия имеет оповещения для "бычьего" и "медвежьего" движения.
👉 Используйте оповещения - "Только при вызове функции alert()".
По любым вопросам Вы можете написать мне в личные сообщения или по контактам в моей подписи.
Volume fightThe Volume fight indicator looks for the predominance of bullish or bearish trading volume on the chart by dividing the trading volume in the bar into 2 parts - "bullish volume" and "bearish volume", and comparing the weighted average values by volume with each other at a given distance.
This indicator is suitable for any instrument (cryptocurrency, Forex, stocks) and is able to work on any TF.
The Volume fight indicator should be used as an auxiliary indicator that tells you who is currently prevailing in the market - " bulls "or"bears".
To configure the indicator, it is necessary to set the range of evaluation of the predominance of bullish or bearish volume (the number of bars, by default-24 bars for TF=1H). The smaller the TF, the higher the range value should be used to filter out false signals.
When there is a predominance of "bulls" on the chart, a green triangle appears (relevant at the close of the bar) and the histogram is highlighted in green, when "bears" appear on the chart, a red triangle appears (relevant at the close of the bar) and the histogram is highlighted in red.
In the indicator settings, there is smoothing to reduce false signals and highlight the flat zone by specifying a percentage, at least which should be the difference between the forces of the "bullish" and "bearish" volume. If the difference between the volume forces is less than the specified one (by default-15%), the zone is considered flat and is displayed in gray on the histogram.
If you set the percentage to zero, the flat zones will not be highlighted, but there will be much more false signals, since the indicator becomes very sensitive when the smoothing percentage decreases.
There is a function-to show the color background of the current trading zone. For" bullish "- green, for" bearish " - red.
In the settings, you can enable the display and use of each signal in the trading zone, not only the initial one, but also each after the flat zone. By default, only the signal of the beginning of the ascending/descending zone is used.
The indicator has alerts for "bullish" and "bearish" movements. Use alerts - "Once per bar close".
If you have any questions, you can write to me in private messages or by using the contacts in my signature.
----------------------------------------------------
Индикатор Volume fight ищет на графике преобладание бычьего или медвежьего объёма торгов путём разделения торгового объёма в баре на 2 части - "бычий объём" и "медвежий объём", и сравнения средне-взвешенных значений по объёму между собой на заданной дистанции.
Данный индикатор подходит для любого инструмента (криптовалюта, Forex, акции) и способен работать на любом ТФ.
Индикатор Volume fight следует использовать как вспомогательный индикатор, который подсказывает Вам кто сейчас преобладает на рынке - "быки" или "медведи".
Для настройки индикатора необходимо выставить диапазон оценки преобладания бычьего или медвежьего объема (количество баров, по умолчанию - 24 бара для ТФ=1Ч). Чем меньше ТФ, тем выше следует использовать значение диапазона, чтобы отфильтровать ложные сигналы.
При возникновении преобладания на графике "быков" появляется зелёный треугольник (актуален по закрытию бара) и гистограмма подсвечивается зелёным цветом, при возникновении на графике "медведей" появляется красный треугольник (актуален по закрытию бара) и гистограмма подсвечивается красным цветом.
В настройках индикатора есть сглаживание для уменьшения ложных сигналов и выделения зоны флета с помощью указания процента, не менее которого, должна быть разница между силами "бычьего" и "медвежьего" объёма. Если разница между силами объёмов меньше заданного (по умолчанию - 15%), то зона считается флетовой и отображается на гистограмме серым цветом.
Если выставить процент равным нулю, то зоны флета выделяться не будут, но будет гораздо больше ложных сигналов, так как индикатор становится очень чувствительным при снижении процента сглаживания.
Есть функция - показывать цветовой фон текущей торговой зоны. Для "бычьего" - зелёный, для "медвежьего" - красный.
В настройках можно включить отображение и использование каждого сигнал в торговой зоне, не только начального, но и каждого после зоны флета. По умолчанию - только сигнал начала восходящей/нисходящей зоны.
Индикатор имеет оповещения для "бычьего" и "медвежьего" движения. Используйте оповещения - "на закрытии бара".
По любым вопросам Вы можете написать мне в личные сообщения или по контактам в моей подписи.
Single Prints - Session Initial BalancesDisclaimer: Expose yourself to the knowledge of different trading methods. If you are unaware of what a Single Print is then do some research and broaden your knowledge.
This indicator has only been tested on BTCUSDT Binance pair. This indicator is meant to be used on the 30 minute timeframe to highlight Single Prints.
The calculations are base on 0000 UTC and what Single Prints are created during that day.
Single Prints
Single Prints are where prices moves to fast through an area (on a 30 minute timeframe), in the case of this indicator in $50 intervals, where the price has not yet cross back past, represented as orange lines. If you were viewing this on a Time Price Opportunity Chart (TPO) each $50 would be represented as a square with a letter in it. If price has only been through that area once, within that 24 hour period, then it is called a Single Print. If however the Single Print is on the lower wick of the candle it is called a Buying Tail and on the Upper Wick a Selling Tail.
Single Prints leave low volume nodes with liquidity gaps, these inefficient moves tend to get filled, and we can seek trading opportunities once they get filled, or we can also enter before they get filled and use these single prints as targets.
Single Prints are a sign of emotional buying or selling as very little time was spent at those levels and thus there is no value there.
The endpoints of single print sections are considered to be potential support or resistance points and or get filled (like a CME gap).
The above is only a very short summary, to understand Single Prints, Buying Tails and Selling Tails more please do your own research (DYOR).
References:
Trading Riot Volume Profile - Website
TOROS TPO Charts Explained - Youtube
Session Boxes
Session Boxes are the high and low of that markets session before the new market session opens. I used the data from the website Trading Hours for the time input.
White box – Start of day UTC 0000 to Market Close UTC 2000
Purple box – Asia Start UTC 0130 to London Start UTC 0700
Yellow box – London Start UTC 0700 to New York Start UTC 1330
Blue box – New York Start UTC 1330 to Market Close UTC 2000
Red box – Market Close UTC 2000 to End of day UTC 2359
References:
Trading Hours - Website
Initial Balance
The Initial Balance is the market range between the high and low of the first hour of trading for the market. In the case of crypto when is the Initial Balance if it is 24/7.
Context of Initial Balance:
The Initial Balance is traditionally the range of prices transacted in the first hour of trade. Many regard the Initial Balance as a significant range because, especially for the index futures which are tied to the underlying stocks, orders entered overnight or before the open are typically executed prior to the end of the first hour of trade. Some use it to understand how the rest of the day may develop, while others use it as a span of time to avoid trading altogether because of its potential volatility.
For this indicator I have coded the Initial Balance time as below:
White Box - To appear for the first hour of the day 0000 to 0100 UTC .
Purple Box - To appear for the first hour of the day 0130 to 0230 UTC .
Yellow Box - To appear for the first hour of the day 0700 to 0800 UTC .
Blue Box - To appear for the first hour of the day 1330 to 1430 UTC .
Red Box - To appear for the first hour of the day 2000 to 2100 UTC .
The diagram above shows some examples:
How price (white arrows) retraces the single prints.
How price (red arrows) uses the single prints as S/R.
References:
Not Hard Trading – Website
My Pivots Initial Balance - Website
Thanks go to:
StackOverFlow Bjorn Mistiaen
Trading View user mvs1231
Please message me if you have any feedback/questions.
I am looking at developing this indicator further in the future.
RexDog Average with ATRBam-- look what Rex did. A RexDog Average with ATR bands-- he's going insane. Simple but powerful.
This indicator includes the RexDog average but provides you with the ability to plot (and customize) both above and below ATR calculated bands.
With this indicator you can display all 3 or any combination of the bands: the RexDog Avg, Adding ATR Upper or the Subtracting ATR Below.
To remove a plot or customize color and line size go to the style options.
Before we get detailed with this version you can customize the default average factor of the RexDog Avg (default is 6). More tips on this below.
How This Works
Just as with the RexDog Average we take the 6 ATR data points (200, 100, 50, 24, 9, 5). We then create an average by dividing by 6. But wait there's more...
With this indicator you can customize independently the above and below bands via a float value for precision. 6 is the default (you can customize by increments at 0.25 or input value you like 1-20).
Now this works opposite how you might think but you'll get it once you start changing the numbers. For instance, editing the above band lowering the ATR factor will raise the band.
RexDog Avg Factor
With this release you are able to change the default average factor (6) to anything you want. You'll find though going too high or low from the default won't get the best results. The default increment change is 0.1 but you can enter any float value you like between 1-20.
The Original RexDog Average Overview
Yes, simple—the RexDog Average is a bias moving average indicator. The purpose is to provide the overall momentum bias you should have when trading an instrument. It works across all markets and all timeframes.
Usage:
Price above the RexDog AVG = long momentum bias
Price below the RexDog AVG = short momentum bias
With the ATR addition most likely your usage will be similar to Bollinger Bands. While not the same as in deviations much of the same principles might apply, especially with customization.
*Note: we have banned the word “trend” in the RexDog Trading Method.
Additional Usage Advice:
If price rips through the average your momentum bias should probably change. 80% of the time when price moves through the RexDog Average it will come back and test the area around average within 1-2 bars. 20% of the time it does not. The momentum is so strong in that direction so look for a 50-70% tests of the bar that impulse through the RexDog Average.
If you are using the RexDog Trading Method by default if the price is above the average and you are short you are in a fade trade. The momentum trade would be long. Of course reverse if price is below.
On multiple time frames. Of course, one timeframe can be long bias and a lower timeframe can be short bias. Which one do you use? Both—if your in a short trade using lower timeframe and with the bias of the average your in a momentum trade—but on the higher timeframe your aware you are essential fading the overall momentum.
Background:
Rex and I searched high and low for one simple thing. A moving average (or combination of some) that we could use to form our momentum bias that worked for all timeframes and all markets we trade.
We tried and tested them all. Even went down the path of ribbons and various other types of hybrid EMA /MA derivatives. Nothing had a high enough accuracy or mathematically was reliable that we could say with a high probability that it was on the right side of the momentum.
We almost stopped and landed on using the true and tested 200 MA—but we found through extensive tests that using the 200MA or EMA you’re often late to the party. Look you don’t need to be the first one in the trade but having a heads up sure helps.
To quote one of the best financial movies of the modern era—Margin Call:
“There are three ways to make a living in this business: be first, be smarter, or cheat… it sure is a hell of a lot easier to be first”. The RexDog Average used properly enables you to be first or damn near close.
Under the Hood:
This is so simple most reading this will discount it. You might even scoff and berate Rex for wasting your time. But you would be wrong. The RexDog Average has been tested across all markets—FOREX, Crypto, Equities, Futures (even tick charts), and even the Penguin population in Antarctica.
The RexDog Average is an average of 6 simple moving averages: 200, 100, 50, 24, 9, 5.
Yes, that’s it.
Funding Rate for FTX:BTCPERP (estimated) v0.1 Original credits goes to @Hayemaker, and @NeoButane for the TWAP portions of this script
By @davewhiiite, 2021-03-27
Version 0.1
Summary: The funding rate is the interest charged / credited to a perpetual futures trader for taking a long or short position. The direction of the funding rate is used as an indicator of trader sentiment (+ve = bullish; -ve = bearish), and therefore useful to plot in real time.
The FTX exchange has published the calculation of their funding rate as follows:
TWAP((future - index) / index) / 24
The formula here is the same, but expresses it in the more common % per 8hr duration:
funding = TWAP((future / index) - 1) * (8 / 24) * 100
For reference: future refers to the FTX bitcoin futures contract price (FTX:BTCPERP) and index is the spot price of bitcoin on the exchange (FTX:BTCUSD)
Additional notes:
Probably best to add to the indicator to a new pane, or as secondary axis
Plot this in combination with FTX:BTCPERP or FTX:BTCUSD, or chart of your choice to complement your bitcoin dashboard
Compare to funding rates published on ViewBase
questions? Ask me!
Universal Global SessionUniversal Global Session
This Script combines the world sessions of: Stocks, Forex, Bitcoin Kill Zones, strategic points, all configurable, in a single Script, to capitalize the opening and closing times of global exchanges as investment assets, becoming an Universal Global Session .
It is based on the great work of @oscarvs ( BITCOIN KILL ZONES v2 ) and the scripts of @ChrisMoody. Thank you Oscar and Chris for your excellent judgment and great work.
At the end of this writing you can find all the internet references of the extensive documentation that I present here. To maximize your benefits in the use of this Script, I recommend that you read the entire document to create an objective and practical criterion.
All the hours of the different exchanges are presented at GMT -6. In Market24hClock you can adjust it to your preferences.
After a deep investigation I have been able to show that the different world sessions reveal underlying investment cycles, where it is possible to find sustained changes in the nominal behavior of the trend before the passage from one session to another and in the natural overlaps between the sessions. These underlying movements generally occur 15 minutes before the start, close or overlap of the session, when the session properly starts and also 15 minutes after respectively. Therefore, this script is designed to highlight these particular trending behaviors. Try it, discover your own conclusions and let me know in the notes, thank you.
Foreign Exchange Market Hours
It is the schedule by which currency market participants can buy, sell, trade and speculate on currencies all over the world. It is open 24 hours a day during working days and closes on weekends, thanks to the fact that operations are carried out through a network of information systems, instead of physical exchanges that close at a certain time. It opens Monday morning at 8 am local time in Sydney —Australia— (which is equivalent to Sunday night at 7 pm, in New York City —United States—, according to Eastern Standard Time), and It closes at 5pm local time in New York City (which is equivalent to 6am Saturday morning in Sydney).
The Forex market is decentralized and driven by local sessions, where the hours of Forex trading are based on the opening range of each active country, becoming an efficient transfer mechanism for all participants. Four territories in particular stand out: Sydney, Tokyo, London and New York, where the highest volume of operations occurs when the sessions in London and New York overlap. Furthermore, Europe is complemented by major financial centers such as Paris, Frankfurt and Zurich. Each day of forex trading begins with the opening of Australia, then Asia, followed by Europe, and finally North America. As markets in one region close, another opens - or has already opened - and continues to trade in the currency market. The seven most traded currencies in the world are: the US dollar, the euro, the Japanese yen, the British pound, the Australian dollar, the Canadian dollar, and the New Zealand dollar.
Currencies are needed around the world for international trade, this means that operations are not dominated by a single exchange market, but rather involve a global network of brokers from around the world, such as banks, commercial companies, central banks, companies investment management, hedge funds, as well as retail forex brokers and global investors. Because this market operates in multiple time zones, it can be accessed at any time except during the weekend, therefore, there is continuously at least one open market and there are some hours of overlap between the closing of the market of one region and the opening of another. The international scope of currency trading means that there are always traders around the world making and satisfying demands for a particular currency.
The market involves a global network of exchanges and brokers from around the world, although time zones overlap, the generally accepted time zone for each region is as follows:
Sydney 5pm to 2am EST (10pm to 7am UTC)
London 3am to 12 noon EST (8pm to 5pm UTC)
New York 8am to 5pm EST (1pm to 10pm UTC)
Tokyo 7pm to 4am EST (12am to 9am UTC)
Trading Session
A financial asset trading session refers to a period of time that coincides with the daytime trading hours for a given location, it is a business day in the local financial market. This may vary according to the asset class and the country, therefore operators must know the hours of trading sessions for the securities and derivatives in which they are interested in trading. If investors can understand market hours and set proper targets, they will have a much greater chance of making a profit within a workable schedule.
Kill Zones
Kill zones are highly liquid events. Many different market participants often come together and perform around these events. The activity itself can be event-driven (margin calls or option exercise-related activity), portfolio management-driven (asset allocation rebalancing orders and closing buy-in), or institutionally driven (larger players needing liquidity to complete the size) or a combination of any of the three. This intense cross-current of activity at a very specific point in time often occurs near significant technical levels and the established trends emerging from these events often persist until the next Death Zone approaches or enters.
Kill Zones are evolving with time and the course of world history. Since the end of World War II, New York has slowly invaded London's place as the world center for commercial banking. So much so that during the latter part of the 20th century, New York was considered the new center of the financial universe. With the end of the cold war, that leadership appears to have shifted towards Europe and away from the United States. Furthermore, Japan has slowly lost its former dominance in the global economic landscape, while Beijing's has increased dramatically. Only time will tell how these death zones will evolve given the ever-changing political, economic, and socioeconomic influences of each region.
Financial Markets
New York
New York (NYSE Chicago, NASDAQ)
7:30 am - 2:00 pm
It is the second largest currency platform in the world, followed largely by foreign investors as it participates in 90% of all operations, where movements on the New York Stock Exchange (NYSE) can have an immediate effect (powerful) on the dollar, for example, when companies merge and acquisitions are finalized, the dollar can instantly gain or lose value.
A. Complementary Stock Exchanges
Brazil (BOVESPA - Brazilian Stock Exchange)
07:00 am - 02:55 pm
Canada (TSX - Toronto Stock Exchange)
07:30 am - 02:00 pm
New York (NYSE - New York Stock Exchange)
08:30 am - 03:00 pm
B. North American Trading Session
07:00 am - 03:00 pm
(from the beginning of the business day on NYSE and NASDAQ, until the end of the New York session)
New York, Chicago and Toronto (Canada) open the North American session. Characterized by the most aggressive trading within the markets, currency pairs show high volatility. As the US markets open, trading is still active in Europe, however trading volume generally decreases with the end of the European session and the overlap between the US and Europe.
C. Strategic Points
US main session starts in 1 hour
07:30 am
The euro tends to drop before the US session. The NYSE, CHX and TSX (Canada) trading sessions begin 1 hour after this strategic point. The North American session begins trading Forex at 07:00 am.
This constitutes the beginning of the overlap of the United States and the European market that spans from 07:00 am to 10:35 am, often called the best time to trade EUR / USD, it is the period of greatest liquidity for the main European currencies since it is where they have their widest daily ranges.
When New York opens at 07:00 am the most intense trading begins in both the US and European markets. The overlap of European and American trading sessions has 80% of the total average trading range for all currency pairs during US business hours and 70% of the total average trading range for all currency pairs during European business hours. The intersection of the US and European sessions are the most volatile overlapping hours of all.
Influential news and data for the USD are released between 07:30 am and 09:00 am and play the biggest role in the North American Session. These are the strategically most important moments of this activity period: 07:00 am, 08:00 am and 08:30 am.
The main session of operations in the United States and Canada begins
08:30 am
Start of main trading sessions in New York, Chicago and Toronto. The European session still overlaps the North American session and this is the time for large-scale unpredictable trading. The United States leads the market. It is difficult to interpret the news due to speculation. Trends develop very quickly and it is difficult to identify them, however trends (especially for the euro), which have developed during the overlap, often turn the other way when Europe exits the market.
Second hour of the US session and last hour of the European session
09:30 am
End of the European session
10:35 am
The trend of the euro will change rapidly after the end of the European session.
Last hour of the United States session
02:00 pm
Institutional clients and very large funds are very active during the first and last working hours of almost all stock exchanges, knowing this allows to better predict price movements in the opening and closing of large markets. Within the last trading hours of the secondary market session, a pullback can often be seen in the EUR / USD that continues until the opening of the Tokyo session. Generally it happens if there was an upward price movement before 04:00 pm - 05:00 pm.
End of the trade session in the United States
03:00 pm
D. Kill Zones
11:30 am - 1:30 pm
New York Kill Zone. The United States is still the world's largest economy, so by default, the New York opening carries a lot of weight and often comes with a huge injection of liquidity. In fact, most of the world's marketable assets are priced in US dollars, making political and economic activity within this region even more important. Because it is relatively late in the world's trading day, this Death Zone often sees violent price swings within its first hour, leading to the proven adage "never trust the first hour of trading in America. North.
---------------
London
London (LSE - London Stock Exchange)
02:00 am - 10:35 am
Britain dominates the currency markets around the world, and London is its main component. London, a central trading capital of the world, accounts for about 43% of world trade, many Forex trends often originate from London.
A. Complementary Stock Exchange
Dubai (DFM - Dubai Financial Market)
12:00 am - 03:50 am
Moscow (MOEX - Moscow Exchange)
12:30 am - 10:00 am
Germany (FWB - Frankfurt Stock Exchange)
01:00 am - 10:30 am
Afríca (JSE - Johannesburg Stock Exchange)
01:00 am - 09:00 am
Saudi Arabia (TADAWUL - Saudi Stock Exchange)
01:00 am - 06:00 am
Switzerland (SIX - Swiss Stock Exchange)
02:00 am - 10:30 am
B. European Trading Session
02:00 am - 11:00 am
(from the opening of the Frankfurt session to the close of the Order Book on the London Stock Exchange / Euronext)
It is a very liquid trading session, where trends are set that start during the first trading hours in Europe and generally continue until the beginning of the US session.
C. Middle East Trading Session
12:00 am - 06:00 am
(from the opening of the Dubai session to the end of the Riyadh session)
D. Strategic Points
European session begins
02:00 am
London, Frankfurt and Zurich Stock Exchange enter the market, overlap between Europe and Asia begins.
End of the Singapore and Asia sessions
03:00 am
The euro rises almost immediately or an hour after Singapore exits the market.
Middle East Oil Markets Completion Process
05:00 am
Operations are ending in the European-Asian market, at which time Dubai, Qatar and in another hour in Riyadh, which constitute the Middle East oil markets, are closing. Because oil trading is done in US dollars, and the region with the trading day coming to an end no longer needs the dollar, consequently, the euro tends to grow more frequently.
End of the Middle East trading session
06:00 am
E. Kill Zones
5:00 am - 7:00 am
London Kill Zone. Considered the center of the financial universe for more than 500 years, Europe still has a lot of influence in the banking world. Many older players use the European session to establish their positions. As such, the London Open often sees the most significant trend-setting activity on any trading day. In fact, it has been suggested that 80% of all weekly trends are set through the London Kill Zone on Tuesday.
F. Kill Zones (close)
2:00 pm - 4:00 pm
London Kill Zone (close).
---------------
Tokyo
Tokyo (JPX - Tokyo Stock Exchange)
06:00 pm - 12:00 am
It is the first Asian market to open, receiving most of the Asian trade, just ahead of Hong Kong and Singapore.
A. Complementary Stock Exchange
Singapore (SGX - Singapore Exchange)
07:00 pm - 03:00 am
Hong Kong (HKEx - Hong Kong Stock Exchange)
07:30 pm - 02:00 am
Shanghai (SSE - Shanghai Stock Exchange)
07:30 pm - 01:00 am
India (NSE - India National Stock Exchange)
09:45 pm - 04:00 am
B. Asian Trading Session
06:00 pm - 03:00 am
From the opening of the Tokyo session to the end of the Singapore session
The first major Asian market to open is Tokyo which has the largest market share and is the third largest Forex trading center in the world. Singapore opens in an hour, and then the Chinese markets: Shanghai and Hong Kong open 30 minutes later. With them, the trading volume increases and begins a large-scale operation in the Asia-Pacific region, offering more liquidity for the Asian-Pacific currencies and their crosses. When European countries open their doors, more liquidity will be offered to Asian and European crossings.
C. Strategic Points
Second hour of the Tokyo session
07:00 pm
This session also opens the Singapore market. The commercial dynamics grows in anticipation of the opening of the two largest Chinese markets in 30 minutes: Shanghai and Hong Kong, within these 30 minutes or just before the China session begins, the euro usually falls until the same moment of the opening of Shanghai and Hong Kong.
Second hour of the China session
08:30 pm
Hong Kong and Shanghai start trading and the euro usually grows for more than an hour. The EUR / USD pair mixes up as Asian exporters convert part of their earnings into both US dollars and euros.
Last hour of the Tokyo session
11:00 pm
End of the Tokyo session
12:00 am
If the euro has been actively declining up to this time, China will raise the euro after the Tokyo shutdown. Hong Kong, Shanghai and Singapore remain open and take matters into their own hands causing the growth of the euro. Asia is a huge commercial and industrial region with a large number of high-quality economic products and gigantic financial turnover, making the number of transactions on the stock exchanges huge during the Asian session. That is why traders, who entered the trade at the opening of the London session, should pay attention to their terminals when Asia exits the market.
End of the Shanghai session
01:00 am
The trade ends in Shanghai. This is the last trading hour of the Hong Kong session, during which market activity peaks.
D. Kill Zones
10:00 pm - 2:00 am
Asian Kill Zone. Considered the "Institutional" Zone, this zone represents both the launch pad for new trends as well as a recharge area for the post-American session. It is the beginning of a new day (or week) for the world and as such it makes sense that this zone often sets the tone for the remainder of the global business day. It is ideal to pay attention to the opening of Tokyo, Beijing and Sydney.
--------------
Sidney
Sydney (ASX - Australia Stock Exchange)
06:00 pm - 12:00 am
A. Complementary Stock Exchange
New Zealand (NZX - New Zealand Stock Exchange)
04:00 pm - 10:45 pm
It's where the global trading day officially begins. While it is the smallest of the megamarkets, it sees a lot of initial action when markets reopen Sunday afternoon as individual traders and financial institutions are trying to regroup after the long hiatus since Friday afternoon. On weekdays it constitutes the end of the current trading day where the change in the settlement date occurs.
B. Pacific Trading Session
04:00 pm - 12:00 am
(from the opening of the Wellington session to the end of the Sydney session)
Forex begins its business hours when Wellington (New Zealand Exchange) opens local time on Monday. Sydney (Australian Stock Exchange) opens in 2 hours. It is a session with a fairly low volatility, configuring itself as the calmest session of all. Strong movements appear when influential news is published and when the Pacific session overlaps the Asian Session.
C. Strategic Points
End of the Sydney session
12:00 am
---------------
Conclusions
The best time to trade is during overlaps in trading times between open markets. Overlaps equate to higher price ranges, creating greater opportunities.
Regarding press releases (news), it should be noted that these in the currency markets have the power to improve a normally slow trading period. When a major announcement is made regarding economic data, especially when it goes against the predicted forecast, the coin can lose or gain value in a matter of seconds. In general, the more economic growth a country produces, the more positive the economy is for international investors. Investment capital tends to flow to countries that are believed to have good growth prospects and subsequently good investment opportunities, leading to the strengthening of the country's exchange rate. Also, a country that has higher interest rates through its government bonds tends to attract investment capital as foreign investors seek high-yield opportunities. However, stable economic growth and attractive yields or interest rates are inextricably intertwined. It's important to take advantage of market overlaps and keep an eye out for press releases when setting up a trading schedule.
References:
www.investopedia.com
www.investopedia.com
www.investopedia.com
www.investopedia.com
market24hclock.com
market24hclock.com
Square Root Moving AverageAbstract
This script computes moving averages which the weighting of the recent quarter takes up about a half weight.
This script also provides their upper bands and lower bands.
You can apply moving average or band strategies with this script.
Introduction
Moving average is a popular indicator which can eliminate market noise and observe trend.
There are several moving average related strategies used by many traders.
The first one is trade when the price is far from moving average.
To measure if the price is far from moving average, traders may need a lower band and an upper band.
Bollinger bands use standard derivation and Keltner channels use average true range.
In up trend, moving average and lower band can be support.
In ranging market, lower band can be support and upper band can be resistance.
In down trend, moving average and upper band can be resistance.
An another group of moving average strategy is comparing short term moving average and long term moving average.
Moving average cross, Awesome oscillators and MACD belong to this group.
The period and weightings of moving averages are also topics.
Period, as known as length, means how many days are computed by moving averages.
Weighting means how much weight the price of a day takes up in moving averages.
For simple moving averages, the weightings of each day are equal.
For most of non-simple moving averages, the weightings of more recent days are higher than the weightings of less recent days.
Many trading courses say the concept of trading strategies is more important than the settings of moving averages.
However, we can observe some characteristics of price movement to design the weightings of moving averages and make them more meaningful.
In this research, we use the observation that when there are no significant events, when the time frame becomes 4 times, the average true range becomes about 2 times.
For example, the average true range in 4-hour chart is about 2 times of the average true range in 1-hour chart; the average true range in 1-hour chart is about 2 times of the average true range in 15-minute chart.
Therefore, the goal of design is making the weighting of the most recent quarter is close to the weighting of the rest recent three quarters.
For example, for the 24-day moving average, the weighting of the most recent 6 days is close to the weighting of the rest 18 days.
Computing the weighting
The formula of moving average is
sum ( price of day n * weighting of day n ) / sum ( weighting of day n )
Day 1 is the most recent day and day k+1 is the day before day k.
For more convenient explanation, we don't expect sum ( weighting of day n ) is equal to 1.
To make the weighting of the most recent quarter is close to the weighting of the rest recent three quarters, we have
sum ( weighting of day 4n ) = 2 * sum ( weighting of day n )
If when weighting of day 1 is 1, we have
sum ( weighting of day n ) = sqrt ( n )
weighting of day n = sqrt ( n ) - sqrt ( n-1 )
weighting of day 2 ≒ 1.414 - 1.000 = 0.414
weighting of day 3 ≒ 1.732 - 1.414 = 0.318
weighting of day 4 ≒ 2.000 - 1.732 = 0.268
If we follow this formula, the weighting of day 1 is too strong and the moving average may be not stable.
To reduce the weighting of day 1 and keep the spirit of the formula, we can add a parameter (we call it as x_1w2b).
The formula becomes
weighting of day n = sqrt ( n+x_1w2b ) - sqrt ( n-1+x_1w2b )
if x_1w2b is 0.25, then we have
weighting of day 1 = sqrt(1.25) - sqrt(0.25) ≒ 1.1 - 0.5 = 0.6
weighting of day 2 = sqrt(2.25) - sqrt(1.25) ≒ 1.5 - 1.1 = 0.4
weighting of day 3 = sqrt(3.25) - sqrt(2.25) ≒ 1.8 - 1.5 = 0.3
weighting of day 4 = sqrt(4.25) - sqrt(3.25) ≒ 2.06 - 1.8 = 0.26
weighting of day 5 = sqrt(5.25) - sqrt(4.25) ≒ 2.3 - 2.06 = 0.24
weighting of day 6 = sqrt(6.25) - sqrt(5.25) ≒ 2.5 - 2.3 = 0.2
weighting of day 7 = sqrt(7.25) - sqrt(6.25) ≒ 2.7 - 2.5 = 0.2
What you see and can adjust in this script
This script plots three moving averages described above.
The short term one is default magenta, 6 days and 1 atr.
The middle term one is default yellow, 24 days and 2 atr.
The long term one is default green, 96 days and 4 atr.
I arrange the short term 6 days to make it close to sma(5).
The other twos are arranged according to 4x length and 2x atr.
There are 9 curves plotted by this script. I made the lower bands and the upper bands less clear than moving averages so it is less possible misrecognizing lower or upper bands as moving averages.
x_src : how to compute the reference price of a day, using 1 to 4 of open, high, low and close.
len : how many days are computed by moving averages
atr : how many days are computed by average true range
multi : the distance from the moving average to the lower band and the distance from the moving average to the lower band are equal to multi * average true range.
x_1w2b : adjust this number to avoid the weighting of day 1 from being too strong.
Conclusion
There are moving averages which the weighting of the most recent quarter is close to the weighting of the rest recent three quarters.
We can apply strategies based on moving averages. Like most of indicators, oversold does not always means it is an opportunity to buy.
If the short term lower band is close to the middle term moving average or the middle term lower band is close to the long term moving average, it may be potential support value.
References
Computing FIR Filters Using Arrays
How to trade with moving averages : the eight trading signals concluded by Granville
How to trade with Bollinger bands
How to trade with double Bollinger bands
The Lazy Trader - Index (ETF) Trend Following Robot50/150 moving average, index (ETF) trend following robot. Coded for people who cannot psychologically handle dollar-cost-averaging through bear markets and extreme drawdowns (although DCA can produce better results eventually), this robot helps you to avoid bear markets. Be a fair-weathered friend of Mr Market, and only take up his offer when the sun is shining! Designed for the lazy trader who really doesn't care...
Recommended Chart Settings:
Asset Class: ETF
Time Frame: Daily
Necessary ETF Macro Conditions:
a) Country must have healthy demographics, good ratio of young > old
b) Country population must be increasing
c) Country must be experiencing price-inflation
Default Robot Settings:
Slow Moving Average: 50 (integer) //adjust to suit your underlying index
Fast Moving Average: 150 (integer) //adjust to suit your underlying index
Bullish Slope Angle: 5 (degrees) //up angle of moving averages
Bearish Slope Angle: -5 (degrees) //down angle of moving averages
Average True Range: 14 (integer) //input for slope-angle formula
Risk: 100 (%) //100% risk means using all equity per trade
ETF Test Results (Default Settings):
SPY (1993 to 2020, 27 years), 332% profit, 20 trades, 6.4 profit factor, 7% drawdown
EWG (1996 to 2020, 24 years), 310% profit, 18 trades, 3.7 profit factor, 10% drawdown
EWH (1996 to 2020, 24 years), 4% loss, 26 trades, 0.9 profit factor, 36% drawdown
QQQ (1999 to 2020, 21 years), 232% profit, 17 trades, 3.6 profit factor, 2% drawdown
EEM (2003 to 2020, 17 years), 73% profit, 17 trades, 1.1 profit factor, 3% drawdown
GXC (2007 to 2020, 13 years), 18% profit, 14 trades, 1.3 profit factor, 26% drawdown
BKF (2009 to 2020, 11 years), 11% profit, 13 trades, 1.2 profit factor, 33% drawdown
A longer time in the markets is better, with the exception of EWH. 6 out of 7 tested ETFs were profitable, feel free to test on your favourite ETF (default settings) and comment below.
Risk Warning:
Not tested on commodities nor other financial products like currencies (code will not work), feel free to leave comments below.
Moving Average Slope Angle Formula:
Reproduced and modified from source:
[fikira] Fibonacci MA / EMA's (Fibma / Fibema)I've made SMA/EMA's NOT based on the principle of the 2(1+1), 3(2+1),
5(3+2), 8(5+3), 13(8+5), 21(13+8), 34(21+13), 55(34+21), ... numbers,
but based on these following Fibonacci numbers:
0,236
0,382
0,500
0,618
0,764
1
Ending up with 2 series of Fibma / Fibema:
"Tiny Fibma / Fibema":
24, 38, 50, 62, 76, 100
"Big Fibma / Fibema":
236, 382, 500, 618, 764, 1000
IMHO it is striking how these lines often act as Resistance/Support,
although (except the 50, 100 & 500) they are not typical MA/EMA's.
They perform very well on every Timeframe as well!
Week:
3 Days:
1 Day:
4h:
1h:
Even on the 15 minutes:
Or 5':
Things to watch for:
Price compared to the Tiny or Big Fibma / Fibema (below or above)
Price compared to important Fibma / Fibema (for example below or
above MA 236, MA 764, MA 1000, ...)
Crossing of Fibma / Fibema 24/76, 236/764 and 38/62, 382/618
(bullish crossover = Lime coloured "cloud", bearish crossunder = Red coloured "cloud"),
...
I've made a change in barcolor if the close crosses the "Big Fibma / Fibema 500"
If price closes above MA/EMA 500, the first bar is yellow coloured,
if price stays above this level, candles are coloured lime/orange (= very bullish)
If price closes under MA/EMA 500, the first bar is purple,
if price stays under this level, candles are standard coloured (= very bearish)
Strategy will follow,
Thanks!
ATR - Baby WhaleScript that shows you the ATR and 0.5 ATR.
You can use this to define your stop loss level when you see a SFP.
Standard setting is the 24 period ATR. You can use this for a 1h chart (24 hours in a day).
So when you play on a 5m chart, you can change the setting to 12 period (12 5m candles in 1 hour).
Percentage Change Comparison [BVCC]This script allows you to input 2 different coins and plot % changes against each other.
Look Back is adjustable to account for different time frame windows. Default is 1, so each line will be graphed on a 1:1 ratio with the candle period selected on the chart. raising this number to 24 will plot the change across every 24 candles and so on. It's pretty interesting to move the input dialogue window out of the way and change this number, watching how the % gain comparisons change in real time.
Default coins to compare are set to BTCUSD and ETHUSD @ coinbase.
RSIVolume_2graf.01[wozdux] Tactics and strategy Tactics and strategy
The indicator combines 2 variants of the RSI indicator. The first option is calculated relative to the normal close price. The second option is calculated relative to the volume price. The volume price is calculated as the product of the volume price. For normal RSI, the default period is 9, for the volume price .
Settings. Level_close sets the width of the middle region, the oscillations of the indicator chart for the average of the closing price. Level_volume*close sets the critical level for the volume price. Period 24 (len1) specifies the RSI calculation period for the volume price. Period 9 (len3) specifies the RSI calculation period for the regular price.
The combination of two versions of the indicator helps to see more truthful information about the mood of buyers and sellers. When the volume price reaches its critical level of 8 units, it is a signal to a strong fall in the price. In this state, you should monitor the classic RSI. Thus, the classic RSI determines the tactical movement, and the volumetric RSI – strategic.
-------------------------------------
Тактика и стратегия
Индикатор совмещает в себе 2 варианта индикатора RSI. Первый вариант вычисляется относительно обычной цены закрытия. Второй вариант вычисляется относительно объемной цены. Объемную цену вычисляют как произведение цены на объем. Для обычного RSI по умолчанию берется период 9 , для объемной цены .
Настройки. Level_close задает ширину средней области колебания графика индикатора для обычной цены закрытия. Level_volume*close задает критический уровень для объемной цены. Период 24 (len1) задает период вычисления RSI для объемной цены. Период 9(len3) задает период вычисления RSI для обычной цены.
Сочетание двух вариантов индикатора помогает увидеть более правдивую информацию о настроениях покупателей и продавцов. Когда объемная цена достигает своего критического уровня 8 единиц, то это является сигналом к сильному падению цены. В этом состоянии следует следить за классической RSI. Таким образом классическое RSI определяет тактическое движение, а объемное RSI – стратегическое.
[astropark] Power Tools Overlay//******************************************************************************
// Power Tools Overlay
// Inner Version 1.2.1 13/12/2018
// Developer: iDelphi
// Developer: astropark (Ichimoku Cloud), SMA EMA & Cross tools
//------------------------------------------------------------------------------
// 21/11/2018 Added EMA SMA WMA
// 21/11/2018 Added SMA-EMA EMA-WMA WMA-SMA (Thanks to mariobros1 for the idea of the Simultaneous MA)
// 21/11/2018 Added Bollinger Bands
// 21/11/2018 Added Ichimoku Cloud (Thanks to astropark for all the code of the Ichimoku Cloud)
// 23/11/2018 Show all the indicator as default
// 23/11/2018 Added a cross when single Moving Averages crossing (Thanks to astropark for the idea)
// 24/11/2018 Descriptions Fix
// 24/11/2018 Added Option to enable/disable all Moving Averages
// 10/12/2018 Added EMAs and Crosses
// 13/12/2018 indicator number fixes
//******************************************************************************
[astropark] Power Tools Overlay//******************************************************************************
// Power Tools Overlay
// Inner Version 1.2 20/12/2018
// Developer: iDelphi
// Developer: astropark (Ichimoku Cloud), SMA EMA & Cross tools
//------------------------------------------------------------------------------
// 21/11/2018 Added EMA SMA WMA
// 21/11/2018 Added SMA-EMA EMA-WMA WMA-SMA (Thanks to mariobros1 for the idea of the Simultaneous MA)
// 21/11/2018 Added Bollinger Bands
// 21/11/2018 Added Ichimoku Cloud (Thanks to astropark for all the code of the Ichimoku Cloud)
// 23/11/2018 Show all the indicator as default
// 23/11/2018 Added a cross when single Moving Averages crossing (Thanks to astropark for the idea)
// 24/11/2018 Descriptions Fix
// 24/11/2018 Added Option to enable/disable all Moving Averages
// 10/12/2018 Added EMAs and Crosses
//******************************************************************************
Alinhamento MACDs D1/H4/H1MACD Triple-Timeframe Trend Aligner
This custom indicator aligns MACD momentum across three timeframes — Daily (12,26,9), 4H (18,36,11), and 1H (24,52,18). A green background (bullish zone) appears when:
All three MACD histograms are green (positive momentum),
All three are above the zero line,
Price is above the 200 EMA in all timeframes.
This strict confirmation method filters weak trends and highlights only strong bullish alignment. Ideal for swing and trend-following strategies. Use inverse logic for bearish conditions.
Dema Entry FRAMA Exit VTECDual-Timeframe Trend Strategy
This strategy combines a 20-hour DEMA Supertrend with a 1-day FRAMA to capture strong market trends with fast entries and high-confidence exits.
Key Components
DEMA Supertrend (20H): Triggers quick entries to catch early trend momentum.
FRAMA (1D): Confirms major trends, ensuring profitable exits.
ATR Filter (1D): Sets precise entry/exit bands using Average True Range.
Gaussian Filter (1D): Smooths price data for reliable FRAMA signals.
Trading Rules
Entry: Enter long if DEMA Supertrend (20H) or FRAMA (1D) signals bullish.
Exit: Exit long if DEMA Supertrend (20H) or FRAMA (1D) signals bearish.
Flow: DEMA typically enters first, FRAMA confirms, and either closes the trade.
Best Markets
Ideal for trending markets
Use on a 1-day chart with 20-hour DEMA data.
Best for 24/7 markets; check compatibility for stocks.
This strategy balances speed and precision for high-profit trades with disciplined risk control.
Ultra BUY SELL//@version=5
indicator("Ultra BUY SELL", overlay = false)
// Inputs
src = input(close, "Source", group = "Main settings")
p = input.int(180, "Trend period", group = "Main settings", tooltip = "Changes STRONG signals' sensitivity.", minval = 1)
atr_p = input.int(155, "ATR Period", group = "Main settings", minval = 1)
mult = input.float(2.1, "ATR Multiplier", step = 0.1, group = "Main settings", tooltip = "Changes sensitivity: higher period = higher sensitivty.")
mode = input.string("Type A", "Signal mode", options = , group = "Mode")
use_ema_smoother = input.string("No", "Smooth source with EMA?", options = , group = "Source")
src_ema_period = input(3, "EMA Smoother period", group = "Source")
color_bars = input(true, "Color bars?", group = "Addons")
signals_view = input.string("All", "Signals to show", options = , group = "Signal's Addon")
signals_shape = input.string("Labels", "Signal's shape", options = , group = "Signal's Addon")
buy_col = input(color.rgb(0, 255, 8), "Buy colour", group = "Signal's Addon", inline = "BS")
sell_col = input(color.rgb(255, 0, 0), "Sell colour", group = "Signal's Addon", inline = "BS")
// Calculations
src := use_ema_smoother == "Yes" ? ta.ema(src, src_ema_period) : src
// Source;
h = ta.highest(src, p)
// Highest of src p-bars back;
l = ta.lowest(src, p)
// Lowest of src p-bars back.
d = h - l
ls = ""
// Tracker of last signal
m = (h + l) / 2
// Initial trend line;
m := bar_index > p ? m : m
atr = ta.atr(atr_p)
// ATR;
epsilon = mult * atr
// Epsilon is a mathematical variable used in many different theorems in order to simplify work with mathematical object. Here it used as sensitivity measure.
change_up = (mode == "Type B" ? ta.cross(src, m + epsilon) : ta.crossover(src, m + epsilon)) or src > m + epsilon
// If price breaks trend line + epsilon (so called higher band), then it is time to update the value of a trend line;
change_down = (mode == "Type B" ? ta.cross(src, m - epsilon) : ta.crossunder(src, m - epsilon)) or src < m - epsilon
// If price breaks trend line - epsilon (so called higher band), then it is time to update the value of a trend line.
sb = open < l + d / 8 and open >= l
ss = open > h - d / 8 and open <= h
strong_buy = sb or sb or sb or sb or sb
strong_sell = ss or ss or ss or ss or ss
m := (change_up or change_down) and m != m ? m : change_up ? m + epsilon : change_down ? m - epsilon : nz(m , m)
// Updating the trend line.
ls := change_up ? "B" : change_down ? "S" : ls
// Last signal. Helps avoid multiple labels in a row with the same signal;
colour = ls == "B" ? buy_col : sell_col
// Colour of the trend line.
buy_shape = signals_shape == "Labels" ? shape.labelup : shape.triangleup
sell_shape = signals_shape == "Labels" ? shape.labeldown : shape.triangledown
// Plottings
// Signals with label shape
plotshape(signals_shape == "Labels" and (signals_view == "All" or signals_view == "Buy/Sell") and change_up and ls != "B" and not strong_buy, "Buy signal" , color = colour, style = buy_shape , location = location.belowbar, size = size.normal, text = "BUY", textcolor = color.white, force_overlay=true)
// Plotting the BUY signal;
plotshape(signals_shape == "Labels" and (signals_view == "All" or signals_view == "Buy/Sell") and change_down and ls != "S" and not strong_sell, "Sell signal" , color = colour, style = sell_shape, size = size.normal, text = "SELL", textcolor = color.white, force_overlay=true)
// Plotting the SELL signal.
plotshape(signals_shape == "Labels" and (signals_view == "All" or signals_view == "Strong") and change_up and ls != "B" and strong_buy, "Strong Buy signal" , color = colour, style = buy_shape , location = location.belowbar, size = size.normal, text = "STRONG", textcolor = color.white, force_overlay=true)
// Plotting the STRONG BUY signal;
plotshape(signals_shape == "Labels" and (signals_view == "All" or signals_view == "Strong") and change_down and ls != "S" and strong_sell, "Strong Sell signal" , color = colour, style = sell_shape, size = size.normal, text = "STRONG", textcolor = color.white, force_overlay=true)
// Plotting the STRONG SELL signal.
// Signal with arrow shape
plotshape(signals_shape == "Arrows" and (signals_view == "All" or signals_view == "Buy/Sell") and change_up and ls != "B" and not strong_buy, "Buy signal" , color = colour, style = buy_shape , location = location.belowbar, size = size.tiny, force_overlay=true)
// Plotting the BUY signal;
plotshape(signals_shape == "Arrows" and (signals_view == "All" or signals_view == "Buy/Sell") and change_down and ls != "S" and not strong_sell, "Sell signal" , color = colour, style = sell_shape, size = size.tiny, force_overlay=true)
// Plotting the SELL signal.
plotshape(signals_shape == "Arrows" and (signals_view == "All" or signals_view == "Strong") and change_up and ls != "B" and strong_buy, "Strong Buy signal" , color = colour, style = buy_shape , location = location.belowbar, size = size.tiny, force_overlay=true)
// Plotting the STRONG BUY signal;
plotshape(signals_shape == "Arrows" and (signals_view == "All" or signals_view == "Strong") and change_down and ls != "S" and strong_sell, "Strong Sell signal" , color = colour, style = sell_shape, size = size.tiny, force_overlay=true)
// Plotting the STRONG SELL signal.
barcolor(color_bars ? colour : na)
// Bar coloring
// Alerts
matype = input.string(title='MA Type', defval='EMA', options= )
ma_len1 = input(title='Short EMA1 Length', defval=5)
ma_len2 = input(title='Long EMA1 Length', defval=7)
ma_len3 = input(title='Short EMA2 Length', defval=5)
ma_len4 = input(title='Long EMA2 Length', defval=34)
ma_len5 = input(title='Short EMA3 Length', defval=98)
ma_len6 = input(title='Long EMA3 Length', defval=45)
ma_len7 = input(title='Short EMA4 Length', defval=7)
ma_len8 = input(title='Long EMA4 Length', defval=11)
ma_len9 = input(title='Short EMA5 Length', defval=11)
ma_len10 = input(title='Long EMA5 Length', defval=15)
ma_offset = input(title='Offset', defval=0)
//res = input(title="Resolution", type=resolution, defval="240")
f_ma(malen) =>
float result = 0
if matype == 'EMA'
result := ta.ema(src, malen)
result
if matype == 'SMA'
result := ta.sma(src, malen)
result
result
htf_ma1 = f_ma(ma_len1)
htf_ma2 = f_ma(ma_len2)
htf_ma3 = f_ma(ma_len3)
htf_ma4 = f_ma(ma_len4)
htf_ma5 = f_ma(ma_len5)
htf_ma6 = f_ma(ma_len6)
htf_ma7 = f_ma(ma_len7)
htf_ma8 = f_ma(ma_len8)
htf_ma9 = f_ma(ma_len9)
htf_ma10 = f_ma(ma_len10)
//plot(out1, color=green, offset=ma_offset)
//plot(out2, color=red, offset=ma_offset)
//lengthshort = input(8, minval = 1, title = "Short EMA Length")
//lengthlong = input(200, minval = 2, title = "Long EMA Length")
//emacloudleading = input(50, minval = 0, title = "Leading Period For EMA Cloud")
//src = input(hl2, title = "Source")
showlong = input(false, title='Show Long Alerts')
showshort = input(false, title='Show Short Alerts')
showLine = input(false, title='Display EMA Line')
ema1 = input(true, title='Show EMA Cloud-1')
ema2 = input(true, title='Show EMA Cloud-2')
ema3 = input(true, title='Show EMA Cloud-3')
ema4 = input(true, title='Show EMA Cloud-4')
ema5 = input(true, title='Show EMA Cloud-5')
emacloudleading = input.int(0, minval=0, title='Leading Period For EMA Cloud')
mashort1 = htf_ma1
malong1 = htf_ma2
mashort2 = htf_ma3
malong2 = htf_ma4
mashort3 = htf_ma5
malong3 = htf_ma6
mashort4 = htf_ma7
malong4 = htf_ma8
mashort5 = htf_ma9
malong5 = htf_ma10
cloudcolour1 = mashort1 >= malong1 ? color.rgb(0, 255, 0) : color.rgb(255, 0, 0)
cloudcolour2 = mashort2 >= malong2 ? #4caf4f47 : #ff110047
cloudcolour4 = mashort4 >= malong4 ? #4caf4f52 : #f2364652
cloudcolour5 = mashort5 >= malong5 ? #33ff0026 : #ff000026
//03abc1
mashortcolor1 = mashort1 >= mashort1 ? color.olive : color.maroon
mashortcolor2 = mashort2 >= mashort2 ? color.olive : color.maroon
mashortcolor3 = mashort3 >= mashort3 ? color.olive : color.maroon
mashortcolor4 = mashort4 >= mashort4 ? color.olive : color.maroon
mashortcolor5 = mashort5 >= mashort5 ? color.olive : color.maroon
mashortline1 = plot(ema1 ? mashort1 : na, color=showLine ? mashortcolor1 : na, linewidth=1, offset=emacloudleading, title='Short Leading EMA1', force_overlay=true)
mashortline2 = plot(ema2 ? mashort2 : na, color=showLine ? mashortcolor2 : na, linewidth=1, offset=emacloudleading, title='Short Leading EMA2', force_overlay=true)
mashortline3 = plot(ema3 ? mashort3 : na, color=showLine ? mashortcolor3 : na, linewidth=1, offset=emacloudleading, title='Short Leading EMA3', force_overlay=true)
mashortline4 = plot(ema4 ? mashort4 : na, color=showLine ? mashortcolor4 : na, linewidth=1, offset=emacloudleading, title='Short Leading EMA4', force_overlay=true)
mashortline5 = plot(ema5 ? mashort5 : na, color=showLine ? mashortcolor5 : na, linewidth=1, offset=emacloudleading, title='Short Leading EMA5', force_overlay=true)
malongcolor1 = malong1 >= malong1 ? color.green : color.red
malongcolor2 = malong2 >= malong2 ? color.green : color.red
malongcolor3 = malong3 >= malong3 ? color.green : color.red
malongcolor4 = malong4 >= malong4 ? color.green : color.red
malongcolor5 = malong5 >= malong5 ? color.green : color.red
malongline1 = plot(ema1 ? malong1 : na, color=showLine ? malongcolor1 : na, linewidth=3, offset=emacloudleading, title='Long Leading EMA1', force_overlay=true)
malongline2 = plot(ema2 ? malong2 : na, color=showLine ? malongcolor2 : na, linewidth=3, offset=emacloudleading, title='Long Leading EMA2', force_overlay=true)
malongline3 = plot(ema3 ? malong3 : na, color=showLine ? malongcolor3 : na, linewidth=3, offset=emacloudleading, title='Long Leading EMA3', force_overlay=true)
malongline4 = plot(ema4 ? malong4 : na, color=showLine ? malongcolor4 : na, linewidth=3, offset=emacloudleading, title='Long Leading EMA4', force_overlay=true)
malongline5 = plot(ema5 ? malong5 : na, color=showLine ? malongcolor5 : na, linewidth=3, offset=emacloudleading, title='Long Leading EMA5', force_overlay=true)
fill(mashortline1, malongline1, color=cloudcolour1, title='MA Cloud1', transp=45)
fill(mashortline2, malongline2, color=cloudcolour2, title='MA Cloud2', transp=65)
fill(mashortline4, malongline4, color=cloudcolour4, title='MA Cloud4', transp=65)
fill(mashortline5, malongline5, color=cloudcolour5, title='MA Cloud5', transp=65)
leftBars = input(15, title='Left Bars ')
rightBars = input(15, title='Right Bars')
volumeThresh = input(20, title='Volume Threshold')
//
highUsePivot = fixnan(ta.pivothigh(leftBars, rightBars) )
lowUsePivot = fixnan(ta.pivotlow(leftBars, rightBars) )
r1 = plot(highUsePivot, color=ta.change(highUsePivot) ? na : #FF0000, linewidth=3, offset=-(rightBars + 1), title='Resistance', force_overlay=true)
s1 = plot(lowUsePivot, color=ta.change(lowUsePivot) ? na : #00ff0d, linewidth=3, offset=-(rightBars + 1), title='Support', force_overlay=true)
//Volume %
short = ta.ema(volume, 5)
long = ta.ema(volume, 10)
osc = 100 * (short - long) / long
//For bull / bear wicks
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// © divudivu600
// Developer By ALCON ALGO
//telegram : @harmonicryptosignals
//@version = 5
//indicator(shorttitle='Oscillator Vision', title='Alcon Oscillator Vision', overlay=false)
n1 = input(10, 'Channel length')
n2 = input(21, 'Average length')
reaction_wt = input.int(defval=1, title='Reaction in change of direction', minval=1)
nsc = input.float(53, 'Levels About Buys', minval=0.0)
nsv = input.float(-53, 'Levels About Sells', maxval=-0.0)
Buy_sales = input(true, title='Only Smart Buy Reversal')
Sell_sales = input(true, title='Only Smart Sell Reversal')
Histogram = input(true, title='Show Histogarm')
//Trendx = input(false, title='Show Trendx')
barras = input(true, title='Divergence on chart(Bars)')
divregbull = input(true, title='Regular Divergence Bullish')
divregbear = input(true, title='Regular Divergence Bearish')
divhidbull = input(true, title='Show Divergence Hidden Bullish')
divhidbear = input(true, title='Show Divergence Hidden Bearish')
Tags = input(true, title='Show Divergence Lable')
amme = input(false, title='Activar media movil Extra para WT')
White = #FDFEFE
Black = #000000
Bearish = #e91e62
Bullish = #18e0ff
Strong_Bullish = #2962ff
Bullish2 = #00bedc
Blue1 = #00D4FF
Blue2 = #009BBA
orange = #FF8B00
yellow = #FFFB00
LEZ = #0066FF
purp = #FF33CC
// Colouring
tf(_res, _exp, gaps_on) =>
gaps_on == 0 ? request.security(syminfo.tickerid, _res, _exp) : gaps_on == true ? request.security(syminfo.tickerid, _res, _exp, barmerge.gaps_on, barmerge.lookahead_off) : request.security(syminfo.tickerid, _res, _exp, barmerge.gaps_off, barmerge.lookahead_off)
ha_htf = ''
show_ha = input.bool(true, "Show HA Plot/ Market Bias", group="HA Market Bias")
ha_len = input(7, 'Period', group="HA Market Bias")
ha_len2 = input(10, 'Smoothing', group="HA Market Bias")
// Calculations {
o = ta.ema(open, ha_len)
c = ta.ema(close, ha_len)
h1 = ta.ema(high, ha_len)
l1 = ta.ema(low, ha_len)
haclose = tf(ha_htf, (o + h1 + l1 + c) / 4, 0)
xhaopen = tf(ha_htf, (o + c) / 2, 0)
haopen = na(xhaopen ) ? (o + c) / 2 : (xhaopen + haclose ) / 2
hahigh = math.max(h1, math.max(haopen, haclose))
halow = math.min(l1, math.min(haopen, haclose))
o2 = tf(ha_htf, ta.ema(haopen, ha_len2), 0)
c2 = tf(ha_htf, ta.ema(haclose, ha_len2), 0)
h2 = tf(ha_htf, ta.ema(hahigh, ha_len2), 0)
l2 = tf(ha_htf, ta.ema(halow, ha_len2), 0)
ha_avg = (h2 + l2) / 2
// }
osc_len = 8
osc_bias = 100 *(c2 - o2)
osc_smooth = ta.ema(osc_bias, osc_len)
sigcolor =
(osc_bias > 0) and (osc_bias >= osc_smooth) ? color.new(Bullish, 35) :
(osc_bias > 0) and (osc_bias < osc_smooth) ? color.new(Bullish2, 75) :
(osc_bias < 0) and (osc_bias <= osc_smooth) ? color.new(Bearish, 35) :
(osc_bias < 0) and (osc_bias > osc_smooth) ? color.new(Bearish, 75) :
na
// }
nsc1 = nsc
nsc2 = nsc + 5
nsc3 = nsc + 10
nsc4 = nsc + 15
nsc5 = nsc + 20
nsc6 = nsc + 25
nsc7 = nsc + 30
nsc8 = nsc + 35
nsv1 = nsv - 5
nsv2 = nsv - 10
nsv3 = nsv - 15
nsv4 = nsv - 20
nsv5 = nsv - 25
nsv6 = nsv - 30
nsv7 = nsv - 35
nsv8 = nsv - 40
ap = hlc3
esa = ta.ema(ap, n1)
di = ta.ema(math.abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * di)
tci = ta.ema(ci, n2)
wt1 = tci
wt2 = ta.sma(wt1, 4)
direction = 0
direction := ta.rising(wt1, reaction_wt) ? 1 : ta.falling(wt1, reaction_wt) ? -1 : nz(direction )
Change_of_direction = ta.change(direction, 1)
pcol = direction > 0 ? Strong_Bullish : direction < 0 ? Bearish : na
obLevel1 = input(60, 'Over Bought Level 1')
obLevel2 = input(53, 'Over Bought Level 2')
osLevel1 = input(-60, 'Over Sold Level 1')
osLevel2 = input(-53, 'Over Sold Level 2')
rsi = ta.rsi(close,14)
color greengrad = color.from_gradient(rsi, 10, 90, #00ddff, #007d91)
color redgrad = color.from_gradient(rsi, 10, 90, #8b002e, #e91e62)
ob1 = plot(obLevel1, color=#e91e6301)
os1 = plot(osLevel1, color=#00dbff01)
ob2 = plot(obLevel2, color=#e91e6301)
os2 = plot(osLevel2, color=#00dbff01)
p1 = plot(wt1, color=#00dbff01)
p2 = plot(wt2, color=#e91e6301)
plot(wt1 - wt2, color=wt2 - wt1 > 0 ? redgrad : greengrad, style=plot.style_columns)
// fill(p1,p2,color = wt2 - wt1 > 0 ? redgrad: greengrad) // old
fill(p1,p2,color = sigcolor)
// new
fill(ob1,ob2,color = #e91e6350)
fill(os1,os2,color = #00dbff50)
midpoint = (nsc + nsv) / 2
ploff = (nsc - midpoint) / 8
BullSale = ta.crossunder(wt1, wt2) and wt1 >= nsc and Buy_sales == true
BearSale = ta.crossunder(wt1, wt2) and Buy_sales == false
Bullishh = ta.crossover(wt1, wt2) and wt1 <= nsv and Sell_sales == true
Bearishh = ta.crossover(wt1, wt2) and Sell_sales == false
plot(BullSale ? wt2 + ploff : na, style=plot.style_circles, color=color.new(Bearish, 0), linewidth=6, title='BuysG')
plot(BearSale ? wt2 + ploff : na, style=plot.style_circles, color=color.new(Bearish, 0), linewidth=6, title='SellsG')
plot(Bullishh ? wt2 - ploff : na, style=plot.style_circles, color=color.new(Strong_Bullish, 0), linewidth=6, title='Buys On Sale')
plot(Bearishh ? wt2 - ploff : na, style=plot.style_circles, color=color.new(Strong_Bullish, 0), linewidth=6, title='Sells on Sale')
//plot(Histogram ? wt1 - wt2 : na, style=plot.style_area, color=color.new(Blue2, 80), linewidth=1, title='Histograma')
//barcolor(barras == true and Bullishh == true or barras == true and Bearishh == true ? Bullish2 : na)
//barcolor(barras == true and BullSale == true or barras == true and BearSale == true ? Bearish : na)
/////// Divergence ///////
f_top_fractal(_src) =>
_src < _src and _src < _src and _src > _src and _src > _src
f_bot_fractal(_src) =>
_src > _src and _src > _src and _src < _src and _src < _src
f_fractalize(_src) =>
f_top_fractal(_src) ? 1 : f_bot_fractal(_src) ? -1 : 0
fractal_top1 = f_fractalize(wt1) > 0 ? wt1 : na
fractal_bot1 = f_fractalize(wt1) < 0 ? wt1 : na
high_prev1 = ta.valuewhen(fractal_top1, wt1 , 0)
high_price1 = ta.valuewhen(fractal_top1, high , 0)
low_prev1 = ta.valuewhen(fractal_bot1, wt1 , 0)
low_price1 = ta.valuewhen(fractal_bot1, low , 0)
regular_bearish_div1 = fractal_top1 and high > high_price1 and wt1 < high_prev1 and divregbear == true
hidden_bearish_div1 = fractal_top1 and high < high_price1 and wt1 > high_prev1 and divhidbear == true
regular_bullish_div1 = fractal_bot1 and low < low_price1 and wt1 > low_prev1 and divregbull == true
hidden_bullish_div1 = fractal_bot1 and low > low_price1 and wt1 < low_prev1 and divhidbull == true
col1 = regular_bearish_div1 ? Bearish : hidden_bearish_div1 ? Bearish : na
col2 = regular_bullish_div1 ? Strong_Bullish : hidden_bullish_div1 ? Strong_Bullish : na
//plot(title='Divergence Bearish', series=fractal_top1 ? wt1 : na, color=col1, linewidth=2, transp=0)
//plot(title='Divergence Bullish', series=fractal_bot1 ? wt1 : na, color=col2, linewidth=2, transp=0)
plotshape(regular_bearish_div1 and divregbear and Tags ? wt1 + ploff * 1 : na, title='Divergence Regular Bearish', text='Bear', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(Bearish, 0), textcolor=color.new(White, 0))
plotshape(hidden_bearish_div1 and divhidbear and Tags ? wt1 + ploff * 1 : na, title='Divergence Hidden Bearish', text='H Bear', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(Bearish, 0), textcolor=color.new(White, 0))
plotshape(regular_bullish_div1 and divregbull and Tags ? wt1 - ploff * 1 : na, title='Divergence Regular Bullish', text='Bull', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(Strong_Bullish, 0), textcolor=color.new(White, 0))
plotshape(hidden_bullish_div1 and divhidbull and Tags ? wt1 - ploff * 1 : na, title='Divergence Hidden Bullish', text='H Bull', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(Strong_Bullish, 0), textcolor=color.new(White, 0))
/////// Unfazed Alerts //////
////////////////////////////////////////////////-MISTERMOTA MOMENTUM-/////////////////////////////////////
source = input(close)
responsiveness = math.max(0.00001, input.float(0.9, minval=0.0, maxval=1.0))
periodd = input(50)
sd = ta.stdev(source, 50) * responsiveness
var worm = source
diff = source - worm
delta = math.abs(diff) > sd ? math.sign(diff) * sd : diff
worm += delta
ma = ta.sma(source, periodd)
raw_momentum = (worm - ma) / worm
current_med = raw_momentum
min_med = ta.lowest(current_med, periodd)
max_med = ta.highest(current_med, periodd)
temp = (current_med - min_med) / (max_med - min_med)
value = 0.5 * 2
value *= (temp - .5 + .5 * nz(value ))
value := value > .9999 ? .9999 : value
value := value < -0.9999 ? -0.9999 : value
temp2 = (1 + value) / (1 - value)
momentum = .25 * math.log(temp2)
momentum += .5 * nz(momentum )
//momentum := raw_momentum
signal = nz(momentum )
trend = math.abs(momentum) <= math.abs(momentum )
////////////////////////////////////////////////-GROWING/FAILING-//////////////////////////////////////////
length = input.int(title="MOM Period", minval=1, defval=14, group="MOM Settings")
srcc = input(title="MOM Source", defval=hlc3, group="MOM Settings")
txtcol_grow_above = input(#1a7b24, "Above Grow", group="MOM Settings", inline="Above")
txtcol_fall_above = input(#672ec5, "Fall", group="MOM Settings", inline="Above")
txtcol_grow_below = input(#F37121, "Below Grow", group="MOM Settings", inline="Below")
txtcol_fall_below = input(#be0606, "Fall", group="MOM Settings", inline="Below")
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
typeMA = input.string(title = "Method", defval = "SMA", options= , group="MA Settings")
smoothingLength = input.int(title = "Length", defval = 5, minval = 1, maxval = 100, group="MA Settings")
smoothingLine = ma(delta, smoothingLength, typeMA)
deltaText=(delta > 0 ? (delta > delta ? " MOM > 0 and ▲ Growing, MOM = " + str.tostring(delta , "#.##") :" MOM > 0 and ▼ Falling, MOM = " + str.tostring(delta , "#.##") ) : (delta > delta ? "MOM < 0 and ▲ Growing, MOM = " + str.tostring(delta , "#.##"): " MOM < 0 and ▼ Falling, MOM = " + str.tostring(delta , "#.##")))
oneDay = 24 * 60 * 60 * 1000
barsAhead = 3
tmf = if timeframe.ismonthly
barsAhead * oneDay * 30
else if timeframe.isweekly
barsAhead * oneDay * 7
else if timeframe.isdaily
barsAhead * oneDay
else if timeframe.isminutes
barsAhead * oneDay * timeframe.multiplier / 1440
else if timeframe.isseconds
barsAhead * oneDay * timeframe.multiplier / 86400
else
0
angle(_src) =>
rad2degree = 180 / 3.14159265359
//pi
ang = rad2degree * math.atan((_src - _src ) / ta.atr(14))
ang
emae = angle(smoothingLine)
emaanglestat = emae > emae ? "▲ Growing": "▼ Falling"
deltaTextxxx = "MOM MA/ATR angle value is " + str.tostring(emae, "#.##") + "° and is " + emaanglestat
deltacolorxxx = emae >0 and emae >=emae ? txtcol_grow_above : txtcol_fall_below
// Label
label lpt1 = label.new(time, -30, text=deltaTextxxx , color=deltacolorxxx, xloc=xloc.bar_time, style=label.style_label_left, textcolor=color.white, textalign=text.align_left, size=size.normal)
label.set_x(lpt1, label.get_x(lpt1) + tmf)
label.delete(lpt1 )
txtdeltaColors = (delta > 50 ? (delta < delta ? txtcol_grow_above : txtcol_fall_above) : (delta < delta ? txtcol_grow_below : txtcol_fall_below))
label ldelta1 = label.new(time, 30, text=deltaText , color=txtdeltaColors, xloc=xloc.bar_time, style=label.style_label_left, textcolor=color.white, textalign=text.align_left, size=size.normal)
label.set_x(ldelta1, label.get_x(ldelta1) + tmf)
label.delete(ldelta1 )
Info TableOverview
The Info Table V1 is a versatile TradingView indicator tailored for intraday futures traders, particularly those focusing on MESM2 (Micro E-mini S&P 500 futures) on 1-minute charts. It presents essential market insights through two customizable tables: the Main Table for predictive and macro metrics, and the New Metrics Table for momentum and volatility indicators. Designed for high-activity sessions like 9:30 AM–11:00 AM CDT, this tool helps traders assess price alignment, sentiment, and risk in real-time. Metrics update dynamically (except weekly COT data), with optional alerts for key conditions like volatility spikes or momentum shifts.
This indicator builds on foundational concepts like linear regression for predictions and adapts open-source elements for enhanced functionality. Gradient code is adapted from TradingView's Color Library. QQE logic is adapted from LuxAlgo's QQE Weighted Oscillator, licensed under CC BY-NC-SA 4.0. The script is released under the Mozilla Public License 2.0.
Key Features
Two Customizable Tables: Positioned independently (e.g., top-right for Main, bottom-right for New Metrics) with toggle options to show/hide for a clutter-free chart.
Gradient Coloring: User-defined high/low colors (default green/red) for quick visual interpretation of extremes, such as overbought/oversold or high volatility.
Arrows for Directional Bias: In the New Metrics Table, up (↑) or down (↓) arrows appear in value cells based on metric thresholds (top/bottom 25% of range), indicating bullish/high or bearish/low conditions.
Consensus Highlighting: The New Metrics Table's title cells ("Metric" and "Value") turn green if all arrows are ↑ (strong bullish consensus), red if all are ↓ (strong bearish consensus), or gray otherwise.
Predicted Price Plot: Optional line (default blue) overlaying the ML-predicted price for visual comparison with actual price action.
Alerts: Notifications for high/low Frahm Volatility (≥8 or ≤3) and QQE Bias crosses (bullish/bearish momentum shifts).
Main Table Metrics
This table focuses on predictive, positional, and macro insights:
ML-Predicted Price: A linear regression forecast using normalized price, volume, and RSI over a customizable lookback (default 500 bars). Gradient scales from low (red) to high (green) relative to the current price ± threshold (default 100 points).
Deviation %: Percentage difference between current price and predicted price. Gradient highlights extremes (±0.5% default threshold), signaling potential overextensions.
VWAP Deviation %: Percentage difference from Volume Weighted Average Price (VWAP). Gradient indicates if price is above (green) or below (red) fair value (±0.5% default).
FRED UNRATE % Change: Percentage change in U.S. unemployment rate (via FRED data). Cell turns red for increases (economic weakness), green for decreases (strength), gray if zero or disabled.
Open Interest: Total open MESM2 futures contracts. Gradient scales from low (red) to high (green) up to a hardcoded 300,000 threshold, reflecting market participation.
COT Commercial Long/Short: Weekly Commitment of Traders data for commercial positions. Long cell green if longs > shorts (bullish institutional sentiment); Short cell red if shorts > longs (bearish); gray otherwise.
New Metrics Table Metrics
This table emphasizes technical momentum and volatility, with arrows for quick bias assessment:
QQE Bias: Smoothed RSI vs. trailing stop (default length 14, factor 4.236, smooth 5). Green for bullish (RSI > stop, ↑ arrow), red for bearish (RSI < stop, ↓ arrow), gray for neutral.
RSI: Relative Strength Index (default period 14). Gradient from oversold (red, <30 + threshold offset, ↓ arrow if ≤40) to overbought (green, >70 - offset, ↑ arrow if ≥60).
ATR Volatility: Score (1–20) based on Average True Range (default period 14, lookback 50). High scores (green, ↑ if ≥15) signal swings; low (red, ↓ if ≤5) indicate calm.
ADX Trend: Average Directional Index (default period 14). Gradient from weak (red, ↓ if ≤0.25×25 threshold) to strong trends (green, ↑ if ≥0.75×25).
Volume Momentum: Score (1–20) comparing current to historical volume (lookback 50). High (green, ↑ if ≥15) suggests pressure; low (red, ↓ if ≤5) implies weakness.
Frahm Volatility: Score (1–20) from true range over a window (default 24 hours, multiplier 9). Dynamic gradient (green/red/yellow); ↑ if ≥7.5, ↓ if ≤2.5.
Frahm Avg Candle (Ticks): Average candle size in ticks over the window. Blue gradient (or dynamic green/red/yellow); ↑ if ≥0.75 percentile, ↓ if ≤0.25.
Arrows trigger on metric-specific logic (e.g., RSI ≥60 for ↑), providing directional cues without strict color ties.
Customization Options
Adapt the indicator to your strategy:
ML Inputs: Lookback (10–5000 bars) and RSI period (2+) for prediction sensitivity—shorter for volatility, longer for trends.
Timeframes: Individual per metric (e.g., 1H for QQE Bias to match higher frames; blank for chart timeframe).
Thresholds: Adjust gradients and arrows (e.g., Deviation 0.1–5%, ADX 0–100, RSI overbought/oversold).
QQE Settings: Length, factor, and smooth for fine-tuned momentum.
Data Toggles: Enable/disable FRED, Open Interest, COT for focus (e.g., disable macro for pure intraday).
Frahm Options: Window hours (1+), scale multiplier (1–10), dynamic colors for avg candle.
Plot/Table: Line color, positions, gradients, and visibility.
Ideal Use Case
Perfect for MESM2 scalpers and trend traders. Use the Main Table for entry confirmation via predicted deviations and institutional positioning. Leverage the New Metrics Table arrows for short-term signals—enter bullish on green consensus (all ↑), avoid chop on low volatility. Set alerts to catch shifts without constant monitoring.
Why It's Valuable
Info Table V1 consolidates diverse metrics into actionable visuals, answering critical questions: Is price mispriced? Is momentum aligning? Is volatility manageable? With real-time updates, consensus highlights, and extensive customization, it enhances precision in fast markets, reducing guesswork for confident trades.
Note: Optimized for futures; some metrics (OI, COT) unavailable on non-futures symbols. Test on demo accounts. No financial advice—use at your own risk.
The provided script reuses open-source elements from TradingView's Color Library and LuxAlgo's QQE Weighted Oscillator, as noted in the script comments and description. Credits are appropriately given in both the description and code comments, satisfying the requirement for attribution.
Regarding significant improvements and proportion:
The QQE logic comprises approximately 15 lines of code in a script exceeding 400 lines, representing a small proportion (<5%).
Adaptations include integration with multi-timeframe support via request.security, user-customizable inputs for length, factor, and smooth, and application within a broader table-based indicator for momentum bias display (with color gradients, arrows, and alerts). This extends the original QQE beyond standalone oscillator use, incorporating it as one of seven metrics in the New Metrics Table for confluence analysis (e.g., consensus highlighting when all metrics align). These are functional enhancements, not mere stylistic or variable changes.
The Color Library usage is via official import (import TradingView/Color/1 as Color), leveraging built-in gradient functions without copying code, and applied to enhance visual interpretation across multiple metrics.
The script complies with the rules: reused code is minimal, significantly improved through integration and expansion, and properly credited. It qualifies for open-source publication under the Mozilla Public License 2.0, as stated.
ZYTX SuperTrend V1ZYTX SuperTrend V1 Indicator
Multi-strategy intelligent rebalancing with >95% win rate
Enables 24/7 automated trading
Gabriel's Relative Strength IndexGabriel’s RSI—The Reinvention of Relative Strength
Not your average RSI.
This is a fully reengineered Relative Strength Index that merges the power of advanced signal processing, adaptive smoothing, volume dynamics, and intelligent divergence detection into a single, modular toolkit designed for precision trading across all markets.
Whether you’re scalping crypto, swing trading equities, or dissecting futures contracts—Gabriel’s RSI adapts to your strategy with unrivaled control and clarity.
⚙️ 1. RSI Settings
RSI Length (Jurik): Set to 51 by default to mimic a 21-period standard RSI when Jurik smoothing is applied. Adjust lower (e.g., 22) to mimic a 9-period RSI. 32 would be almost ~14, 13.33 RSI.
RSI Source: The default is hlc3 for smoother RSI. Can be changed to any price-based series (close, open, etc.) for customization.
📡 VIX-Aware: Automatically switches to high/low/close during VIX spikes using a custom Z-score model if toggled. (I backtested it, and it catches bottoms better.) 📡
🎯 2. RSI Smoothing Options
MA Type: Smoothing applies to both RSI and its MA overlay simultaneously. I used to use the 56 EMA RSI, and it works well too.
Options: JMA, T3, Kalman, Laguerre, Super Smoother, ALMA, VWMA, LSMA, etc.
JMA: Best for adaptive recursive smoothing. A power of 2 and a phase of 50 are used.
T3: Smooth and lag-reduced, suitable for trend detection. The alpha is 0.7.
SMA + Bollinger Bands: Adds deviation-based envelopes for volatility spotting. BB StdDev: Only relevant if BBs are used. Controls bandwidth for overbought/oversold zones.
MA Length: Affects how smooth or reactive the RSI signal is.
📉 3. MACD Settings
Fast/Slow Length: Defaults (21/81) optimized for smoother MACD with SMA or T3. For Algo trading, EMA/JMA is best.
Signal Length: Shorter (e.g., 2) gives more reactive crossover signals; it can be increased.
Source: Default is close. Close works best for the settings I input. I also tuned some of the other MA types that worked for it.
MA Types: JMA and EMA reduce noise and increase signal generation. Select SMA for simplicity or T3 for trend-following.
Histogram: Bar colors signal strength and trend of MACD directly on your chart.
🔀 4. Directional Movement Index (DMI)
ADX Smoothing: High values (e.g., 100) offer strong trend confirmation with Hann Window smoothing 12, or 14 for either regular RMA or double smoothed.
DI Length: Affects DI+/- sensitivity. 100 ADX - 12/14 DI or 15 ADX - 35 DI are suggested, the latter for quicker boot time, as 100 bars is quite long.
Smoothing Type: Choose Hann Window for refined smoothing; RMA (SMMA) for simplicity. Double-smoothing is RMA -> Hann window, best of both types.
Volatility Type: ATR includes gaps for a full-range volatility; ADR is useful for gapless strategies, particularly OTC markets and intraday.
Plotted as area fills, 0 to 100 scaled.
Color-coded as Red (ADX), Orange (DI-), Blue (DI+).
📊 5. Volume Z-Score
%R Length: Normalizes volume to percentile range (73 swing, 112 exhaustion).
Z-Score Lengths: Compares short-term and long-term volume trends with Z-scores of volume.
Fast Z-Score < Slow Z-Score = Gives a Volume Squeeze.
Fast MA > Slow MA = Bullish Volume Divergence; volume has been fired. Not via Z-score, but instead via SMA, ALMA, and RMA of volume.
WPR Volume: Weighted %R used to highlight exhaustion/pivot points.
Plot volume bars after a volume squeeze has been fired; if bars aren't plotted, then it's under squeeze. Backtest on ES1! Prove it's good for catching bottoms below 15 minutes as well.
🧠 6. Divergence Engine
Pivot Settings: Pivot Period (12), Divergence minval Lookback (5), and max Lookback Bars (100) control sensitivity. Works well on any asset class; these are the optimal settings for the RSI.
Source Options: RSI, MACD, ADX, DI difference, or Volume %R.
Divergence Types: Regular (Mean Reversal), Hidden (Trend Continuation).
Heikin Ashi Mode: Enables use of HA candles on normal charts for smoother pivots. May distort values if your chart is H.A. so leave it unchecked then.
💥 7. Squeeze Momentum System (SQZMOM PRO)
Squeeze Types:
⚫ Wide (Black) — Regular Compression
🔴 Normal (Red) — Standard squeeze
🟡 Narrow (Yellow) — Golden squeeze
🟣 Very Narrow (Purple) — Extreme compression
🟢 Fired (Green) — Fired Squeeze = Breakout
Plotted on the very bottom of my indicator.
Momentum Bars:
🔷 Cyan = Rising
🔵 Blue = Pullback
🔴 Red = Falling
🟡 Yellow = Corrective
Plotted on the top of my indicator.
Reversal Signals: Dashed lines on momentum–JMA crossovers (DM-style pivot logic) ploted directly on the chart.
📈 8. Rate of Change (RoC)
RoC of Momentum: EMA-smoothed RoC on momentum for leading signals. Double smoothed, once and then another time for smoother signals.
RoC of Momentum → EMA → EMA → JMA Signal.
Signal Line: JMA used to filter noise and generate reversal signals.
Crossovers: Bullish/bearish signals based on RoC vs. signal line are plotted as triangles directly on your chart.
Optimized: Backtested for short-term setups like 1H or faster. Works on Daily timeframes as well for Futures and 24/7 Markets.
🕰️ 9. Multi-Timeframe Squeeze Settings
Each timeframe (Hourly, 4H, Daily, Weekly, Monthly) has:
Reversal Toggle: Enables dashed line DM-style pivots on crossovers.
MA Length: For Jurik MA smoothing on momentum.
BB/KC Thresholds: Define squeeze sensitivity per timeframe. A shorter BB/KC length, 17-14-12, responds better on lower timeframes.
Momentum Length: Tailors oscillator responsiveness; 20 is ideal.
🧮 10. BB Std. Deviation Scaling
Low-Pass Super Smoother : Smooths noise for BBs.
High-Pass Butterworth : Extracts cycles for BB Stdv. blend.
Root Mean Squared : Dynamic BB width adjustment based on market activity. True-range-based.
LP -> HP -> RMS -> Bollinger Band Multiplier (2.0)
Optional Intensify: Increases the squeeze rate * 4. Can be used for some option pricing strategies.
🧵 11. Moving Average Ribbon
4 optional MAs with full customization:
Choose from 13 MA types (incl. Kalman, Laguerre, T3, ALMA)
Color-coded for trend analysis (MA1–MA4 mimicking 9/21/50/200 periods)
Optional crossover alerts
🔔12. Alerts
RSI: Overbought/oversold reversals. Several types. (🦅 / 🕊️)
MACD: Histogram shift through zero line. (🐘 / 🐴)
DMI/ADX: Crossovers and strength conditions. The key level is the level where if DI/ADX is past this threshold, then it's considered to be trending. (🐬 / 🐋 / 🛡️)
Volume: Smart Money alerts on low-volume zones. May concentrate on ICT sessions. (🚨)
Squeeze: Alerts on all 5 squeeze states. (⚫, 🔴, 🟡, 🟣, 🟢)
Momentum: Momentum / JMA crosses and reversals. (🐂 / 🐻)
RoC: Bullish and bearish crosses. (📈 / 📉)
Divergences: Regular, hidden, and combined. (🐂 / 🐻 / 🐾 / 🐼)
MA Ribbon: Cross alert (⚔️)
VIX: VIX Z-Score past 2.0 (🏴☠️)
📊 13. Visual Output Summary
RSI Line + MA + Optional BB
MACD Histogram (Color Adaptive)
DMI/ADX Area Fills
%R Volume Bars (Smart Money)
Squeeze Dots (Circles)
Momentum Bars (Squares)
RoC Arrows (Cross Signals)
Pivot Break Lines (Dashed)
Auto-Divergence Lines & Labels
MA Ribbon Overlay (Optional)
✅ Best Practices ✅
Watch the slope of the RSI for pullbacks on a strong trend. Combine it with squeeze for exit timing.
Combine RSI Divergence with MACD histogram cross and Squeeze firing for precise entry.
Use Volume Z-Score to filter for institutional activity, and enter Long. Watch for reversals as well.
Watch RoC crossovers for fast, leading signals.
Enable Reversal Lines on 1H+ charts for breakout or breakdown pivots.
Use multi-timeframe thresholds for swing confirmation. The TFs I use the most are 2-5-15 minutes for futures and swinging with 1 hour daily and weekly. Those are the TFs I backtested.
An optional MA Ribbon is here as well; it supports 13 MA types.
🌎 Asset-Agnostic
MACD Automatically adjusts for Crypto, Forex, Stocks, Commodities, and Indices.
Custom ALMA, T3, Kalman, and Laguerre filters optimized per asset class and timeframe.
📚 Tech Highlights
Over 15,000 lines of modular, structured Pine Script v6 code.
Integration of Ehlers Cycle Theory and various other filters, one for each indicator.
Designed for visual clarity, multi-dimensional signal stacking, and low lag/high accuracy.
🌀 All 64 outputs are filled, so there might not be any more future updates. It's also a bit slow to load due to that.
VoVix DEVMA🌌 VoVix DEVMA: A Deep Dive into Second-Order Volatility Dynamics
Welcome to VoVix+, a sophisticated trading framework that transcends traditional price analysis. This is not merely another indicator; it is a complete system designed to dissect and interpret the very fabric of market volatility. VoVix+ operates on the principle that the most powerful signals are not found in price alone, but in the behavior of volatility itself. It analyzes the rate of change, the momentum, and the structure of market volatility to identify periods of expansion and contraction, providing a unique edge in anticipating major market moves.
This document will serve as your comprehensive guide, breaking down every mathematical component, every user input, and every visual element to empower you with a profound understanding of how to harness its capabilities.
🔬 THEORETICAL FOUNDATION: THE MATHEMATICS OF MARKET DYNAMICS
VoVix+ is built upon a multi-layered mathematical engine designed to measure what we call "second-order volatility." While standard indicators analyze price, and first-order volatility indicators (like ATR) analyze the range of price, VoVix+ analyzes the dynamics of the volatility itself. This provides insight into the market's underlying state of stability or chaos.
1. The VoVix Score: Measuring Volatility Thrust
The core of the system begins with the VoVix Score. This is a normalized measure of volatility acceleration or deceleration.
Mathematical Formula:
VoVix Score = (ATR(fast) - ATR(slow)) / (StDev(ATR(fast)) + ε)
Where:
ATR(fast) is the Average True Range over a short period, representing current, immediate volatility.
ATR(slow) is the Average True Range over a longer period, representing the baseline or established volatility.
StDev(ATR(fast)) is the Standard Deviation of the fast ATR, which measures the "noisiness" or consistency of recent volatility.
ε (epsilon) is a very small number to prevent division by zero.
Market Implementation:
Positive Score (Expansion): When the fast ATR is significantly higher than the slow ATR, it indicates a rapid increase in volatility. The market is "stretching" or expanding.
Negative Score (Contraction): When the fast ATR falls below the slow ATR, it indicates a decrease in volatility. The market is "coiling" or contracting.
Normalization: By dividing by the standard deviation, we normalize the score. This turns it into a standardized measure, allowing us to compare volatility thrust across different market conditions and timeframes. A score of 2.0 in a quiet market means the same, relatively, as a score of 2.0 in a volatile market.
2. Deviation Analysis (DEV): Gauging Volatility's Own Volatility
The script then takes the analysis a step further. It calculates the standard deviation of the VoVix Score itself.
Mathematical Formula:
DEV = StDev(VoVix Score, lookback_period)
Market Implementation:
This DEV value represents the magnitude of chaos or stability in the market's volatility dynamics. A high DEV value means the volatility thrust is erratic and unpredictable. A low DEV value suggests the change in volatility is smooth and directional.
3. The DEVMA Crossover: Identifying Regime Shifts
This is the primary signal generator. We take two moving averages of the DEV value.
Mathematical Formula:
fastDEVMA = SMA(DEV, fast_period)
slowDEVMA = SMA(DEV, slow_period)
The Core Signal:
The strategy triggers on the crossover and crossunder of these two DEVMA lines. This is a profound concept: we are not looking at a moving average of price or even of volatility, but a moving average of the standard deviation of the normalized rate of change of volatility.
Bullish Crossover (fastDEVMA > slowDEVMA): This signals that the short-term measure of volatility's chaos is increasing relative to the long-term measure. This often precedes a significant market expansion and is interpreted as a bullish volatility regime.
Bearish Crossunder (fastDEVMA < slowDEVMA): This signals that the short-term measure of volatility's chaos is decreasing. The market is settling down or contracting, often leading to trending moves or range consolidation.
⚙️ INPUTS MENU: CONFIGURING YOUR ANALYSIS ENGINE
Every input has been meticulously designed to give you full control over the strategy's behavior. Understanding these settings is key to adapting VoVix+ to your specific instrument, timeframe, and trading style.
🌀 VoVix DEVMA Configuration
🧬 Deviation Lookback: This sets the lookback period for calculating the DEV value. It defines the window for measuring the stability of the VoVix Score. A shorter value makes the system highly reactive to recent changes in volatility's character, ideal for scalping. A longer value provides a smoother, more stable reading, better for identifying major, long-term regime shifts.
⚡ Fast VoVix Length: This is the lookback period for the fastDEVMA. It represents the short-term trend of volatility's chaos. A smaller number will result in a faster, more sensitive signal line that reacts quickly to market shifts.
🐌 Slow VoVix Length: This is the lookback period for the slowDEVMA. It represents the long-term, baseline trend of volatility's chaos. A larger number creates a more stable, slower-moving anchor against which the fast line is compared.
How to Optimize: The relationship between the Fast and Slow lengths is crucial. A wider gap (e.g., 20 and 60) will result in fewer, but potentially more significant, signals. A narrower gap (e.g., 25 and 40) will generate more frequent signals, suitable for more active trading styles.
🧠 Adaptive Intelligence
🧠 Enable Adaptive Features: When enabled, this activates the strategy's performance tracking module. The script will analyze the outcome of its last 50 trades to calculate a dynamic win rate.
⏰ Adaptive Time-Based Exit: If Enable Adaptive Features is on, this allows the strategy to adjust its Maximum Bars in Trade setting based on performance. It learns from the average duration of winning trades. If winning trades tend to be short, it may shorten the time exit to lock in profits. If winners tend to run, it will extend the time exit, allowing trades more room to develop. This helps prevent the strategy from cutting winning trades short or holding losing trades for too long.
⚡ Intelligent Execution
📊 Trade Quantity: A straightforward input that defines the number of contracts or shares for each trade. This is a fixed value for consistent position sizing.
🛡️ Smart Stop Loss: Enables the dynamic stop-loss mechanism.
🎯 Stop Loss ATR Multiplier: Determines the distance of the stop loss from the entry price, calculated as a multiple of the current 14-period ATR. A higher multiplier gives the trade more room to breathe but increases risk per trade. A lower multiplier creates a tighter stop, reducing risk but increasing the chance of being stopped out by normal market noise.
💰 Take Profit ATR Multiplier: Sets the take profit target, also as a multiple of the ATR. A common practice is to set this higher than the Stop Loss multiplier (e.g., a 2:1 or 3:1 reward-to-risk ratio).
🏃 Use Trailing Stop: This is a powerful feature for trend-following. When enabled, instead of a fixed stop loss, the stop will trail behind the price as the trade moves into profit, helping to lock in gains while letting winners run.
🎯 Trail Points & 📏 Trail Offset ATR Multipliers: These control the trailing stop's behavior. Trail Points defines how much profit is needed before the trail activates. Trail Offset defines how far the stop will trail behind the current price. Both are based on ATR, making them fully adaptive to market volatility.
⏰ Maximum Bars in Trade: This is a time-based stop. It forces an exit if a trade has been open for a specified number of bars, preventing positions from being held indefinitely in stagnant markets.
⏰ Session Management
These inputs allow you to confine the strategy's trading activity to specific market hours, which is crucial for day trading instruments that have defined high-volume sessions (e.g., stock market open).
🎨 Visual Effects & Dashboard
These toggles give you complete control over the on-chart visuals and the dashboard. You can disable any element to declutter your chart or focus only on the information that matters most to you.
📊 THE DASHBOARD: YOUR AT-A-GLANCE COMMAND CENTER
The dashboard centralizes all critical information into one compact, easy-to-read panel. It provides a real-time summary of the market state and strategy performance.
🎯 VOVIX ANALYSIS
Fast & Slow: Displays the current numerical values of the fastDEVMA and slowDEVMA. The color indicates their direction: green for rising, red for falling. This lets you see the underlying momentum of each line.
Regime: This is your most important environmental cue. It tells you the market's current state based on the DEVMA relationship. 🚀 EXPANSION (Green) signifies a bullish volatility regime where explosive moves are more likely. ⚛️ CONTRACTION (Purple) signifies a bearish volatility regime, where the market may be consolidating or entering a smoother trend.
Quality: Measures the strength of the last signal based on the magnitude of the DEVMA difference. An ELITE or STRONG signal indicates a high-conviction setup where the crossover had significant force.
PERFORMANCE
Win Rate & Trades: Displays the historical win rate of the strategy from the backtest, along with the total number of closed trades. This provides immediate feedback on the strategy's historical effectiveness on the current chart.
EXECUTION
Trade Qty: Shows your configured position size per trade.
Session: Indicates whether trading is currently OPEN (allowed) or CLOSED based on your session management settings.
POSITION
Position & PnL: Displays your current position (LONG, SHORT, or FLAT) and the real-time Profit or Loss of the open trade.
🧠 ADAPTIVE STATUS
Stop/Profit Mult: In this simplified version, these are placeholders. The primary adaptive feature currently modifies the time-based exit, which is reflected in how long trades are held on the chart.
🎨 THE VISUAL UNIVERSE: DECIPHERING MARKET GEOMETRY
The visuals are not mere decorations; they are geometric representations of the underlying mathematical concepts, designed to give you an intuitive feel for the market's state.
The Core Lines:
FastDEVMA (Green/Maroon Line): The primary signal line. Green when rising, indicating an increase in short-term volatility chaos. Maroon when falling.
SlowDEVMA (Aqua/Orange Line): The baseline. Aqua when rising, indicating a long-term increase in volatility chaos. Orange when falling.
🌊 Morphism Flow (Flowing Lines with Circles):
What it represents: This visualizes the momentum and strength of the fastDEVMA. The width and intensity of the "beam" are proportional to the signal strength.
Interpretation: A thick, steep, and vibrant flow indicates powerful, committed momentum in the current volatility regime. The floating '●' particles represent kinetic energy; more particles suggest stronger underlying force.
📐 Homotopy Paths (Layered Transparent Boxes):
What it represents: These layered boxes are centered between the two DEVMA lines. Their height is determined by the DEV value.
Interpretation: This visualizes the overall "volatility of volatility." Wider boxes indicate a chaotic, unpredictable market. Narrower boxes suggest a more stable, predictable environment.
🧠 Consciousness Field (The Grid):
What it represents: This grid provides a historical lookback at the DEV range.
Interpretation: It maps the recent "consciousness" or character of the market's volatility. A consistently wide grid suggests a prolonged period of chaos, while a narrowing grid can signal a transition to a more stable state.
📏 Functorial Levels (Projected Horizontal Lines):
What it represents: These lines extend from the current fastDEVMA and slowDEVMA values into the future.
Interpretation: Think of these as dynamic support and resistance levels for the volatility structure itself. A crossover becomes more significant if it breaks cleanly through a prior established level.
🌊 Flow Boxes (Spaced Out Boxes):
What it represents: These are compact visual footprints of the current regime, colored green for Expansion and red for Contraction.
Interpretation: They provide a quick, at-a-glance confirmation of the dominant volatility flow, reinforcing the background color.
Background Color:
This provides an immediate, unmistakable indication of the current volatility regime. Light Green for Expansion and Light Aqua/Blue for Contraction, allowing you to assess the market environment in a split second.
📊 BACKTESTING PERFORMANCE REVIEW & ANALYSIS
The following is a factual, transparent review of a backtest conducted using the strategy's default settings on a specific instrument and timeframe. This information is presented for educational purposes to demonstrate how the strategy's mechanics performed over a historical period. It is crucial to understand that these results are historical, apply only to the specific conditions of this test, and are not a guarantee or promise of future performance. Market conditions are dynamic and constantly change.
Test Parameters & Conditions
To ensure the backtest reflects a degree of real-world conditions, the following parameters were used. The goal is to provide a transparent baseline, not an over-optimized or unrealistic scenario.
Instrument: CME E-mini Nasdaq 100 Futures (NQ1!)
Timeframe: 5-Minute Chart
Backtesting Range: March 24, 2024, to July 09, 2024
Initial Capital: $100,000
Commission: $0.62 per contract (A realistic cost for futures trading).
Slippage: 3 ticks per trade (A conservative setting to account for potential price discrepancies between order placement and execution).
Trade Size: 1 contract per trade.
Performance Overview (Historical Data)
The test period generated 465 total trades , providing a statistically significant sample size for analysis, which is well above the recommended minimum of 100 trades for a strategy evaluation.
Profit Factor: The historical Profit Factor was 2.663 . This metric represents the gross profit divided by the gross loss. In this test, it indicates that for every dollar lost, $2.663 was gained.
Percent Profitable: Across all 465 trades, the strategy had a historical win rate of 84.09% . While a high figure, this is a historical artifact of this specific data set and settings, and should not be the sole basis for future expectations.
Risk & Trade Characteristics
Beyond the headline numbers, the following metrics provide deeper insight into the strategy's historical behavior.
Sortino Ratio (Downside Risk): The Sortino Ratio was 6.828 . Unlike the Sharpe Ratio, this metric only measures the volatility of negative returns. A higher value, such as this one, suggests that during this test period, the strategy was highly efficient at managing downside volatility and large losing trades relative to the profits it generated.
Average Trade Duration: A critical characteristic to understand is the strategy's holding period. With an average of only 2 bars per trade , this configuration operates as a very short-term, or scalping-style, system. Winning trades averaged 2 bars, while losing trades averaged 4 bars. This indicates the strategy's logic is designed to capture quick, high-probability moves and exit rapidly, either at a profit target or a stop loss.
Conclusion and Final Disclaimer
This backtest demonstrates one specific application of the VoVix+ framework. It highlights the strategy's behavior as a short-term system that, in this historical test on NQ1!, exhibited a high win rate and effective management of downside risk. Users are strongly encouraged to conduct their own backtests on different instruments, timeframes, and date ranges to understand how the strategy adapts to varying market structures. Past performance is not indicative of future results, and all trading involves significant risk.
🔧 THE DEVELOPMENT PHILOSOPHY: FROM VOLATILITY TO CLARITY
The journey to create VoVix+ began with a simple question: "What drives major market moves?" The answer is often not a change in price direction, but a fundamental shift in market volatility. Standard indicators are reactive to price. We wanted to create a system that was predictive of market state. VoVix+ was designed to go one level deeper—to analyze the behavior, character, and momentum of volatility itself.
The challenge was twofold. First, to create a robust mathematical model to quantify these abstract concepts. This led to the multi-layered analysis of ATR differentials and standard deviations. Second, to make this complex data intuitive and actionable. This drove the creation of the "Visual Universe," where abstract mathematical values are translated into geometric shapes, flows, and fields. The adaptive system was intentionally kept simple and transparent, focusing on a single, impactful parameter (time-based exits) to provide performance feedback without becoming an inscrutable "black box." The result is a tool that is both profoundly deep in its analysis and remarkably clear in its presentation.
⚠️ RISK DISCLAIMER AND BEST PRACTICES
VoVix+ is an advanced analytical tool, not a guarantee of future profits. All financial markets carry inherent risk. The backtesting results shown by the strategy are historical and do not guarantee future performance. This strategy incorporates realistic commission and slippage settings by default, but market conditions can vary. Always practice sound risk management, use position sizes appropriate for your account equity, and never risk more than you can afford to lose. It is recommended to use this strategy as part of a comprehensive trading plan. This was developed specifically for Futures
"The prevailing wisdom is that markets are always right. I take the opposite view. I assume that markets are always wrong. Even if my assumption is occasionally wrong, I use it as a working hypothesis."
— George Soros
— Dskyz, Trade with insight. Trade with anticipation.