High/Low Location Frequency [LuxAlgo]The High/Low Location Frequency tool provides users with probabilities of tops and bottoms at user-defined periods, along with advanced filters that offer deep and objective market information about the likelihood of a top or bottom in the market.
🔶 USAGE
There are four different time periods that traders can select for analysis of probabilities:
HOUR OF DAY: Probability of occurrence of top and bottom prices for each hour of the day
DAY OF WEEK: Probability of occurrence of top and bottom prices for each day of the week
DAY OF MONTH: Probability of occurrence of top and bottom prices for each day of the month
MONTH OF YEAR: Probability of occurrence of top and bottom prices for each month
The data is displayed as a dashboard, which users can position according to their preferences. The dashboard includes useful information in the header, such as the number of periods and the date from which the data is gathered. Additionally, users can enable active filters to customize their view. The probabilities are displayed in one, two, or three columns, depending on the number of elements.
🔹 Advanced Filters
Advanced Filters allow traders to exclude specific data from the results. They can choose to use none or all filters simultaneously, inputting a list of numbers separated by spaces or commas. However, it is not possible to use both separators on the same filter.
The tool is equipped with five advanced filters:
HOURS OF DAY: The permitted range is from 0 to 23.
DAYS OF WEEK: The permitted range is from 1 to 7.
DAYS OF MONTH: The permitted range is from 1 to 31.
MONTHS: The permitted range is from 1 to 12.
YEARS: The permitted range is from 1000 to 2999.
It should be noted that the DAYS OF WEEK advanced filter has been designed for use with tickers that trade every day, such as those trading in the crypto market. In such cases, the numbers displayed will range from 1 (Sunday) to 7 (Saturday). Conversely, for tickers that do not trade over the weekend, the numbers will range from 1 (Monday) to 5 (Friday).
To illustrate the application of this filter, we will exclude results for Mondays and Tuesdays, the first five days of each month, January and February, and the years 2020, 2021, and 2022. Let us review the results:
DAYS OF WEEK: `2,3` or `2 3` (for crypto) or `1,2` or `1 2` (for the rest)
DAYS OF MONTH: `1,2,3,4,5` or `1 2 3 4 5`
MONTHS: `1,2` or `1 2`
YEARS: `2020,2021,2022` or `2020 2021 2022`
🔹 High Probability Lines
The tool enables traders to identify the next period with the highest probability of a top (red) and/or bottom (green) on the chart, marked with two horizontal lines indicating the location of these periods.
🔹 Top/Bottom Labels and Periods Highlight
The tool is capable of indicating on the chart the upper and lower limits of each selected period, as well as the commencement of each new period, thus providing traders with a convenient reference point.
🔶 SETTINGS
Period: Select how many bars (hours, days, or months) will be used to gather data from, max value as default.
Execution Window: Select how many bars (hours, days, or months) will be used to gather data from
🔹 Advanced Filters
Hours of day: Filter which hours of the day are excluded from the data, it accepts a list of hours from 0 to 23 separated by commas or spaces, users can not mix commas or spaces as a separator, must choose one
Days of week: Filter which days of the week are excluded from the data, it accepts a list of days from 1 to 5 for tickers not trading weekends, or from 1 to 7 for tickers trading all week, users can choose between commas or spaces as a separator, but can not mix them on the same filter.
Days of month: Filter which days of the month are excluded from the data, it accepts a list of days from 1 to 31, users can choose between commas or spaces as separator, but can not mix them on the same filter.
Months: Filter months to exclude from data. Accepts months from 1 to 12. Choose one separator: comma or space.
Years: Filter years to exclude from data. Accepts years from 1000 to 2999. Choose one separator: comma or space.
🔹 Dashboard
Dashboard Location: Select both the vertical and horizontal parameters for the desired location of the dashboard.
Dashboard Size: Select size for dashboard.
🔹 Style
High Probability Top Line: Enable/disable `High Probability Top` vertical line and choose color
High Probability Bottom Line: Enable/disable `High Probability Bottom` vertical line and choose color
Top Label: Enable/disable period top labels, choose color and size.
Bottom Label: Enable/disable period bottom labels, choose color and size.
Highlight Period Changes: Enable/disable vertical highlight at start of period
Cycles
MathsTrade Nifty Option StrikeOption Type and Strike Price Selection:
1.Calls:
In-the-money (ITM): If the strike price is below the current market price. Provides intrinsic value and is less risky.
Out-of-the-money (OTM): If the strike price is above the current market price. Provides a leverage play with lower premiums.
At-the-money (ATM): Strike price is equal to the underlying asset’s market price, offering a balance of cost and potential reward.
Puts:
In-the-money (ITM): The strike price is above the current market price. Higher premiums but higher chances of profitability.
Out-of-the-money (OTM): The strike price is below the current market price, cheaper with greater risk but also higher reward potential if the market moves significantly.
2. Consider the Bid-Ask Spread:
Narrower bid-ask spreads are generally a sign of better liquidity, making it easier to enter and exit trades at favorable prices. Avoid options with wide bid-ask spreads as they can lead to higher transaction costs and slippage.
3. Liquidity and Open Interest:
Look for Liquidity: Higher open interest and volume generally mean that the option has better liquidity, ensuring you can enter or exit trades more efficiently.
Strike Selection: Ensure there is adequate open interest at the selected strike price. Too little open interest can make it harder to exit a trade.
Conclusion:
Selecting the right strike price depends on your market outlook, time frame, risk tolerance, and the volatility of the underlying asset. A careful evaluation of these factors will help you choose an optimal strike price and increase the probability of success in your options trades. Always make sure to balance the risk/reward profile of the chosen strike with the capital you're willing to invest.
Heikin Ashi Reversal Strategy for Gold with SL/TP//@version=5
indicator("Heikin Ashi Reversal Strategy for Gold with SL/TP", overlay=true)
// Heikin Ashi Calculations (without `request.security`, calculated on the current chart's timeframe)
haClose = (open + high + low + close) / 4
var float haOpen = na
haOpen := na(haOpen ) ? (open + close) / 2 : (haOpen + haClose ) / 2
haHigh = math.max(high, math.max(haOpen, haClose))
haLow = math.min(low, math.min(haOpen, haClose))
// Define Heikin Ashi trend conditions
bullish = ta.crossover(haClose, haOpen) // Bullish signal when haClose crosses above haOpen
bearish = ta.crossunder(haClose, haOpen) // Bearish signal when haClose crosses below haOpen
// Input fields for Take Profit and Stop Loss levels (adjustable for Gold)
tpLevel = input.float(0.5, title="Take Profit (%)") // Example: 0.5% TP
slLevel = input.float(0.3, title="Stop Loss (%)") // Example: 0.3% SL
// Entry price, Take Profit, and Stop Loss calculations
var float entryPrice = na
if (bullish)
entryPrice := close
if (bearish)
entryPrice := close
takeProfit = entryPrice * (1 + tpLevel / 100) // TP based on percentage above entry
stopLoss = entryPrice * (1 - slLevel / 100) // SL based on percentage below entry
// Plot Buy and Sell signals with labels for visibility
plotshape(series=bullish, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY")
plotshape(series=bearish, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")
// Plot TP and SL levels
plot(takeProfit, color=color.green, style=plot.style_line, linewidth=1, title="Take Profit")
plot(stopLoss, color=color.red, style=plot.style_line, linewidth=1, title="Stop Loss")
// Optional: Debugging Heikin Ashi values (can be removed if not needed)
plot(haOpen, color=color.blue, title="Heikin Ashi Open")
plot(haClose, color=color.purple, title="Heikin Ashi Close")
Stock Boosters//@version=5
const bool DEBUG = false
const int maxDistanceToLastBar = 5000
const int labelCooldown = 8
const int KDELimit = 300
indicator("Stock Booster", overlay = true, max_labels_count = 500)
rsiLengthInput = input.int(14, minval = 1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
highPivotLen = input.int(21, "High Pivot Length", minval = 1, group = "Pivots", display = display.none)
lowPivotLen = input.int(21, "Low Pivot Length", minval = 1, group = "Pivots", display = display.none)
realPivotLabels = DEBUG ? input.bool(false, " Real Pivot Labels", group = "Pivots") : false
kdePivotLabels = DEBUG ? input.bool(false, " KDE Pivot Labels", group = "Pivots") : false
activationThresholdStr = input.string("Medium", "Activation Threshold", options = , group = "KDE", tooltip = "Determines the amount of arrows shown. Higher options will result in more arrows being rendered.")
string KDEKernel = input.string("Gaussian", "Kernel", options= , group = "KDE", tooltip = "The kernel function for KDE calculation. Gaussian is a commonly used kernel and is based on normal distribution.")
float KDEBandwidth = input.float(2.71828, "Bandwidth", group = "KDE", tooltip = "This setting sets the smoothness of the KDE function output.")
int KDEStep = input.int(100, "Nº Bins", minval = 1, group = "KDE", tooltip = "The number of elements the KDE Probability array will have. Higher settings will result in greater precision.")
activationThreshold = DEBUG ? input.float(0.25, " Activation Threshold", group = "KDE") : 0.25
if not DEBUG
activationThreshold := (activationThresholdStr == "High" ? 0.4 : activationThresholdStr == "Medium" ? 0.25 : 0.15)
probMode = DEBUG ? input.string("Sum", ' Probability Mode', options = , group = "KDE") : "Sum"
minPadding = DEBUG ? input.bool(false, ' KDE Min Padding', group = "KDE") : false
tableEnabled = input.bool(true, "Dashboard", group = "Dashboard", display = display.none)
tableLocation = input.string("Top Right", "Position", options = , group = "Dashboard", display = display.none)
screenerColor = input.color(#1B1F2B, 'Background', group = 'Dashboard', display = display.none)
frameColor = input.color(color.rgb(255, 255, 255), 'Frame', group = 'Dashboard', display = display.none)
borderColor = input.color(color.rgb(255, 255, 255), 'Border', group = 'Dashboard', display = display.none)
textColorDB = input.color(color.white, 'Text', group = 'Dashboard', display = display.none)
fillBackgrounds = input.bool(true, "Fill Backgrounds", group = "Dashboard", display = display.none)
bearishColor = input.color(#f23646, "High Pivots", group = "Style", inline = "col", display = display.none)
neutralColor = input.color(color.gray, "Neutral", group = "Style", inline = "col", display = display.none)
bullishColor = input.color(#089981, "Low Pivots", group = "Style", inline = "col", display = display.none)
textColor = input.color(color.white, 'Text', group = 'Style', inline = "col", display = display.none)
RSILabelsEnabled = input.bool(true, "RSI Labels", group = "Style")
KDELabelsEnabled = input.bool(true, "KDE Labels", group = "Style")
rsi = ta.rsi(rsiSourceInput, rsiLengthInput)
getPosition (positionText) =>
if positionText == "Top Right"
position.top_right
else if positionText == "Top Center"
position.top_center
else if positionText == "Right Center"
position.middle_right
else if positionText == "Left Center"
position.middle_left
else if positionText == "Bottom Center"
position.bottom_center
else if positionText == "Middle Center"
position.middle_center
//#region KDE
gaussian (float distance, float bandwidth = 1.0) => 1.0 / math.sqrt(2.0 * math.pi) * math.pow(math.e, -0.5 * math.pow(distance / bandwidth, 2.0))
uniform (float distance, float bandwidth = 1.0) => (math.abs(distance) > bandwidth) ? 0.0 : 0.5
sigmoid (float distance, float bandwidth = 1.0) => 2.0 / math.pi * (1.0 / (math.pow(math.e, (distance / bandwidth)) + math.pow(math.e, -(distance / bandwidth))))
kde (array arr, string kernel, float bandwidth, int steps) =>
arrSize = arr.size()
arrRange = arr.range()
arrMin = arr.min() - (minPadding ? (arrRange / 2.0) : 0)
stepCount = arrRange / steps
densityRange = array.new(steps * 2)
for i = 0 to (steps * 2) - 1
densityRange.set(i, arrMin + i * stepCount)
xArr = array.new()
yArr = array.new()
for i = 0 to densityRange.size() - 1
float temp = 0
for j = 0 to arr.size() - 1
switch KDEKernel
"Gaussian" => temp += gaussian(densityRange.get(i) - arr.get(j), 1.0 / bandwidth)
"Uniform" => temp += uniform(densityRange.get(i) - arr.get(j), 1.0 / bandwidth)
"Sigmoid" => temp += sigmoid(densityRange.get(i) - arr.get(j), 1.0 / bandwidth)
xArr.push(densityRange.get(i))
yArr.push(1.0 / arrSize * temp)
//#endregion
//#region Pivots
prefixSum (array arr, int l, int r) =>
arr.get(r) - (l == 0 ? 0 : arr.get(l - 1))
float MidKDEHigh = na
float MidKDELow = na
var array KDEHighX = na
var array KDEHighY = na
var array KDEHighYSum = array.new()
var array KDELowX = na
var array KDELowY = na
var array KDELowYSum = array.new()
highPivot = ta.pivothigh(highPivotLen, highPivotLen)
lowPivot = ta.pivotlow(lowPivotLen, lowPivotLen)
var highPivotRSIs = array.new()
var lowPivotRSIs = array.new()
if not na(highPivot)
if highPivotRSIs.size() > KDELimit
highPivotRSIs.remove(0)
highPivotRSIs.push(rsi )
= kde(highPivotRSIs, KDEKernel, KDEBandwidth, KDEStep)
KDEHighX := KDEHighX1
KDEHighY := KDEHighY1
KDEHighYSum.clear()
temp = 0.0
for i = 0 to KDEHighY.size() - 1
temp += KDEHighY.get(i)
KDEHighYSum.push(temp)
MidKDEHigh := array.get(KDEHighX, array.indexof(KDEHighY, array.max(KDEHighY)))
if not na(lowPivot)
if lowPivotRSIs.size() > KDELimit
lowPivotRSIs.remove(0)
lowPivotRSIs.push(rsi )
= kde(lowPivotRSIs, KDEKernel, KDEBandwidth, KDEStep)
KDELowX := KDELowX1
KDELowY := KDELowY1
KDELowYSum.clear()
temp = 0.0
for i = 0 to KDELowY.size() - 1
temp += KDELowY.get(i)
KDELowYSum.push(temp)
MidKDELow := array.get(KDELowX, array.indexof(KDELowY, array.max(KDELowY)))
//#endregion
//#region KDE Optimization
f_lin_interpolate(float x0, float x1, float y0, float y1, float x) =>
y0 + (x - x0) * (y1 - y0) / (x1 - x0)
float lowProb = na
float maxLowProb = na
float highProb = na
float maxHighProb = na
if last_bar_index - maxDistanceToLastBar < bar_index
if highPivotRSIs.size() > 0
highXIndexL = array.binary_search_leftmost(KDEHighX, rsi)
highXIndexR = math.min(array.binary_search_rightmost(KDEHighX, rsi), KDEHighX.size() - 1)
nearestIndex = (math.abs(rsi - KDEHighX.get(highXIndexL)) < math.abs(rsi - KDEHighX.get(highXIndexR))) ? highXIndexL : highXIndexR
if probMode == "Nearest"
highProb := KDEHighY.get(nearestIndex)
maxHighProb := array.max(KDEHighY)
else if probMode == "Sum"
highProb := prefixSum(KDEHighYSum, 0, nearestIndex)
if lowPivotRSIs.size() > 0
lowXIndexL = array.binary_search_leftmost(KDELowX, rsi)
lowXIndexR = math.min(array.binary_search_rightmost(KDELowX, rsi), KDELowX.size() - 1)
nearestIndex = (math.abs(rsi - KDELowX.get(lowXIndexL)) < math.abs(rsi - KDELowX.get(lowXIndexR))) ? lowXIndexL : lowXIndexR
if probMode == "Nearest"
lowProb := KDELowY.get(nearestIndex)
maxLowProb := array.max(KDELowY)
else if probMode == "Sum"
lowProb := prefixSum(KDELowYSum, nearestIndex, KDELowYSum.size() - 1)
if DEBUG and barstate.islastconfirmedhistory
for i = 0 to KDELowX.size() - 1
curX = KDELowX.get(i)
curY = KDELowY.get(i)
log.info(str.tostring(curX) + " = " + str.tostring(curY))
log.info("High Y Sum " + str.tostring(KDEHighY.sum()))
diffToHighKDE = math.abs(rsi - MidKDEHigh)
diffToLowKDE = math.abs(rsi - MidKDELow)
//#endregion
//#region Draw Pivots
color curColor = na
if (not na(KDELowY)) and (not na(KDEHighY))
if probMode == "Nearest"
if math.abs(lowProb - maxLowProb) < activationThreshold / 50.0
curColor := bullishColor
if math.abs(highProb - maxHighProb) < activationThreshold / 50.0
curColor := bearishColor
else if probMode == "Sum"
if lowProb > KDELowY.sum() * (1.0 - activationThreshold)
curColor := bullishColor
else if highProb > KDEHighY.sum() * (1.0 - activationThreshold)
curColor := bearishColor
//barcolor(curColor)
atr = ta.atr(50)
plotarrow(curColor == bullishColor and barstate.isconfirmed ? 1 : na, "Bullish Arrows", color.new(bullishColor, 70), color.new(bullishColor, 70), minheight = 20, maxheight = 20)
plotarrow(curColor == bearishColor and barstate.isconfirmed ? -1 : na, "Bearish Arrows", color.new(bearishColor, 70), color.new(bearishColor, 70), minheight = 20, maxheight = 20)
plotarrow((na(curColor) and curColor == bullishColor and barstate.isconfirmed) ? 1 : na, "Possible Bullish Pivot", bullishColor, bullishColor, minheight = 20, maxheight = 20)
plotarrow((na(curColor) and curColor == bearishColor and barstate.isconfirmed) ? -1 : na, "Possible Bearish Pivot", bearishColor, bearishColor, minheight = 20, maxheight = 20)
alertcondition(na(curColor) and curColor == bullishColor and barstate.isconfirmed, "Possible Bullish Pivot")
alertcondition(na(curColor) and curColor == bearishColor and barstate.isconfirmed, "Possible Bearish Pivot")
if KDELabelsEnabled or RSILabelsEnabled
var lastBullishLabel = 0
if (na(curColor) and curColor == bullishColor and barstate.isconfirmed) and (bar_index - lastBullishLabel) > labelCooldown
lastBullishLabel := bar_index
txt = ""
if RSILabelsEnabled and KDELabelsEnabled
txt := "RSI | " + str.tostring(rsi, "#") + " | " + str.tostring(lowProb * 100, "#.##") + "%"
else if RSILabelsEnabled
txt := "RSI | " + str.tostring(rsi, "#")
else
txt := str.tostring(rsi, "#") + "%"
label.new(bar_index, low, txt, yloc = yloc.belowbar, color = na, style = label.style_label_up, textcolor = textColor, force_overlay = true)
var lastBearishLabel = 0
if (na(curColor) and curColor == bearishColor and barstate.isconfirmed) and (bar_index - lastBearishLabel) > labelCooldown
lastBearishLabel := bar_index
txt = ""
if RSILabelsEnabled and KDELabelsEnabled
txt := "RSI | " + str.tostring(rsi, "#") + " | " + str.tostring(highProb * 100, "#.##") + "%"
else if RSILabelsEnabled
txt := "RSI | " + str.tostring(rsi, "#")
else
txt := str.tostring(rsi, "#") + "%"
label.new(bar_index, low, txt, yloc = yloc.abovebar, color = na, style = label.style_label_down, textcolor = textColor, force_overlay = true)
if kdePivotLabels
txt = str.tostring(rsi, "#.##") + " HP -> " + str.tostring(highProb, "#.##") + " LP -> " + str.tostring(lowProb, "#.##") + " MHP -> " + str.tostring(maxHighProb, "#.##") + " MLP -> " + str.tostring(maxLowProb, "#.##")
if math.abs(lowProb - maxLowProb) < activationThreshold
label.new(bar_index, high, txt, yloc = yloc.belowbar, color = textColor, style = label.style_label_up, textcolor = color.black, force_overlay = true)
if math.abs(highProb - maxHighProb) < activationThreshold
label.new(bar_index, high, txt, yloc = yloc.abovebar, color = textColor, style = label.style_label_down, textcolor = color.black, force_overlay = true)
if realPivotLabels
if not na(highPivot)
txt = str.tostring(rsi , "#.##") + " HP -> " + str.tostring(highProb , "#.##") + " LP -> " + str.tostring(lowProb , "#.##") + " MHP -> " + str.tostring(maxHighProb , "#.##") + " MLP -> " + str.tostring(maxLowProb , "#.##")
label.new(bar_index - highPivotLen, high, txt, yloc = yloc.abovebar, color = textColor, style = label.style_label_down, textcolor = color.black, force_overlay = true)
if not na(lowPivot)
txt = str.tostring(rsi , "#.##") + " HP -> " + str.tostring(highProb , "#.##") + " LP -> " + str.tostring(lowProb , "#.##") + " MHP -> " + str.tostring(maxHighProb , "#.##") + " MLP -> " + str.tostring(maxLowProb , "#.##")
label.new(bar_index - lowPivotLen, high, txt, yloc = yloc.belowbar, color = textColor, style = label.style_label_up, textcolor = color.black, force_overlay = true)
//#endregion
if tableEnabled
var table realtimeTable = table.new(getPosition(tableLocation), 2, 10, bgcolor = screenerColor, frame_width = 2, frame_color = frameColor, border_width = 1, border_color = borderColor)
// Header
table.merge_cells(realtimeTable, 0, 0, 1, 0)
table.cell(realtimeTable, 0, 0, "KDE Optimized RSI", text_color = textColorDB, bgcolor = screenerColor)
// RSI
table.cell(realtimeTable, 0, 1, "RSI", text_color = textColorDB, bgcolor = screenerColor)
table.cell(realtimeTable, 1, 1, str.tostring(rsi, "#"), text_color = textColorDB, bgcolor = screenerColor)
// KDE
table.cell(realtimeTable, 0, 2, (lowProb > highProb) ? "Bullish KDE" : "Bearish KDE", text_color = (lowProb > highProb) ? bullishColor : bearishColor, bgcolor = screenerColor)
table.cell(realtimeTable, 1, 2, str.tostring(nz(math.max(highProb, lowProb), 0) * 100, "#.##") + "%", text_color = textColorDB, bgcolor = screenerColor)
Range Box (Close Prices)Wskaznik tworzy range box korzystając z cen zamknięcia ignorując tzw wick, pomocne dla osób grających na wyłamanie z zasięgu w danym czasie
ATT Model with Buy/Sell SignalsIndicator Summary
This indicator is based on the ATT (Arithmetic Time Theory) model, using specific turning points derived from the ATT sequence (3, 11, 17, 29, 41, 47, 53, 59) to identify potential market reversals. It also integrates the RSI (Relative Strength Index) to confirm overbought and oversold conditions, triggering buy and sell signals when conditions align with the ATT sequence and RSI level.
Turning Points: Detected based on the ATT sequence applied to bar count. This suggests high-probability areas where the market could turn.
RSI Filter: Adds strength to the signals by ensuring buy signals occur when RSI is oversold (<30) and sell signals when RSI is overbought (>70).
Max Signals Per Session: Limits signals to two per session to reduce over-trading.
Entry Criteria
Buy Signal: Enter a buy trade if:
The indicator displays a green "BUY" marker.
RSI is below the oversold level (default <30), suggesting a potential upward reversal.
Sell Signal: Enter a sell trade if:
The indicator displays a red "SELL" marker.
RSI is above the overbought level (default >70), indicating a potential downward reversal.
Exit Criteria
Take Profit (TP):
Define TP as a fixed percentage or point value based on the asset's volatility. For example, set TP at 1.5-2x the risk, or a predefined point target (like 50-100 points).
Alternatively, exit the position when price approaches a key support/resistance level or the next significant swing high/low.
Stop Loss (SL):
Place the SL below the recent low (for buys) or above the recent high (for sells).
Set a fixed SL in points or percentage based on the asset’s average movement range, like an ATR-based stop, or limit it to a specific risk amount per trade (1-2% of account).
Trailing into Profit
Use a trailing strategy to lock in profits and let winning trades run further. Two main options:
ATR Trailing Stop:
Set the trailing stop based on the ATR (Average True Range), adjusting every time a new candle closes. This can help in volatile markets by keeping the stop at a consistent distance based on recent price movement.
Break-Even and Partial Profits:
When the price moves in your favor by a set amount (e.g., 1:1 risk/reward), move SL to the entry (break-even).
Take partial profit at intermediate levels (e.g., 50% at 1:1 RR) and trail the remainder.
Risk Management for Prop Firm Evaluation
Prop firms often have strict rules on daily loss limits, max drawdowns, and minimum profit targets. Here’s how to align your strategy with these:
Limit Risk per Trade:
Keep risk per trade to a conservative level (e.g., 1% or lower of your account balance). This allows for more room in case of a drawdown and aligns with most prop firm requirements.
Daily Loss Limits:
Set a daily stop-loss that ensures you don’t exceed the firm’s rules. For example, if the daily limit is 5%, stop trading once you reach a 3-4% drawdown.
Avoid Over-Trading:
Stick to the max signals per session rule (one or two trades). Taking only high-probability setups reduces emotional and reactive trades, preserving capital.
Stick to a Profit Target:
Aim to meet the evaluation’s profit goal efficiently but avoid risky or oversized trades to reach it faster.
Avoid Major Economic Events:
News events can disrupt technical setups. Avoid trading around significant releases (like FOMC or NFP) to reduce the chance of sudden losses due to high volatility.
Summary
Using this strategy with discipline, a structured entry/exit approach, and tight risk management can maximize your chances of passing a prop firm evaluation. The ATT model’s turning points, combined with the RSI, provide an edge by highlighting reversal zones, while limiting trades to 1-2 per session helps maintain controlled risk.
Enhanced MY SCRIPT
Trend Confirmation (is_uptrend and is_downtrend):
The script now checks that all short-term MAs are consistently above (for an uptrend) or below (for a downtrend) the long-term MAs, strengthening the trend confirmation before generating signals.
ATR Volatility Filter:
The ATR filter ensures that buy/sell signals are only triggered when volatility is above a certain threshold (adjusted by atr_threshold). This filter helps avoid signals in low-volatility periods.
Signal Refined with GMMA Confluence:
The crossover and crossunder of the short and long MAs are combined with GMMA confluence (all short-term MAs above or below long-term MAs) for more accurate buy/sell points.
New Day [UkutaLabs]█ OVERVIEW
The New Day indicator is a useful trading tool that automatically identifies the first bar of each trading day for the user’s convenience.
█ USAGE
At the beginning of each trading day, this indicator will automatically create a line that will display the first bar of the trading day. This is a useful way to visualize where each day begins and ends.
When this indicator is used on a stock or futures chart, the first bar of the session will be identified as the first bar of the trading day. If this indicator is used on crypto or forex charts, which are tradable for 24 hours, the indicator will identify the bar closest to midnight as the first bar of the trading day.
█ SETTINGS
Configuration
• Line Color: This setting allows the user to determine the color of the New Day line.
• Line Width: This setting allows the user to determine the width of the New Day line.
• Line Style: This setting allows the user to determine the style of the New Day line.
Kushy - EMA (9, 21, 50, 100, 200)Tên chỉ báo: Custom EMA (9, 21, 50, 100, 200)
Mô tả: Đây là chỉ báo EMA tùy chỉnh được thiết kế để giúp người dùng theo dõi xu hướng thị trường bằng cách sử dụng 5 đường EMA phổ biến với các giá trị 9, 21, 50, 100 và 200. Mỗi đường EMA được gán màu sắc riêng để dễ dàng quan sát:
EMA 9: Màu tím - thích hợp cho việc theo dõi biến động ngắn hạn.
EMA 21: Màu cam - giúp xác định xu hướng ngắn hạn và hỗ trợ giao dịch ngắn.
EMA 50: Màu xanh dương - cung cấp tín hiệu trung hạn, thường được sử dụng trong chiến lược swing trading.
EMA 100: Màu xanh lá - cho thấy xu hướng tổng quát trung hạn.
EMA 200: Màu đỏ - biểu thị xu hướng dài hạn, rất hữu ích để đánh giá xu hướng lớn trong thị trường.
Chỉ báo này giúp người dùng dễ dàng xác định xu hướng và tìm điểm vào/ra tiềm năng khi các đường EMA giao nhau hoặc khi giá cắt qua các đường EMA chính. Phù hợp cho cả day trading, swing trading và các chiến lược đầu tư dài hạn.
Hướng dẫn sử dụng:
Các đường EMA ngắn hạn (EMA 9, EMA 21) giúp xác định các tín hiệu giao dịch nhanh, trong khi các đường dài hạn (EMA 50, EMA 100, EMA 200) cung cấp xu hướng tổng thể của thị trường.
Quan sát sự giao nhau của các đường EMA để tìm điểm vào/ra giao dịch.
Khi giá nằm trên các đường EMA dài hạn, đó là tín hiệu của xu hướng tăng; ngược lại, khi giá nằm dưới các đường này, có thể là xu hướng giảm.
Dinamik EMA Periyotları ile Buy/Sell Sinyalifiyat 50 emanın üstündeyken 10 ema 30 emayı 50 emanın üstünde yukarı kesince buy sinyal etiketi,fiyat 50 emanın altındayken 10 ema 30 emayı 50 emanın altında aşağı doğru kesince sell sinyal etiketi var.buy ve sell sinyalleri için alarm kurulabilir.
Custom Multi-line StrategyRSI: RSI를 계산하고 과매수 및 과매도 구간을 표시합니다.
이동 평균선: 5일과 20일의 단순 이동 평균선을 차트에 표시하여 트렌드와 교차 지점을 파악할 수 있게 합니다.ㅁ
TSF 근사: ta.linreg 함수를 사용하여 TSF를 근사하고 이를 차트에 표시합니다.
매수/매도 신호: 짧은 이동 평균선과 긴 이동 평균선의 교차를 기반으로 매수 및 매도 신호를 생성합니다.
ATR Daily Fibsblah abababbabaafbjashfjsdhgdsjghsdlghdslkghdslkghsdlkghdsklghsdlkgsdhlkghlgkdshglkdshgsdlkghsdklghsdklghsdklghsdklghskgsdkl
Confirmed market structure buy/sell indicatorOverview
The Swing Point Breakout Indicator with Multi-Timeframe Dashboard is a TradingView tool designed to identify potential buy and sell signals based on swing point breakouts on the primary chart's timeframe while simultaneously providing a snapshot of the market structure across multiple higher timeframes. This dual approach helps traders make informed decisions by aligning short-term signals with broader market trends.
Key Features
Swing Point Breakout Detection
Swing Highs and Lows: Identifies significant peaks and troughs based on a user-defined lookback period.
Breakout Signals:
Bullish Breakout (Buy Signal): Triggered when the price closes above the latest swing high.
Bearish Breakout (Sell Signal): Triggered when the price closes below the latest swing low.
Visual Indicators: Highlights breakout bars with colors (lime for bullish, red for bearish) and plots buy/sell markers on the chart.
Multi-Timeframe Dashboard
Timeframes Monitored: 1m, 5m, 15m, 1h, 4h, 1D, and 1W.
Market Structure Status:
Bullish: Indicates upward market structure.
Bearish: Indicates downward market structure.
Neutral: No clear trend.
Visual Table: Displays each timeframe with its current status, color-coded for quick reference (green for bullish, red for bearish, gray for neutral).
Operational Workflow
Initialization:
Sets up a dashboard table on the chart's top-right corner with headers "Timeframe" and "Status".
Swing Point Detection:
Continuously scans the main timeframe for swing highs and lows using the specified lookback period.
Updates the latest swing high and low levels.
Signal Generation:
Detects when the price breaks above the last swing high (bullish) or below the last swing low (bearish).
Activates potential buy/sell setups and confirms signals based on subsequent price movements.
Dashboard Update:
For each defined higher timeframe, assesses the market structure by checking for breakouts of swing points.
Updates the dashboard with the current status for each timeframe, aiding in trend confirmation.
Visualization:
Colors the bars where breakouts occur.
Plots buy and sell signals directly on the chart for easy identification.
US Party Rule Indicator**Here's a description you can use for the indicator:**
**US Party Rule Indicator**
This indicator visually represents the political party in power in the United States over a specified period. It overlays a colored 200-day Exponential Moving Average (EMA) on the chart. The color of the EMA changes to reflect the ruling party, providing a visual representation of political influence on market trends.
**Key Features:**
- **Dynamic Color-Coded EMA:** The 200-EMA changes color to indicate the party in power (Red for Republican, Blue for Democrat).
- **Clear Visual Representation:** The colored EMA provides an easy-to-understand visual cue for identifying periods of different political parties.
- **Historical Context:** By analyzing the historical data, you can gain insights into potential correlations between party rule and market trends.
**How to Use:**
1. **Add the Indicator:** Add the "US Party Rule Indicator" to your chart.
2. **Interpret the Color:** The color of the 200-EMA indicates the ruling party at that time.
3. **Analyze Market Trends:** Use the indicator to identify potential correlations between political events and market movements.
**Note:** This indicator is for informational purposes only and should not be used as the sole basis for investment decisions. Always conduct thorough research and consider consulting with a financial advisor.
Nami Bands with Future Projection [FXSMARTLAB]The Nami Bands ( Inspired by "Nami", meaning "wave" in Japanese) are two dynamic bands around price data: an upper band and a lower band. These bands are calculated based on an Asymmetric Linear Weighted Moving Average of price and a similarly asymmetric weighted standard deviation. This weighting method emphasizes recent data without overreacting to short-term price changes, thus smoothing the bands in line with prevailing market conditions.
Advantages and Benefits of Using the Indicator
* Volatility Analysis: The bands expand and contract with market volatility, helping traders assess periods of high and low volatility. Narrow bands indicate low volatility and potential consolidation, while wide bands suggest increased volatility and potential price movement.
* Dynamic Support and Resistance Levels: By adapting to recent trends, the bands serve as dynamic support (lower band) and resistance (upper band) levels, which traders can use for entry and exit signals.
* Overbought and Oversold Conditions: When prices reach or cross the bands’ outer limits, it may signal overbought (upper band) or oversold (lower band) conditions, suggesting possible reversals or trend slowdowns.
* Trend Confirmation and Continuation: The slope of the central moving average confirms trend direction. An upward slope generally indicates a bullish trend, while a downward slope suggests a bearish trend.
* Anticipating Breakouts and Reversals: The projected bands help identify where price movements may head, allowing traders to anticipate potential breakouts or reversals based on projected support and resistance.
Indicator Parameters
Source (src): The price data used for calculations, by default set to the average of high, low, and close (hlc3).
Length: The period over which calculations are made, defaulted to 50 periods.
Projection Length: The length for future band projection, defaulted to 20 periods.
StdDev Multiplier (mult): A multiplier for the standard deviation, defaulted to 2.0.
Internal Calculations
1. Asymmetric Linear Weighted Moving Average of Price
The indicator uses an Asymmetric Linear Weighted Moving Average (ALWMA) to calculate a central value for the price.
Asymmetric Weighting: This weighting technique assigns the highest weight to the most recent value, with weights decreasing linearly as the data points become older. This structure provides a nuanced focus on recent price trends, while still reflecting historical price levels.
2. Asymmetric Weighted Standard Deviation
The standard deviation in this indicator is also calculated using asymmetric weighting:
Purpose of Asymmetric Weighted Standard Deviation: Rather than aiming for high sensitivity to recent data, this standard deviation measure smooths out volatility by integrating weighted values across the length period, stabilizing the overall measurement of price variability.
This approach yields a balanced view of volatility, capturing broader market trends without being overly reactive to short-lived changes.
3. Upper and Lower Bands
The upper and lower bands are created by adding and subtracting the asymmetric weighted standard deviation from the asymmetric weighted average of price. This creates a dynamic envelope that adjusts to both recent price trends and the smoothed volatility measure:
These bands represent adaptable support and resistance levels that shift with recent market volatility.
Future Band Projection
The indicator provides a projection of the bands based on their current slope.
1. Calculating the Slope of the Bands
The slope for each band is derived from the difference between the current and previous values of each band.
2. Projecting the Bands into the Future
For each period into the future, up to the defined Projection Length, the bands are projected using the current slope.
This feature offers an anticipated view of where support and resistance levels may move, providing insight for future market behavior based on current trends.
FlexiMA - Customizable Moving Averages ProDescrição:
O FlexiMA - Customizable Moving Averages Pro é um indicador de médias móveis altamente customizável desenvolvido para traders que buscam flexibilidade e precisão na análise de tendência. Este indicador permite ao usuário ajustar até quatro médias móveis, escolhendo o tipo de média, período, cor, estilo e espessura das linhas de acordo com sua estratégia.
Funcionalidades Principais:
Seleção do Tipo de Média Móvel:
O FlexiMA oferece múltiplas opções de médias móveis para cada uma das quatro linhas disponíveis. Isso inclui tipos de médias clássicas, como Simples (SMA), Exponencial (EMA), e outras avançadas como Welles Wilder.
Personalização de Períodos:
O usuário pode configurar períodos distintos para cada média móvel, tornando o indicador adaptável tanto para estratégias de curto quanto de longo prazo.
Controle Completo do Estilo:
O FlexiMA permite ajustar a cor, a espessura e o tipo de linha (contínua, pontilhada, etc.) de cada média móvel, proporcionando uma visualização clara e organizada no gráfico.
Ativação/Desativação de Médias:
Cada uma das quatro médias móveis pode ser ativada ou desativada de forma independente, permitindo que o trader trabalhe com uma única média, pares, ou todas as quatro, conforme necessário.
Como Utilizar:
Este indicador é projetado para servir tanto traders iniciantes quanto experientes. Você pode configurá-lo para ajudar a identificar tendências de alta e baixa, pontos de reversão e até sinais de entrada e saída.
O FlexiMA permite, por exemplo, definir uma combinação clássica de médias de 50 e 200 períodos para identificar mudanças de tendência de longo prazo, enquanto as médias mais curtas podem ser usadas para sinalizar entradas rápidas.
Exemplos de Aplicação:
Estratégia de Cruzamento: Defina uma média de curto prazo e uma de longo prazo e acompanhe os pontos de cruzamento para detectar mudanças de tendência.
Análise Multi-Temporal: Configure cada média móvel para períodos diferentes e utilize-os para analisar tendências em várias janelas temporais ao mesmo tempo.
Confirmação de Volume: Com a opção de incluir a VWMA, é possível obter uma leitura de tendência ponderada pelo volume, útil para confirmar a força das movimentações de preço.
Recomendações:
Este indicador é recomendado para traders que buscam um maior controle sobre suas análises de tendências e uma experiência de uso personalizada no TradingView.
Resumo das Configurações:
Tipos de Média: SMA, EMA, WW.
Configuração de Período: Definido pelo usuário para cada média.
Estilo de Linha: Contínua, pontilhada, entre outros.
Cor e Espessura: Totalmente customizáveis.
SystemAlpha MIXEsse indicador foi criado para ajudar a identificar facilmente quando um ativo (como ações ou criptomoedas) está em uma tendência de alta e quando essa tendência está prestes a terminar.
Ele funciona da seguinte forma:
Identificação da Tendência de Alta: O indicador usa uma combinação de médias móveis e o índice de força relativa (RSI) para verificar se o ativo está subindo de forma consistente. Quando detecta uma tendência de alta, ele marca no gráfico um alerta visual abaixo do preço, mostrando que o ativo está em alta.
Sinal de Fim da Tendência: Quando a tendência de alta mostra sinais de enfraquecimento, o indicador avisa que a alta pode estar acabando. Neste momento, ele coloca um alerta visual acima do preço, indicando um possível fim da subida.
Médias Móveis e Bandas de Bollinger: As linhas coloridas no gráfico representam médias móveis de diferentes períodos (10, 50 e 200), que ajudam a visualizar a direção geral do ativo. As Bandas de Bollinger, que envolvem o preço, mostram se o ativo está "espremido" (com pouca oscilação) ou se está se movendo com mais força.
Supertrend: Esse recurso dá suporte adicional para entender se o preço ainda está em alta ou se pode estar revertendo.
Este indicador é ideal para quem deseja visualizar rapidamente as tendências de alta e evitar ficar posicionado quando a alta acaba. É útil tanto para quem faz operações rápidas quanto para quem quer acompanhar o movimento de um ativo ao longo de um período maior.
Low Price VolatilityI highlighted periods of low price volatility in the Nikkei 225 futures trading.
It is Japan Standard Time (JST)
This script is designed to color-code periods in the Nikkei 225 futures market according to times when prices tend to be more volatile and times when they are less volatile. The testing period is from March 11, 2024, to November 1, 2024. It identifies periods and counts where price movement exceeded half of the ATR, and colors are applied based on this data. There are no calculations involved; it simply uses the results of the analysis to apply color.
Multi-Timeframe Period Separators█ OVERVIEW
This indicator plots period separators for up to four higher timeframes. The separators are fully customizable and designed to work on any symbols.
█ FEATURES
Reference
You can choose to plot the separators starting from midnight 00:00 or the opening of the exchange trading session.
Timezone
You can specify to localize midnight 00:00 to the region of your liking. The timezone format conveniently requires no manual adjustment during clock changes.
█ NOTES
Scans the bar opening and closing times
The script checks the bar ` time ` and ` time_close ` to pinpoint the separators that can occur intrabar.
Tracks from the last separator
The script tracks the time elapsed since the last separator, which is useful when there is no trading activity or the market is closed. As it can result in missing bars, it plots the separator on the first available bar.
Others
The script automatically hides the separators when navigating to an equal or higher chart timeframe.