DOJI FU IndicatorIndicator is designed to paint a doji, the size of which can be adjusted in settings.
Provided there is a valid doji, the following candle is a 'FU candle' or an 'Institution' candle. This candle wicks above/below the doji and takes liquidity from above or below.
Colours can be changed
Red = Doji candle
Yellow = FU candle
Example shown on the 1hr chart, red doji indicating a change of trend upwards, the FU candle (yellow) takes liquidity from above and sweeps down.
Cari dalam skrip untuk "TAKE"
Margin Zones[kryptodude]This indicator is based on the margin requirements of the CME exchange.
Zones act as support and resistance levels, which are more likely to have a price reaction.
The recommended zones for entering a position, as well as taking profits, are zones 50 and 100.
For example, you decide to open a short position on the +100 zone,
in which case it is recommended to place a stop-loss behind the zone.
Take-profit part at -50 and -100, based on the zones from the formed maximum at the +100 zone.
Settings:
Select the currency pair and the exchange on which the indicator will work, For example BINANCE:BTCUSD
"Margin" (for example,now 68280, the next day the margin will be different)
"Tick cost" for BTC = 25 or 12.5
taken from the CME exchange.
"Price max"- High yesterday (for example 44451).
"Price min"- Low yesterday (for example 41280).
Please note, with strong volatility,
it is recommended to change the Tick cost instead of 25 to put 12.5
And also, only dots " . " not commas ", " work in the indicator.
SignalsThis script allows you to calculate position size, and future profit, loses.
- You can add 3 target values and 1 stop loss
- Optionally you can display table, position it as you like, and see risk ratio
Plans:
- add profit loss to the labels
Kzx PT mod v1.0 by RX-RAYKzx Position tracker mod v1.0 by RX-RAY
Original script by K-zax
The modification was made for the USDRUB ticker (the number of digits in the values of price, interest, lot volume and profit loss for other tickers may affect the positioning of the inscription, but it is fully operative and it may be used with other tickers )
Typical label view:
74.30 - ENTRY PRICE
+/-0.16% - % of price chang ( range +/-9.99)
20 - position value (range 0-99)
(S) - position type (L) - long (S) - short
+/-0017 - actual profit/loss in cash (range +/- 9999)
(All range value for correct label position,
but script mod can be used out off range)
List of additions and changes:
1. Added display of position value, short / long position type and profit / loss value (including broker commission).
2. Positive interest change now corresponds to profit, negative change in interest to loss in accordance with the type of position ( short/long )
3. The position of the inscription and the digits of the values are fixed and now insignificantly depends on the change in the time interval and the change in the scale of the graph and the change in data values and their signs.
4. Added changing the color of the inscription in the situation positive price change, but profit < commission fee. (critical gain).
Position Size By Risk For Bar SizeThis simple script provides a way of calculating position size on a bar by bar basis for a fixed risk amount.
If you are trading a fixed risk amount (e.g. $100) per trade and your Entry and Stop is defined by a specific bar on the chart (any resolution e.g. 15 min, 5 min, 2 min etc) then this indicator will show you the position size you can take.
The user configures the risk amount per trade in the setting for the indicator, the default is 100 (e.g. $100).
It calculates each bar size (high - low) for the resolution of the chart that is being viewed.
The position size = (risk amount) / (bar size).
It then displays a "." (dot) for each bar and to see the position size hover your mouse over this dot .
The pane for this indicator can be set to the top of the chart by using the "Move pane up" option on the chart so that the indicator is easily accessible and discrete at the top of the chart.
Also, there is an option to use this indicator as a substitute for the built-in volume display.
Support Resistance Zones using confluence & Std. DeviationOverview:
This indicator takes (interactive) input from the user for support and resistance levels and plots important zones considering the other confluence levels in the indicator.
Working of indicator:
This indicator takes six input of Support/resistance level form the user
It has following 32 confluence levels
a.4 Recent positive Divergence levels (DN1, DN2, DN3, DN4)
b.4 recent negative divergence levels (DP1, DP2, DP3, DP4)
d.5 Fibonacci levels (Fib0, Fib236, Fib5, Fib618, Fib786)
e. 7 Pivot levels (P, PR1, PR2, PR3, PS1, PS2, PS3)
f.4 EMAs (E20, E200, E100, E50)
g. ATH, ATL, Weekly High, Weekly Low, two days ago high, two days ago low, previous day high , previous day low
The code checks nearest ‘n’ CONFLUENCE for each level (“Number of confluences to check”) in the indicator, after getting the nearest confluence it calculates the standard deviation of those levels WITH RESPECT TO THE MANUAL INPUT LEVELS.
If the Std. Deviation is less than the input value (“Minimum standard deviation” option) then the zone is displayed on the chart.
How to use:
Add the indicator on the chart select your important support and resistance levels.
Set standard deviation, if the confluence is less than the input standard deviation then you will see those zones on the chart.
You can display all divergence levels; you can display all fib levels. All confluences can be displayed by using the setting of the indicator
How to read the indicator values:
The zone will show all the confluence it has in its zone,
Example:
Table details:
The table shows the maximum and minimum deviation out of all six levels .To see at least one zone you have to make sure that Input value Std. Deviation must be greater than Min Std. Deviation of the table
Sources & refences :
Big thank to www.pinecoders.com and kodify.net
Standard deviation :
www.investopedia.com
function to find 'k' closest elements :
www.techiedelight.com
Interactive support resistance :
Divergence for many indicators:
Auto fib level by DGT:
www.tradingview.com
Dictionary/Object LibraryThis Library is aimed to mitigate the limitation of Pinescript having only one structured data type which is only arrays.
It lacks data types like Dictionaries(in Python) or Object (in JS) that are standard for other languages. Tuples do exist, but it hardly solves any problem.
Working only with Arrays could be overwhelming if your codebase is large. I looked for alternatives to arrays but couldn't find any library.
So I coded it myself and it's been working good for me. So I wanted to share it with you all.
What does it do:
==================
If you are familiar with Python or Javascript, this library tries to immimate Object/Dictonary like structure with Key Value Pairs.
For Example:
object= {name:"John Doe", age: 28 , org: "PineCoders"}
And then it also tries to immitate the Array of Objects (I call it Stack)
like this:
stack= Array({name:"John Doe", age: 28 , org: "PineCoders"},
{name:"Adam Smith", age: 32 , org: "PineCoders"},
{name:"Paragjyoti Deka", age: 25 , org: "PineCoders"})
So there are basically two ideas: Objects and Stacks.
But it looks whole different in Pinescript for obvious reasons.
Limitation:
The major limitation I couldn't overcome was that, for all of the values: both input and return values for properties will be of string type.
This is due to the limiation of Pinecsript that there is no way to return a value on a if-else statement dynamically with different data types.
And as the input data type must be explicitly defined when exporting the library functions, only string inputs are allowed.
Now that doesn't mean you won't be able to use integer, float or boolens, you just need to pass the string value for it using str.tostring() method.
And the output for the getter functions will be in strings as well. But I have added some type conversion methods that you could use from this library itself.
From String to Float, String To Integer and String to Boolean: these three methods are included in this library.
So basically the whole library is based on a manipulatiion of Array of strings under the hood.
///////////////
Usage
///////////////
Import the library using this statement:
import paragjyoti2012/STR_Dict_Lib/4 as DictLib
Objects
First define an object using this method:
for eample:
object1= DictLib.init("name=John,age=26,org=")
This is similar to
object1= {name:"John",age:"26", org:""} in JS or Python
Just like we did here in for "org", you can set initital value to "". But remember to pass string values, even for a numerical properties, like here in "age".
You can use "age="+str.tostring(age). If you find it tedious, you can always add properties later on using .set() method.
So it could also be initiated like this
object= DictLib.init("name=John")
and later on
DictLib.set(object1,"age", str.toString(age))
DictLib.set(object1,"org", "PineCoders")
The getter function looks like this
age= DictLib.get(object1,"age")
name=DictLib.get(object1,"name")
The first argument for all methods .get, .set, and .remove is the pointer (name of the object).
///////////////////////////
Array Of Objects (Stacks)
///////////////////////////
As I mentioned earlier, I call the array of objects as Stack.
Here's how to initialize a Stack.
stack= DictLib.initStack(object1)
The .initStack() method takes an object pointer as argument. It simply converts the array into a string and pushes it into the newly created stack.
Rest of all the methods for Stacks, takes the stack pointer as it's first arument.
For example:
DictLib.pushStack(stack,object2)
The second argument here is the object pointer. It adds the object to it's stack. Although it might feel like a two dimentional array, it's actually an one dimentional array with string values.
Under the hood, it looks like this
////////////////////
Methods
////////////////////
For Objects
-------------------
init() : Initializes the object.
params: (string) e.g
returns: The object ( )
example:
object1=DictLib.init("name=John,age=26,org=")
...................
get() : Returns the value for given property
params: (string object_pointer, string property)
returns: string
example:
age= DictLib.get(object1,"age")
.......................
set() : Adds a new property or updates an existing property
params: (string object_pointer, string property, string value)
returns: void
example:
DictLib.set(object1,"age", str.tostring(29))
........................
remove() : Removes a property from the object
params : (string object_pointer, string property)
returns: void
example:
DictLib.set(object1,"org")
........................
For Array Of Objects (Stacks)
-------------------------------
initStack() : Initializes the stack.
params: (string object_pointer) e.g
returns: The Stack
example:
stack= DictLib.initStack(object1)
...................
pushToStack() : Adds an object at at last index of the stack
params: (string stack_pointer, string object_pointer)
returns: void
example:
DictLib.pushToStack(stack,object2)
.......................
popFromStack() : Removes the last object from the stack
params: (string stack_pointer)
returns: void
example:
DictLib.popFromStack(stack)
.......................
insertToStack() : Adds an object at at the given index of the stack
params: (string stack_pointer, string object_pointer, int index)
returns: void
example:
DictLib.insertToStack(stack,object3,1)
.......................
removeFromStack() : Removes the object from the given index of the stack
params: (string stack_pointer, int index)
returns: void
example:
DictLib.removeFromStack(stack,2)
.......................
getElement () : Returns the value for given property from an object in the stack (index must be given)
params: (string stack_pointer, int index, string property)
returns: string
example:
ageFromObject1= DictLib.getElement(stack,0,"age")
.......................
setElement() : Updates an existing property of an object in the stack (index must be given)
params: (string stack_pointer, int index, string property, string value)
returns: void
example:
DictLib.setElement(stack,0,"age", str.tostring(32))
........................
includesElement() : Checks if any object exists in the stack with the given property-value pair
params : (string stack_pointer, string property, string value)
returns : Boolean
example:
doesExist= DictLib.includesElement(stack,"org","PineCoders")
........................
searchStack() : Search for a property-value pair in the stack and returns it's index
params: (stringp stack_pointer, string property, string value)
returns: int (-1 if doesn't exist)
example:
index= DictLib.searchElement(stack,"org","PineCoders")
///////////////////////
Type Conversion Methods
///////////////////////
strToFloat() : Converts String value to Float
params: (string value)
returns: float
example:
floatVal= DictLib.strToFloat("57.96")
.............................
strToInt() : Converts String value to Integer
params: (string value)
returns: int
example:
intVal= DictLib.strToFloat("45")
.............................
strToBool() : Converts String value to Boolean
params: (string value)
returns: boolean
example:
boolVal= DictLib.strToBool("true")
.............................
Points to remember
...............
1. Always pass string values as arguments.
2. The return values will be of type string, so convert them before to avoid typecasting conflict.
3. Horses can't vomit.
More Informations
====================
Yes, You can store this objects and stacks for persisting through the iterations of a script across successive bars.
You just need to set the variable using "var" keyword. Remember this objects and stacks are just arrays,
so any methods and properties an array have it pinescript, would be applicable for objects and stacks.
It can also be used in security functions without any issues for MTF Analysis.
If you have any suggestions or feedback, please comment on the thread, I would surely be happy to help.
ms hypersupertrendThis is a well-known strategy by using 3 different Supertrends and a trend-defining EMA,
feel free to play around with the settings, a backtest on 8h ETHUSDT pair brought some good results using
the 233EMA and investing 75% of a 10k start capital
the idea is to have at least 2 super trends going green above the trend-EMA to go long and exit by turning
2 super trends red (idea: 1 super trend in red could initialize a take profit)
shorts work vice versa
The EMA shows in green for uptrends and in red for downtrends, if it is blue no Signal will be taken because
the 3 super trends are not all above or below the trendline(EMA)
//-------------------------------------------------------------------------------------------------------------------------------------------------
Update 1:
- Fixed a minor input error
- Added ATR stoploss, and commented out the percentage stop loss
- Added time window to backtest
- Added exit on risk/reward is met
- This version is only buy...wait for next update adding shorts and more
As always, thanks for your ideas, likes, and support. Feel free to mess around with the settings and give me your feedback.
moonshot hypertrender (supertrend strategy)
This is a well-known strategy by using 3 different Supertrends and a trend-defining EMA,
feel free to play around with the settings, a backtest on 8h ETHUSDT pair brought some good results using
the 233EMA and investing 75% of a 10k start capital.
The idea is to have at least 2 Supertrends going green above the trend-EMA to go into a long position. The exit
will be triggered if 2 Supertrends change to red (idea: 1 super trend in red could initialize a take profit).
Taking shorts works vice versa.
The EMA shows in green for uptrends and in red for downtrends, if it is blue (ranging market) no Signal will be taken because
the 3 Supertrends are not all above or below the trendline(EMA).
I heard about this strategy on youtube but I can't get the promised 60% win-rate ;)
any suggestions to improve it are welcome
Hope you find it useful and it would be nice to get your feedback
-theasgard-
MA MTF Cross StrategyStrategy Introduction
This multi-timeframe strategy generates buy and sell entries based on two Moving Averages’ cross with an option to turn on trend direction confirmation through 3rd Moving Average selection. While all three moving averages can be selected from the following list:
SMA
EMA
DEMA
TEMA
LRC
WMA
MF
VAMA
TMA
HMA
JMA
Kijun v2
EDSMA
McGinley
Only long trades are enabled currently
Default Settings
I've set the default selection to the perfect options for 1D timeframe. You can modify all MAs selections and their lengths according to your selected timeframes.
Following default settings are used:
Heiken Ashi Candles are selected by default as source
1st Moving Average selection is set to LRC (Linear Regression Curve)
Length of 1st Moving Average is set to 50
2nd Moving Average is set to EDSMA (Ehlers Deviation-Scaled Moving Average)
Length of 2nd Moving Average is set to 30
3rd Moving Average is set to HMA (Hull Moving Average)
Length of 3rd Moving Average is set to 200
Uptrend direction confirmation through 3rd Moving Average is set to false by default
Start date is set to start from 2013
Backtesting can also be done selecting %age of equity
Suggestions for Usage
Mostly winning trades by set defaults have no prominent drawdown so losing trades can be abolished with Stoploss. Would soon add Stoploss and Takeprofit options in next version. Also, if you want an alerts version of it then just comment below and would publish it later. I’ve found this strategy useful on 1D timeframe with described default settings but multiple Mas selections can be explored further.
MZ SRSI Strategy V1.0Strategy Introduction
This strategy starts from selection of 1st Moving Average from one of following:
SMA
EMA
DEMA
TEMA
LRC
WMA
MF
VAMA
TMA
HMA
JMA
Kijun v2
EDSMA
McGinley
Then it calculates the RSI of selected 1st Moving Average
In the end it calculates Moving Average of previously calculated RSI and for this purpose 2nd Moving Average is also selected from above list.
Cross of RSI and its Moving Average generates Strategy Alerts
Only long trades are enabled currently
Default Settings
I've set the default selection to the perfect options for 1D and 4h timeframes. You can modify both MAs selection and their length according to your selected timeframe.
Following default settings are used:
Heiken Ashi Candles are selected by default as source
1st Moving Average selection is set to LRC (Linear Regression Curve)
Length of 1st Moving Average is set to 50
RSI length is set to 2 because it is supposed to be fast
2nd Moving Average of RSI is set to TMA (Triangular Moving Average)
Length of 1st Moving Average is set to 5
Start date is set to 2011
Backtesting can also be done selecting %age of equity
Suggestions for Usage
Mostly winning trades have no prominent drawdown so losing trades can be abolished with Stoploss. Would soon add Stoploss, MTF and Takeprofit options in next version. Also if you want an alerts version of it then just comment below and would publish it later. I’ve found this strategy useful on 1D and 4h timeframes with described default settings.
Outside DayThis strategy is taken from Perry Kaufman's book "Trading System and Methods".
You can enter on the direction of the candle, or opposite to it. I find that the opposite tends to yield better results in volatile assets, allowing a better reward to risk ratio. There is no stop loss in this strategy, only a fixed take profit and a time limitation.
Hull MA TimeFrame CrossOverHello traders,
Although this strategy is configured on BTCUSDT , with a changing of settings, it can be used on any trading instrument.
Here it is seen, on the 2 hour chart. With Trading Fees included in result (adjust to suit your exchange fees).
The candle crossover is set to Daily timeframe.
That means that the Candle crossover is going to see if todays price is higher than yesterdays price.
If user sets this to 4 hour timeframe, the candle crossover would be when price is higher than the the price 4 hours ago...
The rest is simple, a moving average to detect direction, and an ATR StopLoss (if activated).
There is StopLoss and Take Profit settings which work by percentage.
The periods of the moving average and the ATR can be adjusted, as can the TP % and SL %.
The price is taken from the CLOSE or the OPEN or OHLC4 etc... which can be changed in the settings. OPEN is recommended to avoid repainting.
The moving average also has selectable types (ALMA,SMA,EMA,WMA,HMA)
So if the Price is above the Moving average, and the moving average is above the alternate timeframe value, then a buy is activated
if the Price is below the Moving average, and the moving average is below the alternate timeframe value, then a sell is activated
if OPEN is selected as Price source, then the alternate timeframe value would be the OPEN of the alternate timeframes candle.
the values are all plotted on chart so user can see what is happening when what crosses over what, and then what changes when settings are adjusted.
Have FuN!
if this strategy brings you the epik win......
.... dont forget about me
seaside420 ❤️
40+ Coin Screener (workaround to 40 Security Limit Per Script) This is a far inferior method for a screener/scanner (compared to my first publication) but after looking at that script from a noobs eyes again, I could see how this form would be a lot easier to take in/understand so wanted to publish it. Everything that I could think of to mention about this is in my 1st pub so ill leave it to you to check it out...though I did include some comments in the script. It is pretty straight forward but if you have any questions don't hold them in. I'll answer them if I can. The only thing that is not in this one is setting up the alert feature so that you only have to create 1 alert per iteration of the script and it takes care of all of the coins for that iteration/set that is chosen in the settings (so please see previous script if would like to do this for your screener/scanner).
To be PERFECTLY CLEAR, the workaround is to the issue of not being able to scan but only 40 coins per script. You can scan more than 40 per script but only if you create "batches" or "sets" that the user can select within the settings which set to use for each iteration of the script on the chart. That being, you have to the script multiple times to the chart and merge them into 1 window and merge the scales (instructions in first publications). Here in this script I am scanning 72 different coins that are the Margin Coins on KUCOIN. I have split them up into 3 sets (24 coins per set). I could have made 2 sets but the script will be slower to load and to respond (like, when it comes to receiving alerts), thus I split them up the way I did. If you want to change any of this there are slightly more details in the previous script.
One great use-case that I LOVE about this particular version (and the way I use it) is right at the end of when I see a whole market dump/pump coming to an end and want to know which horse to bet on. Used to think whichever coin come out the fastest from the dump was the one to bet on but quickly learned that 1-2 (or even a few) hrs needs to go by first bc the ones that look the strongest in the beginning are NOT the ones to have performed the best when viewing the results 12 hrs later. IN FACT, many instances of using this exact script for reasons as such has taught me that the manipulators (I believe this to be the case as least) WANT everyone to bet on these that come out the gate the hardest and thus they make them move REALLY hard in the beginning then they QUICKLY become stagnant (moreso, they become WORSE than stagnant, they actually quickly retrace to put you into the negative so that you get out to get into the others now moving (to provide the market with more liquidity. They WANT you to get into a coin thats moving crazy hard so that they can then cease that movement once many fall for the trick just to then make that once strong looking coin now stagnant and make others move crazy hard. They wait for you to get out of the 1st and into the next set of movers just to do this time and time again bc hey, what are we sheep good for other than to provide the big guns with liquidity, am I right? Thats rhetorical, which you would know if you've ever had this happen to you (without a doubt MANY of you have). Let this script (above all other things) provide good evidence to back up this cynical way of viewing the markets to anyone that is questioning it.
This prolonged time between when the dump is over and when the ACTUAL movers REALLY start moving can actually be of great benefit to us sheep if used correctly, Firstly, it gives us some time to determine if when we thought was the bottom, ACTUALLY was the bottom. That bottom is easily determined if there are no (or very few) coins that went any lower than the point in time that the script began calculating on. Secondly, it allows us time to wait for the REAL movers and shakers to start moving and shaking.
One new feature that I LOVE that TV has implemented is the ability (once the script is added to the chart) to be able to click a point in time on the chart where you want the script to begin its calculations. If this point needs to be changed at any point in time then you can either go into the setting and input the time you wish or simply remove the script and add it again so that you are prompted to select another point in time. Ok, I think that everything I wanted to say. The next version that I will add will be probably my favorite and most used by yours truly...not to mention unique in a way that I have yet to see an implementation anything like it in all of TV's public library. Not to say its not there, but I have yet to come across it and I have DEFINITELY done my fair share of searching for it when I couldn't figure out how to code it for the longest time (though, I was and still am a noob so might get some great feedback on better ways to approach it, but we'll save that jabbering for the next of the publications.
I hope each and every one of ya'll (yes, Im from the South) have the GREATEST of Thanksgivings (if in the US that is...I graced my parents with the best gift anyone could have given them 35 years ago on Thanksgiving....MEEEE ;) So I will sure as hell be having a great holiday. Thanks for checking out my script...you can "like" and leave a comment if you so feel the urge to...or not. Im not doing this for me, but rather to stretch my arms out as far as possible to benefit the most people as possible and more people would see the script if it has more likes/comments/traffic pointing towards it...not to mention as other publishers have...it IS gratifying to see a few likes in my side window, which btw, I have MANY more variations and completely diff types of scanners/screeners Ill be publishing in the future and to know that they've become of use....I"VE become of use to the community is very....pleasing to me and does (as I've also seen many publishers mention as well) drive me to want to publish ones that I originally thought I would keep for myself. Peace out people.
AG FX - Pivot PointsPivot Points High Low
Definition
The Pivot Points High Low indicator is used to determine and anticipate potential changes in market price and reversals. The Highs referred to in the title are created based on the number of bars that exhibit lower highs on either side of a Pivot Point High, whereas the Lows are created based on the number of bars that exhibit higher lows on either side of a Pivot Point Low.
Calculations
As mentioned above, Pivot Point Highs are calculated by the number of bars with lower highs on either side of a Pivot Point High calculation. Similarly, Pivot Point Lows are calculated by the number of bars with higher lows on either side of a Pivot Point Low calculation.
Takeaways and what to look for
A Pivot Point is more significant or noteworthy if the trend is extended or longer than average. This can mean if a trader selects a higher period for before and after the Pivot Point, the trend could be longer and therefore prove the Pivot Point itself more notable.
Additionally, Pivot Points can help a trader assess where would be best to draw. By analyzing price changes and reversals, a trader has more of an ability to determine and predict price patterns and general price trends.
Summary
The Pivot Points High Low indicator can predict and determine price changes and potential reversals in the market. Pivot Points can also help traders identify price patterns and trends, depending on the period and significance of the Pivot Point value.
Mayer MAMayer Multiple Price Bands Explained
The Mayer Multiple Price Bands chart is a simple modification to the original Mayer Multiple chart explained here.
Summary of Mayer Multiple
The Mayer Multiple is calculated by taking the price of Bitcoin and dividing it by the 200 day moving average value. The thinking behind the multiple is that by comparing the current price of bitcoin and its longer term moving average, you get a sense of if it is overbought (overvalued) or oversold (undervalued).
Adding Bands
The addition of price bands takes the multiple a step further by attempting to tell you how overbought or oversold bitcoin is with more detail. Instead of just three labels (overbought, fairly priced, and undervalued), you are given more granular labels: Oversold, Bearish, Bullish, Bullish Extension, and Overbought.
How to Calculate Mayer Multiple Bands
The Mayer multiple is calculated by taking the price of Bitcoin and dividing it by the 200 day moving average value. We take this a step further and display various prices that represent ‘bands’ of over and undervalued Bitcoin based on the multiple. They are as follows:
>2.5x: Overbought
>1.7x and <2.5x: Bullish Overextension
>1.1x and <1.7x Bullish Channel
>0.55x and <1.1x: Bearish Channel
<0.55x: Oversold
Triple Modified Hull Moving Average Cross By <Zakaria>Triple Modified Hull Moving Average Cross By
What is this?
this is a modified formula for Hull moving average, it is more accurate and predicts the golden and death cross earlier.
How to use?
Work better in high time frames (1D,1W)
the white line vs the red and the orange lines :
1 - when the white line crosses the red and the orange lines from the bottom the price will go down . Death cross!
2 - when the white line crosses the red and the orange lines from the top the price will go up . Golden Cross!
the red line vs the orange line :
1- when the orange line crosses the red line from the bottom the price will go down . Death cross!
2 - when the orange line crosses the red line from the top the price will go up . Golden Cross!
p.s: the lag between these two lines will be very small. use it in the 1W time frame to predict where exactly the bull market will end.
You can input your personalized values if you want!
Indicators & Conditions Test Framework [DTU]Hello All,
This script is a framework to build strategies by combining indicators and conditions (long, short, exits). You are able to analyze your strategies in realtime by changing the input parameters related to indicators, conditions and their combinations.
OVERVIEW
With this Study/Strategy framework, you will be able to create strategy conditions, display them on the chart, and test them using existing indicators as well as external and custom indicators that you can add.
The main purpose of the Framework is to choose your indicators to be used in the conditions and test your strategy by producing your "Long, short, Exit long, Exit short" combinations.
Although may be, it can be a bit difficult and complicated at first start, but you can understand the logic on its use in a very short time.
Notes:
I removed external links off descriptive images and video to be comply with Trading view violation House Rules
Since I am new in the community and still trying to understand the pine script language I can make errors and violations on my script. Please Inform me on any issue that I made..
HOW TO
STEP 1: SETTINGS ______________________________________________________________________________________________________
SOURCE, TIMEFRAME, SECURITY
Select the Source, timeframe and Secure type that your indicators will use.
Here, the Secure entry consists of 3 parts and the f_security function is used to determine it.
a)Secure
This option is defined as reducing repaint in tradingview calculations as much as possible. The following function is used.
request.security(_symbol, _res, _src , lookahead=barmerge.lookahead_on)
b)Semi Secure
While this option can reduce repaint in tradingview calculations as much as possible, it is less secure. The following function is used.
request.security(_symbol, _res, _src )
c)Repaint
This option turns on the repaint feature. The following function is used.
request.security(_symbol, _res, _src ) : na
Ind Source:
You can the source that indicators will use their own calculations
Ext Source:
You can import external Indicator sources from here . It appears on condition/combination area as "EXT".
To export the External indicator plot it with a title. It will be visible in source dropdown input
PERIOD , ALERTS...
Period:
Determine your strategy testing period by selecting start and end date/time
(!!! According to your tradingview subscription, it takes the last 5000, 10000.. bars.
The extra bar option may cause problems such as not appearing in the calculations or errors).
Plot Alerts:
Plot condition result as alerts arrows on the chart's bottom for "LONG" and the top for "SHORT" entries, exits
Close on opposite:
When selected, a long entry gets closed when a short entry opens and vice versa
Show Profit:
It appears if script is in strategy mode (not in study) this can display current or open profit for better reanalyzing your strategy entry exit points. (Currently under development)
PLOT TYPE OPERATIONS
This option has 4 entries
a) Mult
Sets the multiplier for the selected Plot Type (stochastic, Percentrank, Org Range (-1,1) ) except for "Original" in the range (-1,1).
EXAMPLE: When 1000 is selected, the indicator in the range of (-1,1) will appear in the range of (-1000, 1000) on the screen.
b) Shift
It determines the shift that will appear on the screen for the selected Plot Type (stochastic, Percentrank,Org Range (-1,1) ) in the range (-1,1) other than "Original".
EXAMPLE: When Shift:35000 and mult:1000 are selected, the indicator will appear in the range (34000, 36000) on the screen.
c) Smooth
This option (only for Stochastic & PercentRank) allows to smooth the indicator to be displayed.
Here, tradinview ta.swma function is used.
b) hline
Adjusts the horizontal lines to appear on the screen according to the mult factor for the range (-1,1)
The lines represent the values (-1, -05, 0, 05, 1)
STEP 2: INDICATORS ______________________________________________________________________________________________________
You need to choose indicators that you can use in strategy conditions.
Here, the indicators come from the dturkuler/lib_Indicators_DT open script library defined in the code
In addition, you can add the indicators that you will create in the area defined in the code to this list..
You can also import external indicators and test them with other variables on the system..
You can choose a maximum of 5 indicators that you can use in total. (can be increased in new versions)
Indicators are categorized in 3 main sections
Indicator Selection:
You can select your indicators from this area
a)Moving Averages
These are indicators such as EMA, SMA that you can show on the stock. They come from the library.
These indicators are fed from Settings/source. Only the length value can be used as a parameter.
In addition, line colors can be changed..
As of now, there are 28 indicators in the library in total and 5 indicators are left as future use for this field for now.
b)Other Indicators
These are different indicators from the stock value such as RSI, COG. They come from the library. These indicators are fed from Settings/source.
Only the length value can be used as a parameter. In addition, line colors can be changed.
As of now, there are 24 indicators in the library in total and 5 indicators are left as a future use for this field for now.
c)Custom Indicators
These indicators are the ones you can create by programming yourself in the source code..
The area at the bottom of the settings screen is reserved for the parameters of this type of indicators.
Indicator Length:
You can update your selected indicator length value from here. (Not: it doesn't work for custom indicators since they have their parameter on cust. Ind. input screen )
Indicator Plot Type:
Next to the indicators, there is an input selection field about how they will be displayed on the screen.
a)Original
The indicator is displayed on the screen with its current values. It is an ideal solution for displaying moving average indicators such as (EMA, SMA) over current stock.
Since the values of indicators such as (RSI, COB) are low (-100,100 : -1.1), they appear at the bottom of the screen and make analysis difficult.
For this reason, other options may be more suitable for these.
b)Stochastic
The indicator is displayed on the screen with stochastic calculation in the range of -1.1.
It uses the stochastic(50) calculation method to spread indicators such as (RSI, COB) over the range (-1,1).
Indicators in this selection can be fixed and monitored under stock on the screen with the parameters under the Plot Type section.
You can see the original values of the relevant indicator on the Data Window screen.
(!!! Do not use the values on the chart in your condition calculations. Instead, get the values from Data Window)
c)PercentRank
The indicator is displayed on the screen with stochastic calculation in the range of -1.1. .
Since the values of indicators such as (RSI, COB) are low (-100,100 : -1.1), they appear at the bottom of the screen and make analysis difficult.
Indicators in this selection can be fixed and monitored under stock on the screen with the parameters under the Plot Type section.
You can see the original values of the relevant indicator on the Data Window screen
((!!! Do not use the values on the chart in your condition calculations. Instead, get the values from Data Window)
d)Org Range (-1,1)
If your indicator is in the range of -1.1, your indicator will be displayed on the screen with its original calculation in the range of -1.1.
Indicators in this selection can be fixed and monitored under stock on the screen with the parameters under the Plot Type section.
You can see the original values of the relevant indicator on the Data Window screen.
(!!! Do not use the values on the chart in your fitness calculations. Instead, get the values from Data Window)
STEP 2 NOTES:
STEP 3: CONDITIONS ______________________________________________________________________________________________________
After choosing the indicators you will use in the conditions, you move on to the "CONDITIONS" section.
There are 4 conditions type here.
• LONG ENTRY CONDITION
• SHORT ENTRY CONDITION
• LONG CLOSE CONDITION
• SHORT CLOSE CONDITION
The use of each condition is the same.
There are 3 combinations you can use in each condition. (can be increased in new versions)
a)COMBINATIONS
There are 3 combinations you can use in each condition. (can be increased in new versions)
Each combination are build from 4 parts
1)1st Indicator
If set to "NONE" this combination will not be used on calculations. You can select
IND1-5: from indicators (See above),
EXT: value from externally imported indicator
Stock built-in values: close, open...
2)Operator
Selected Operator compares 1st Indicator with the 2nd one. You can select different operators such as
crossover, crossunder, cross,>,<,=....
3)2nd Indicator
This indicator will be compared with the 1st one via selected Operator. You can select
IND1-5: from indicators (See above),
VALUE: a float value defined in the combinations value parameter
EXT: value from externally imported indicator
Stock builtin values: close,open...
4)Value
When the 2nd indicator field is "VALUE", value area compares the entered value.
ex: 1st indicator="open", op=">", 2nd indicator="VALUE", value=3000.12 means is(close>3000.12)
In other conditions, it compares the previous values of the indicator.
ex: 1st indicator="open", op=">" 2nd indicator is "close" and value is 2 means is(open>close )
EXAMPLES:
indicator 1= "IND1", Operator=">", indicator 2= "IND2" => is(IND1>IND2)
indicator 1= "IND1", Operator=">", indicator 2= "VALUE", "0.1" => is(IND1>0.9)
indicator 1= "IND2", Operator="crossover", indicator 2= "IND1" => is(IND2 crossover IND1) : like a=ta.crossover(IND2, IND1)
indicator 1= "IND1", Operator="<", indicator 2= "close" => is(IND1>close)
indicator 1= "IND1", Operator="<", indicator 2= "EXT" => is(IND1>EXT) , EXT mean external imported indicator that define on settings section
indicator 1= "IND1", Operator="<", indicator 2= "IND1", Value="1" => is (IND1>IND1 )
b)JOIN COMBINATIONS
Each combination in Condition is compared with the next one via JOIN operator
The join operator can be selected as AND or OR.
Examples:
1st combination= is(IND1>0.9) true
2nd combination= is(IND2 crossover IND1) false
1st combination "AND" 2ndcombination" => false (is(IND1>0.9) AND is(IND2 crossover IND1))
1st combination "OR" 2nd combination" => true (is(IND1>0.9) OR is(IND2 crossover IND1))
STEP 3 NOTES:
When the 2nd indicator field is "VALUE", value area compares the entered value. In other conditions, it compares the previous values of the indicator.
In cases where "VALUE" is not selected, integer values must be entered in this field. (float should not be entered. ie 1, 2 should be entered)
!!!If the 1st indicator is "NONE" in the combination, that combination is cancelled.
Each combination returns true/false, allowing the selected value to be compared with another value
Example: EMA(21)>EMA(50) returns true under all conditions or (EMA(21) crossover EMA(50)) returns true when passed.
You can use , Value of 5 indicators (IND1-IND5) or (VALUE) that you have defined in combinations or import indicator (EXT) or stock values (close, open, high...) in your calculations.
combination Compares the 1st indicator with 2nd indicator via the operator.
STEP 4: CUSTOM INDICATORS ______________________________________________________________________________________________________
There is an area in the code for designing Custom Indicators.
Here you can design your own indicators and use them in the framework.
You can also create unlimited parameters for your indicators in the SETTINGS custom indicator field.
For now, only 3 Custom indicators have been defined.
Examples are entered in the code for custom indicators.
STEP 4 NOTES:
Including / updating custom to the code is explained in the source code
• LIMITATIONS:
!!! According to your tradingview subscription, it takes the last 5000, 10000.. bars. More bar options may cause problems such as not appearing in the calculations or errors.
• RAMBLINGS:
• NOTES [ /i]
This Script can be used as an indicator if the last strategy parts in the code are commented out and converted to the initial strategy study.
It was originally prepared for my use with my own strategy framework and has export functions accordingly.
When integrated to my own strategy framework it brings many more features over strategy definition of trades.
• TODO [ /i]
TODO: Add tooltips to the settings screen
TODO: Add double triple, Quatr factor for all indicators (convert any indicator to factor2-4 facotr. ex: EMA to DEMA, TEMA, QEMA...)
TODO: Add factorized Fibo avg range indicator (good for trend definition and entry exit points)
TODO: Add bands to the indicator and conditions
TODO: Add debug window for exporting indicator's parameters
TODO: Add isRising(value) isFalling(value), is...(value) .... to combinations (they can be used as custom indicator also
TODO: Reassess condition entry screen for user friendly GUI
TODO: Increase # conditions from 3 to 4
TODO: Reassess strategy entries, exit and close (should be improved)
TODO: Add Alerts, Condiional alerts for indicator (study) part
TODO: Create export function v3 for Pinecoders Indicator framework
• THANKS:
For Pine script format docs RicardoSantos .
For Pine script coding standards Pinecoders .
For moving average script used on library s RodrigoKazuma .
supertrendHere is an extensive library on different variations of supertrend.
Library "supertrend"
supertrend : Library dedicated to different variations of supertrend
supertrend_atr(length, multiplier, atrMaType, source, highSource, lowSource, waitForClose, delayed) supertrend_atr: Simple supertrend based on atr but also takes into consideration of custom MA Type, sources
Parameters:
length : : ATR Length
multiplier : : ATR Multiplier
atrMaType : : Moving Average type for ATR calculation. This can be sma, ema, hma, rma, wma, vwma, swma
source : : Default is close. Can Chose custom source
highSource : : Default is high. Can also use close price for both high and low source
lowSource : : Default is low. Can also use close price for both high and low source
waitForClose : : Considers source for direction change crossover if checked. Else, uses highSource and lowSource.
delayed : : if set to true lags supertrend atr stop based on target levels.
Returns: dir : Supertrend direction
supertrend : BuyStop if direction is 1 else SellStop
supertrend_bands(bandType, maType, length, multiplier, source, highSource, lowSource, waitForClose, useTrueRange, useAlternateSource, alternateSource, sticky) supertrend_bands: Simple supertrend based on atr but also takes into consideration of custom MA Type, sources
Parameters:
bandType : : Type of band used - can be bb, kc or dc
maType : : Moving Average type for Bands. This can be sma, ema, hma, rma, wma, vwma, swma
length : : Band Length
multiplier : : Std deviation or ATR multiplier for Bollinger Bands and Keltner Channel
source : : Default is close. Can Chose custom source
highSource : : Default is high. Can also use close price for both high and low source
lowSource : : Default is low. Can also use close price for both high and low source
waitForClose : : Considers source for direction change crossover if checked. Else, uses highSource and lowSource.
useTrueRange : : Used for Keltner channel. If set to false, then high-low is used as range instead of true range
useAlternateSource : - Custom source is used for Donchian Chanbel only if useAlternateSource is set to true
alternateSource : - Custom source for Donchian channel
sticky : : if set to true borders change only when price is beyond borders.
Returns: dir : Supertrend direction
supertrend : BuyStop if direction is 1 else SellStop
supertrend_zigzag(length, history, useAlternateSource, alternateSource, source, highSource, lowSource, waitForClose, atrlength, multiplier, atrMaType) supertrend_zigzag: Zigzag pivot based supertrend
Parameters:
length : : Zigzag Length
history : : number of historical pivots to consider
useAlternateSource : - Custom source is used for Zigzag only if useAlternateSource is set to true
alternateSource : - Custom source for Zigzag
source : : Default is close. Can Chose custom source
highSource : : Default is high. Can also use close price for both high and low source
lowSource : : Default is low. Can also use close price for both high and low source
waitForClose : : Considers source for direction change crossover if checked. Else, uses highSource and lowSource.
atrlength : : ATR Length
multiplier : : ATR Multiplier
atrMaType : : Moving Average type for ATR calculation. This can be sma, ema, hma, rma, wma, vwma, swma
Returns: dir : Supertrend direction
supertrend : BuyStop if direction is 1 else SellStop
Davood Kumothis andicator is build in base of ichimoku cloud.
Select the interval at which the kumo clouds change phase and depending on what time frame we are in, we give the time inputs to the indicator.
then, the indicator calculates the area of the cloud and set the ascending and descending targets when price break the highest or lowest candle in that time range.
So entry point is the highest and lowest candle and first and second targets are determined by the indicator.
note : i used this andicator only in crypto market not forex and it works well
Vigia blai5VIGÍA is the latest and current version of this weighted indicator that collects, combines and harmonizes the values of four other classic indicators: RSI, MFI, Bollinger Bands and Stochastic.
It is a 2nd Generation indicator, as it does not base its algorithm on pure price data, but on its evolution (volatility, volume differences, power variations, cycle phase ...) working from first generation indicators included and mixed in the algorithm.
With the RSI we detect current power or depletion; the MFI adds the harmonization between price and volume; Bollinger Bands warn us of positions in areas close to support and resistance, and Stochastic informs us of the favorable and unfavorable phases of its cycle. VIGÍA tries to gather all this information in a single value and signal. This is how the curve of this indicator emerges.
The layout of this curve is its own and different from that of the other four separately. But the key idea of this complex indicator is to harmonize the signals.
By "harmonizing" we mean that an exaggerated value of one of the individual indicators, being part of a set, is nuanced. On the other hand, a simultaneous good look in two or more, enhances the resulting signal making it more visible and clear for trading.
One of the main effects that I have tried to enhance in the various versions of VIGÍA is its geometry, so one of the best ways to operate the indicator is divergences, which are generally quite reliable.
But, unlike so many conventional indicators, VIGÍA allows us a relatively large number of operations, which can satisfy both lovers of the most daring techniques and those who are more prudent in their trading.
In the first place, the black line is properly the Watch Signal (SV), the soul and central element of this entire invention.
On it you will see that a red line is oscillating. It is an Exponential Average of the indicator itself (by default, value 20). It is of enormous interest for trading since the SV cuts on its Average can be taken as entry and exit signals. (To check it, you just have to check it on the history of any value or index).
But there are more elements. An important change is the transformation of fixed levels into variable trading bands. This system allows the environment to adapt to changes in the asset price, recognizing and transforming itself according to the trend or laterality phases through which it runs. The signal moves above and below a central zero value and (as always) with no extreme limits, because it is important to remember that VIGÍA is not an oscillator and that prevents it from reaching a predefined extreme and being 'keyed in'.
On the upper variable band, we enter the overload zone, in Vigía's own jargon, while under the lower variable band, the situation of the indicator is on discharge. It is interesting to observe how, precisely the crossing of these variable bands by Vigía coincides on many occasions with the fastest and most productive phase of the entire price shift, far from concepts that in this phase we should already abandon as outdated and unreliable such as "overbought" or "oversold."
The last two elements remain to be described: a timid blue dashed line and that flickering central area of color called the Astro.
The blue dashed line is named Filter. It is a much more useful element than its smooth and modest journey appears. The Filter has some really fascinating features. Notice, for example, that it is the only line that I keep in visible numerical value, to know exactly when it has a positive and negative value. In periods of laterality, it is a good ally to help us make decisions. It does more things, but that is a prize reserved for whoever pays some attention to it… :-))
We will finish by Astro. Astro is an indicator with its own personality that I designed separately, it is available independently, but I ended up incorporating it into Watcher, which also happens with the Medium Proportional Volume (MPV). Both can be presented or hidden, according to the tastes or needs of the user.
Astro is an adjustable trend indicator, a very useful little tool that will help us identify the critical points where we must consider entries or changes in position. Its default value is 8 cycles, which is a good fit for daily stocks, but I have left open the possibility of modifying its period to be able to take advantage of all its power in intraday temporalities. Once again, I invite you to DO NOT believe me, but to launch the indicator on any asset and evaluate the signals that Astro has offered on its history.
Bar StatisticsThis script calculates and displays some bar statistics.
For the bar length statistics, it takes every length of upper or lower movements and calculates their average (with SD), median, and max. That way, you can see whether there is a bias in the market or not.
Eg.: If for 10 bars, the market moved 2 up, then 1 down, then 3 up, then 2 down, and 2 up, the average up bars length would be at 2.33, while the average for the down length would be at 1.5, showing that upper movements last longer than down movements.
For the range statistics, it takes the true range of each bar and calculates where the close of the bar is in relation to the true low of it. So if the closing of the bar is at 10.0, the low is at 9.0, and the high is at 10.2, the candle closed in the upper third of the bar. This process is calculated for every bar and for both closing prices and open prices. It is very useful to locate biasses, and they can you a better view of the market, since for most of the time a bar will open on an extreme and close on another extreme.
Eg.: Here on the DJI, we can see that for most of the time, a month opens at the lower third (near the low) and closes at the upper third (near the high). We can also see that it is very difficult for a month to open or close on the middle of the candle, showing how important the first and the last day are for determining the trend of the rest of the month.
WEEKLY BTC TRADING SCRYPTWeekly BTC Trading Scrypt(WBTS)
This script is only suggested for cryptocurrencies and weekly buying strategy which is long term.Using it in another markets(e.g forex,stock,e.t.c) is not suggested. The thing makes it different than other strategies we try to understand bull and bear seasons and buying selected crypto currency as using formula if weekly closing value crossover eight weeks simple moving avarage buy,else if selected crypto currency's weekly closing value crossunder eight weeks simple avarage sell. Eight week moving avarage is also uses weekly closing prices but for being able to use this strategy ,trading pair must have more than eight candles in weekly chart otherwise the 8 weeks simple moving avarage value cannot be calculated and script does not work.
This script has a chart called WBTS and it has following features:
Strategy group consist of 3 inputs:
1)Source: Close by default. Our whole strategy uses close values. You can change it but not suggested.
2)Loss Ratio: Because of the cases like the circumstances that manipulates market or high volatility , sometimes graphic show wrong buying signals and this ratio saves user from big money looses(Note : This ratio will always work when selling condition occurs to make user take his profit or prevent him to loss more money because of a wrong positive comes from the indicator.)
3)Reward Ratio : When selling condition happens it will exit user with more profit(if price is already higher than buying point) otherwise it will dimunish loss a bit(if user is below of buying point) or prevents looses(if user is in buying point when selling condition happened.
MA group consist of 2 inputs:
COLOR:Specifies color of the moving avarage.It is equal to #FF3232by hex color code by default.
LINE WIDTH: Specifies linewidth of the moving avarage. It is 2 by default.
GRAPHIC group consist of 2 inputs:
COLOR: It specifies the color of the line which consist of weekly closing prices. It is equal to #6666FF hex color code by default.
LINE WIDTH: Specifies linewidth of the line which consist of weekly closing prices. It is 2 by default.
STRATEGY EXECUTION YEAR: It will show the orders,profits and looses done by script after the input year giving in it.It is 2020 by default.
The last feature is strategy equity,it is not in one of these groups. User should click on settings button on the WBTS indicator than chose Style section and there is a deactivated check box near in the plot section if user activate it, the equity line will show in indicator's graph.
Logic of This Strategy:The story of this strategy began when I studied BTC's price movement from 2020 to today with 8 weeks simple moving avarage (it takes weekly closes as source) and weekly clossing values. I understood that there was a perfect interest between bull and bear market and following conditions:
buy_condition=crossover(weekly_closing_values,8_week_simple_moving_avarage)
sell_condition=crossover(weekly_closing_values,8_week_simple_moving_avarage)
and I tried same thing on the same and bigger time frames("for example i studied how the strategy works from the beginning to today with bitcoin and what is our final equity") with bitcoin and other cryptocurrencies and this made me saw better the relation between giving conditions and general market psychology, however I also witnessed some wrong positives coming by script and used a risk reward ratio to save user and set risk reward ratio 1/3 after a research.
For both conditions(buy_condition and sell_condition),when they are realised,script will alert users and an order will be triggered.
Before finishing the description,from settings/properties/ user can set initial capital,base currency,order size and type,but it is 100000 for initial_amount and 1 contract for order size by default.
In backtesting I used the options like the following example :
Initial capital=1000
Base_curreny=USD
Order size=40 USD
Properties place must set different by every single user according to his or her capital and order size must not be higher than his total money because this script is not the best or a good script for derivatives. It is only written for long term-crypto spot trading and I strongly recommend to users that margin may cause bad results and please do not use it with any margin or any market different than crypto market.
Thank you very much for reading)






















