BEST Strategy Template w/ Custom SL/TP Size - EducationalHello traders
I'm getting this question at least once per week: "how to define a custom exit quantity for my stop loss and a different one for my take profit"
Instead of answering every day the same question in my DMs, I've decided to publish an educational strategy template script using this
Features
- Select to use or not the SL and/or TP
- Define how many pips/USD the SL/TP should be set at from the entry
- Define what quantity percentage you want to close at SL and/or at TP (lines 301 to 320 in the code)
- Classical custom trailing stop where the SL is moved to breakeven once the TP is hit
- Get real-time backtesting stats based on the options you've selected
Update
You might not know it yet but from last week (or maybe the week before), the qty/qty_percent from the strategy.exit function refers now to the initial position size (and not the remaining position size like before)
For example:
strategy.exit("EX1", qty_percent = 50, stop = constant)
strategy.exit("EX2", qty_percent = 20, stop = constant)
What happened before
After "EX1" reaches SL levels, "EX2" exits 20% from the % of the remaining position size.
If the initial position size = 100 contracts
EX1 exits 50 contracts
EX2 exits 20% of 50 contracts = 10 contracts
What's happening now
After "EX1" reaches SL levels, "EX2" exits 20% from the % of the original position size.
If the initial position size = 100 contracts
EX1 exits 50 contracts
EX2 exits 20 (20% of 100 contracts) contracts
I think this is an improvement and I really enjoy this new behavior.
See you in a few days with another post :)
ALL THE BEST
Dave
Concept
[QG] Dynamic Zones Value ChartThe classic value charts indicator has fixed overbought and oversold levels at 8 and 10 levels and the idea of adding dynamic zones around them instead of fixed levels is appealing.
During the strong trending movements, the overbought and oversold levels also dynamically move up or down.
I have used the dynamic zones code by @allanster.
The idea of using dynamic zones on value charts comes from a similar indicator available in mql4.
Money Velocity Population Adjusted (MVPA)MVPA=GDPPC/( M2 /POP). An adaptation to normal Money Velocity, taking into account populations for more volatile plots/different perspective. Major world economy's money supply velocity. Compare how each country's monetary policy has played out and current trajectory in comparison to others. The velocity of money is a measure of the number of times that the average unit of currency is used to purchase goods and services within a given time period. The concept relates the size of economic activity to a given money supply, and the speed of money exchange is one of the variables that determine inflation .
ICT NEW YORK MIDNIGHT OPEN AND 8.30 AM OPENTHIS SCRPT SHOWS NEW YORK MIDNIGHT OPEN PRICE AND 8.30 AM OPEN PRICE (AM SESSION)
you can use this script in forex, indices and your platform timezone should be exchange market time or new york time
FarmGroup RGLineИндикатор основан на линии сопротивления и поддержки. РАБОЧИЕ ТФ 4ч и 6ч , на других СТРОГО НЕ СОВЕТУЕМ РАБОТАТЬ
ATH Levels V3Added the ability to hide the Peak ATH level so that you can zoom into lower levels with more detail. Useful when prices are tanking and you want a better view.
Input Text Area to Array then Reshape Table█ OVERVIEW
Simple method to convert from input.text_area to array using str.split.
Reshape table using switch, not necessary must use matrix.reshape.
Might be useful pine script to replace input.symbol.
█ FEATURES
Table can positioned by any position and font size can be resized.
Reshape table and sorting array if necessary.
█ CREDITS
Credits to TradingView for new update of input.text_area.
Fractal DimensionFractal dimension, as described by BCA-research. When the function reaches the lower boundary, the fractal dimension collapses. This indicates that the market participants, on different time frames, now are all betting on the same direction. The market is now overextended. However, the boundary value is arbitrary and can be modified.
Backtesting- IndicatorFor anyone interested, Here is an example of how to put backtesting results into an Indicator. This calculates the same values as you find in the Summary Screen of the built in Strategy backtester. This will use the same result size as the standard backtester i.e. 5 minute chart grabs roughly 1 month of data, 1 minute chart grabs 1 week of data, etc... I tried to keep this as self-contained as possible so I put most of the code for the results in the bottom of the Indicator. The results stop at the last completed trade signal i.e. a Buy has a Sell to it. This is the same indicator I posted earlier with the PCT Trailing StopLoss so you will see that code in here as well. As said in my previous posting, the indicator is just a simple EMA crossover to give it something to do and I would not recommend using this indicator on its own, but instead copy the code to your own indicator if you find it useful. I also left the code in so that you can switch back to a Strategy if you want to verify the results.
Additional Notes:
- The results are within an acceptable margin of error due to the fact that the Indicator is having to calculate based on when the Buy and Sell Signal occur as opposed to when actual trades occur like in the Strategy Backtester
- I was trying to find a way to set the number of Buy Signals to use i.e. show me the results from the past 100 trades but couldn't sort out the logic. I am open to suggestions. Also keep in mind I am not a coder by profession so if you have any ideas on that front, please explain it to me as though I am a 5 year old child and provide code examples if possible :)
- I included the Strategy results in the Screen Shots so that you can see where the results line up.
Additional Additional Note:
This is not financial advice. Use at your own risk.
Study forloop Star Diamond'Study forloop' pinescript Program to print star diamond
The Program Logic
I've taken the previous script and added a footer to it. instantly transformed into a diamond shape.
Flat Detect By Bollinger BandsThis simple script indicate the potential flat market zones, calculated based on the Bollinger Bands width.
It's showing the Bollinger Bands in red when the market is detected as flat.
You can adjust the Width Threshold with precision on the inputs settings.
Enjoy :)
Error Message -- DemoThis script is proof of concept to display an “error message” to provide user feedback when valid, but non-logical variables are input by the end user. In this example, the user enters a lower limit that is greater than the upper limit. The Pinescript user input box allows input types and min/max values, but it does not allow input conditions like (Upper > Lower) for each variable. This script evaluates the user input and determines if the variables are logical. If not, it will print an error box using the new Pinescript table function.
This is a demo only – there are no signals, strategies, or alerts. Hopefully, some pinescripters will find this idea useful and expand on the concept.
User inputs an Upper Limit that is lower than the Lower Limit – error message displayed.
User inputs logical Upper and Lower Limits (Upper Limit is greater than Lower Limit) – normal plots.
Examples of Rolling Average Using Automated AnchoringIn this study, I present a method to expose NaN values to development environment.
This exposure allows NaN values to be used by methods in scripts.
I also show how to use values, even NaN values, as anchors from which statistics can be computed from.
I demonstrate how to do this with constants and variables in methods for computing the cumulative/rolling average of a series.
I also show how to calculate the cumulative/rolling average from the start of a ticker series using the aforementioned methods.
Each method has a description on how some of their parts work as well as their constraints.
Method #1 - Can only be used for computing the rolling average on the ticker series.
Method #2 - The simple moving average from the Pine Script reference.
- Can be used to calculate the rolling average of the ticker series and number values of a series.
- This method seems to cause an error when there are many bars in the series.
Method #3 - The most versatile method due to the use of computing the rolling average using an array.
- Timeout will occur when computing the rolling average of an entire ticker series which is long.
- Timeout has not occurred when computing a rolling average of a series from NaN or non-NaN anchor points even when the series is long.
This is an attempt to get around the constraints of the built-in sma(source, length) function in which length cannot be dynamically adjusted.
Other Pine Script functions have that constraint which we can get around by defining our own functions.
Leledc levels (IS) LeveLeledc - Exhaustion levels (InSilico)
Method for zero confirmation support/resistance level detection using Leledc Exhaustion Bars
Study is extension/mod of glaz script ,its implementing simple but unorthodox use-case for "Leledc Exhaustion Bars"
More information on core function in source scripts page ->
P.s Written quickly and spontaneously