Do You Know What You Are Being Patient for?Patience in trading is the discipline of being with your restless energy when things aren't happening they way you want them to. If we are to be patient, we must know what it is we are being patient for. That is part of what making a trade plan is all about.
I know I’m being patient for the conditions of my setup to line up. After that i know I’m being patient for my planned entry to hit. Then I know being patient and waiting to either get stopped out or start to manage profits. There is no escape other than to make up some justification to break my discipline and try to make something happen or force the trade.
The analysis for this trade is simple and straightforward. FNV is going down according to the fixed cycle (amount of bars on the chart) I’m looking at, therefore I want to sell a pullback. The rest is just structuring an exact entry and stop along with management after im in the trade.
Understanding and practicing patience in trading is not just about waiting; it's about disciplined waiting with a clear purpose and strategy. Its a practice.
Shane
Beyond Technical Analysis
The Trader's Toolkit: Building a Dynamic Trading JournalJoin us in this comprehensive tutorial as we walk through the essential process of building a personalized trading journal. Whether you're new to trading or aiming to elevate your strategies, this educational video empowers you with the knowledge of why building a trading journal is a critical step in your trading journey. Learn with us, and discover why a trading journal is a crucial addition to your trading toolkit.
Predict the clarity of the price, not it's direction☝️The main purpose of my resources is free, actionable education for anyone who wants to learn trading and improve mental and technical trading skills. Learn from hundreds of videos and the real story of a particular trader, with all the mistakes and pain on the way to consistency. I'm always glad to discuss and answer questions. 🙌
☝️ALL videos here are for sharing my experience purposes only, not financial advice, NOT A SIGNAL. YOUR TRADES ARE YOUR COMPLETE RESPONSIBILITY. Everything here should be treated as a simulated, educational environment.
Thinking in Pine - Study References Too Many Bars In the HistoryWelcome to "Thinking in Pine" short video series on the topics of Pine Script.
Today's topic is handling the error - "The study references too many candles in the history" and other bar_index related issues.
If you are not familiar with Pine Script time series concepts, please go through our previous videos.
Thinking in Pine - Time Series
Thinking in Pine - Special Cases of Time Series
🎲 Points Discussed
When do we get the error "Study references too many candles in the history" and how to overcome this issue.
bar_index limitations with drawing objects on the chart.
🎯 Example Program - Historical Reference Alternative Implementation
// When we are trying to refer to history more than or equal to 10000 bars older
// float value = close
// plot(value)
// Alternative implementation
var values = array.new()
values.unshift(close)
// Throws error on first bar since the number of items is less than 10000
// float valueFromArray = values.get(10000)
// plot(valueFromArray)
//Option 1 - Get the last available value when the number of bars available is less than 10000
float valueFromArray1 = values.get(math.min(bar_index, 10000))
plot(valueFromArray1)
// Option 2 - If number of available bars less than 10000, then set value to na else get the value of 10000 bars back
float valueFromArray2 = values.size() <= 10000? na : values.get(10000)
plot(valueFromArray2)
🎯 Example Program - Drawing Object Limitations with Bar Index
// Trying to create a line too far in history or in future
// if(barstate.islast)
// Throws error as can only draw upto 9999 bars before
// ln1 = line.new(bar_index, high, bar_index-10000, high)
// Throws error as we can only draw upto 500 bars in the future.
// ln2 = line.new(bar_index, high, bar_index+501, high)
startingPoint = ta.valuewhen(bar_index == last_bar_index-10000, time, 0)
float price = 0.0
if(barstate.islast)
// However, we can draw more than 10000 bars back or more than 500 bars in the future using time instead of bar _index
ln = line.new(time, high, startingPoint, high, xloc=xloc.bar_time)
// Cannot use line.get_price when the line is drawn using xloc = xloc.bar_time
// price := ln.get_price(last_bar_index-5000)
📖Ultimate guide to feeling a little bit better after a loser.1The video is long, feel free to use speed settings :)
Thanks for your interest in the last post about the Major mistakes traders do.
Now let's talk about coping emotionally with losers. This is Part 1.
📖We all know this feeling, it feels awful, hopeless like something very valuable has been taken from us, like it destroys our work and plans and it feels BAD.
Who am I to speak on this topic. 4 year of trading experience, lost maybe 25 funding challenges over the course of 3 years, got 2 times funded the previous year and lost these funded accounts. Had multiple losers, out of which many just stamped me emotionally.
Over time I developed coping skills to better prepare for these -1’s and though I’m far from being really good at it, I’m definitely a bit better than I was some time before.
And this is my ultimate guide to feeling a little bit better after a -1.
📖First of all, congrats - if you’re still here, it means you’re interested in the topic and by watching videos like these from me or other traders, and thinking, and trying to become better, you’ll do it eventually. Yes, with time you better find one source of education that really sticks to you, and for me, it’s the method.. but even other videos can build some foundation for your work in this direction.
📖As pointed out in the Mental Game of Trading, Our brain functions in 3 layers, so to say - automated habits, emotional brain, and rational. The thing is, emotions can really block rational thinking. It’s physical and happens in your brain. It literally changes our chemistry. Accept the fact we can't accept losers fully. It will always feel shite, but with time and a good strategy of preparation, it will get better. So this is a Stoic principle applied to trading, be prepared for the worst-case scenario, how? Expect it to happen, and know it’s inevitable and you’ll feel bad. Paradoxically, it allows you to feel a little bit better when it actually happens.
📖Notes and full diary, you want to know all about how you behave in the markets so that you recognize the build-up of emotions and can prepare better for the next inevitable loser, and in case you understand you need to stop because you’ll become too emotional - than you’ll be able to stop.
How diaries work is that you know all your triggers, and patterns, in a way that nothing is new to you about how you feel about the market and how you react to certain situations.
📖Appreciate yourself and your work! gratitude - videos, practice, mooji. appreciate the work you did, especially if the loss comes out from a high-quality setup. Many people turn too much attentions to their flaws while forgetting recognizing their powerful sides. What’s your super power - holding to TP, sticking to max trades per day, not overrisking, really going through the checklist.
📖Awareness doesn’t equal control. You can control things only to some extent, but when emotions really kick in, it’s too late. That’s why people very often say: I understand everything, but I can’t stop. Yes, my friend this is how emotional brain works - it leaves with no control over the actions. Awareness doesn’t equal control. If you feel bad, you need to STOP, because in that state losers will feel especially bad.
📖Trade less, a lot less. Good traders and my experience.
📖Record a trade as a -1 in a journal once you started it - Ment’s video.
APEX THREE DAY CHALLENGE: TIME AND SPACE ALGORITMIC TRADINGTook on the Apex challenge to see if i can pass in one day using Time algorithmic trading. I have the confluence on the right of DXY. looking for inefficiency to to be traded into at specific time. if the delivery is delayed there not enough amplitude in the market. Amplitude cause market displacement its volumetric delivery to the commitment of traders at there prices. This theory and concept but my documentation is real.
💡MAJOR mistake that all beginners do. Try to do the opposite.💡The main purpose of my resources is free, actionable education for anyone who wants to learn trading. Consider following the attached links for improvement of your mental and technical trading skills - learn from hundreds of videos featuring the real story and growth of a particular trader, with all the mistakes and pain on the way to consistency. I'm always glad to discuss and answer questions.
✨❄️🌟 The Tutorial How-To Find a Magic on TradingViewFinancial markets just finished its memorial 2023.
Whatever the numbers at the “Closing bell”, on your monitors and in your portfolios, there is no doubt that 2023 year’s Santa Rally will go down in history as one of the most outstanding in many years.
In November and December, 2023 the U.S. stock market was rallying for the 9th consecutive week in a row.
This was the longest ever upside streak in SP:SPX over the past 20 years, since the fourth quarter of 2003.
Well.. just try to answer what happened with the market the past one time.
Happy New 2024 Year!
✨❄️🌟🎅🎊🌲💫⛄️🌠✨❄️🌟🎅🎊🌲💫⛄️🌠
☝️3 Main enemies of a trader and how to deal with them☝️☝️Dear traders, no one here has superpowers, and I'm just a human after all. Please take everything with a grain of salt. I'm sharing my view and one of the possible scenarios of price action, but mostly - my direct experience. When I enter I try to predict as little as possible and actually follow what the market is doing, joining the market and not arguing with it or forcing my will. Have good trading, keep a constant flow of self-awareness, and do your best. 🙌
Thinking in Pine - Tricks and Tips of DebuggingWelcome to "Thinking in Pine" short video series on the topics of Pine Script.
Today's discussion point is debugging and tools that Pine script provide us to debug our programs.
🎲 Points Discussed
Debugging using `plot` for numerical series values.
Using Pine Logs to debug for cases where `plot` is not suitable
🎯 Example Program - Debugging using plot
length = input.int(14, 'Length')
multiplier = input.float(4, 'Multiplier')
var dir = 1
var stopDistance = ta.atr(length) * multiplier
// Remove var to fix the first issue
// stopDistance = ta.atr(length) * multiplier
buyStopCurrent = close-stopDistance
sellStopCurrent = close + stopDistance
var buyStop = buyStopCurrent
var sellStop = sellStopCurrent
buyStop := dir > 0? math.max(buyStop, buyStopCurrent) : buyStopCurrent
sellStop := dir < 0? math.min(sellStop, sellStopCurrent) : sellStopCurrent
// Use nz to overcome na issues with math.max/ math.min
// buyStop := dir > 0? math.max(nz(buyStop, buyStopCurrent), buyStopCurrent) : buyStopCurrent
// sellStop := dir < 0? math.min(nz(sellStop, sellStopCurrent), sellStopCurrent) : sellStopCurrent
dir := dir == 1 and close < buyStop? -1 : dir == -1 and close > sellStop ? 1 : dir
// Plot statements used for debugging. display is set to display.data_window as the debugging plots do not need to appear on the charts
plot(stopDistance, 'Stop Distance', color.purple, display = display.data_window)
plot(buyStopCurrent, 'buyStopCurrent', color.red, display = display.data_window)
plot(sellStopCurrent, 'sellStopCurrent', color.green, display = display.data_window)
plot(buyStop, 'buyStop', color.red, display = display.data_window)
plot(sellStop, 'sellStop', color.green, display = display.data_window)
plot(dir, 'Direction', color.white, display = display.data_window)
plot(dir > 0? buyStop : sellStop, 'Supertrend', dir > 0? color.red : color.green)
🎯 Example Program - Pine Logs
sum = 0
arr = array.new()
for i = 0 to 10
sum+=i
// Log on every bar and also on every tick on real time
// log.info('Sum at iteration {0} is {1}', i, sum)
// Run only for the first bar
// if(barstate.isfirst)
// log.info('Sum at iteration {0} is {1}', i, sum)
// Run on the last confirmed bar
// if(barstate.islastconfirmedhistory)
// log.warning('Sum at iteration {0} is {1}', i, sum)
// if(barstate.isrealtime)
// log.warning('Sum at iteration {0} is {1}', i, sum)
// Display only once
// varip showLog = true
// if(barstate.isrealtime and showLog)
// log.warning('Sum at iteration {0} is {1}', i, sum)
// if (i == 10)
// showLog := false
// Extract through the array and log outside the loop
arr.push(sum)
// Log the extracted array on real time and print only once
varip showLog = true
if(barstate.isrealtime and showLog)
log.error('Sum at different iterations : {0}', arr)
showLog := false
plot(sum)
🎲 References
Pine Logs - Reference Manual
plot - Reference Manual
Thinking in Pine - Execution Model and Rollback on Realtime BarsHello All,
Welcome to another session of "Thinking in Pine" - short video tutorials on Pine Script.
Before continuing with this video, if you are not familiar with var, varip and regular variables, please watch our previous video - "Thinking in Pine - var, varip and regular variables"
🎲 Today's discussion points
How var, varip and regular variable modification code works with historical and real time bar updates.
Rollback concept of var variables
🎯 Example Program Used
// The statements execute on every tick
count = 0.0
count+=1
varip varipcount = 0 //executes only once on the first bar
varipcount+=1
// Reset counter on every bar
// if(barstate.isconfirmed)
// varipcount:=0
// Rollbacks and assigns on every tick
var varcount = 0.0 //executes only once on the first bar
varcount+=1
// varcount:=varcount -- Rollback
// varcount := varcount + 1 -- execute again
plot(varipcount, 'Varip Count')
plot(varcount, 'Var Count')
plot(count, 'Çount')
arrRegular = array.new()
var arrVar = array.new()
varip arrVarip = array.new()
if(bar_index >= last_bar_index -5)
arrRegular.push(close)
arrVar.push(close)
arrVarip.push(close)
log.info('Regular : {0}', arrRegular)
log.info('Var : {0}', arrVar)
log.info('Varip : {0}', arrVarip)
🎲 References
Pine Script® User Manual - Execution Model
Trading Hacks - Deep AnalysisSorry for sound quality, better quality on yt
☝️Dear traders, no one here has superpowers, and I'm just a human after all. Please take everything with a grain of salt. I'm sharing my view and one of the possible scenarios of price action, but mostly - my direct experience. When I enter I try to predict as little as possible and actually follow what the market is doing, joining the market and not arguing with it or forcing my will. Have good trading, keep a constant flow of self-awareness, and do your best. 🙌
Thinking in Pine - Functions Containing Var VariablesHello everyone, welcome back to "Thinking in Pine" short video tutorials. In this video, we have discussed special cases of using var variables inside function definitions.
If you are not familiar with var variables, please take a step back and watch our earlier video - "Thinking in Pine - var, varip and regular variables"
🎲 Summary
Using var within a function scope and how it behaves with multiple invocations.
Using the functions containing var variable definitions within a loop.
🎯 Example Program Used
increment()=>
var i = 0
i+=1
var1 = increment()
var2 = increment()
var3 = increment()
// The code above is equivalent to
// var i1 = 0
// i1+=1
// var1 = i1
// var i2 = 0
// i2+=1
// var2 = i2
// var i3 = 0
// i3+=1
// var3 = i3
plot(var1, "Counter 1", color=color.blue)
plot(var2, "Counter 2", color=color.red)
plot(var3, "Counter 3", color=color.purple)
arr = array.from(var1, var2, var3)
for i=1 to 3
arr.push(increment())
// The code above is equivalent to
// var i4 = 0
// i4+=1
// arr.push(i4)
if(bar_index == 4)
log.info('Value of array containing incremental values : {0}', arr)
🎲 References
Pine Script® User Manual - Variable declarations
Pine Script® Reference Manual - var
Thinking in Pine - Time Series Special CasesHello Everyone,
Welcome back to "Thinking in Pine" short video series. In this session, we have discussed few special cases of time series variables and using historical operator within local scope.
If you have not watched our previous video - "Thinking in Pine - Time Series" , request you to do that before continuing this video.
🎲 Summary of our today's discussion
How historical operator works for variables defined inside an conditional block
How historical operator works for variables defined in a loop.
🎯 Example Program Used
// Time series for variables within a condition
varip showLogInLoop = true
if(bar_index%3 == 0)
specialBarIndex = bar_index
if(bar_index > last_bar_index-3 and showLogInLoop)
log.info('Current and Previous special bar index are : {0} and {1}', specialBarIndex, specialBarIndex )
showLogInLoop := false
// Time series of variables within a loop
arrayOfX = array.new()
arrayOfLastX = array.new()
for i = 1 to 5
x = i*10
arrayOfX.push(x)
arrayOfLastX.push(x )
if(barstate.islastconfirmedhistory)
log.info('Array of X : {0}', arrayOfX)
log.info('Array of last X : {0}', arrayOfLastX)
🎲 References:
Pine Script® User Manual - Execution Model
Pine Script® User Manual - Time Series
Pine Script® User Manual - History Referencing Operator
Pine Script® Reference Manual - History Referencing Operator
Trading a Choppy MarketPer request, someone asked to share my strategy and how / why I enter/exit trades.
I decided to be specific and applicable to the current market sentiment and discuss how I trade “choppy markets”.
My personal rules for trading choppy markets are:
1) No options, shares only
2) GTFI and GTFO ASAP
3) Only trade when there is a support or resistance respected
4) Trail once you are in decent profit!
Other points:
Some things I did not elaborate in the video but I think are important to touch on and one of the reasons I avoid options are, there is a huge decay that comes with ranging markets on options. I have went really ITM on options lately and I noticed the profits are equivalent to that of shares by the time the stock finally decides to move. Thus, I am risking quite a lot by the inherent decay in options vs just taking the raw share trade.
And I forgot to disclose in the video, but I half my position at the next resistance level. Unfortunately today we just traded between 2 support and resistance levels, so there was no really halving to be had, but that is the general rule of thumb. Halve the position at the next resistance and trail.
Leveraged Shares vs Options
Another point that I missed in the idea is, Leveraged ETFs, to which is the instrument I traded today and describe in this idea, do have a degree of decay associated with them. However, for daytraders this decay is not noticeable. It will only become noticeable and costly if you chose to hold these shares for greater than a 1 month period, as the decay tends to transition with the month turnover and on any massive move that goes against the share (for example, if you are long via UPRO or TQQQ and we see a 5% sell in 2 days, it will take UPRO and TQQQ longer to catch up to QQQ and SPY because that massive sell just cost the management firm a lot of money on that position (it’s a very simplistic way of looking at it and its much more complex than this, but for ease of explanation, I will use this haha).
To put it in perspective, here is TQQQ next to QQQ on the day:
You can see, there is no observable decay from the chop. If you bought in off open and held till mid day or EOD, you would be able to get out for flat or even a profit if you exited right at the new high.
Now if we look at an ITM 1 DTE option, here is the chart for today:
You can see that the option never retraced the daily high, despite QQQ doing so two times, in fact even breaking it at end of day. It is because the decay impacts options, especially shorter dated ones.
Now you can mitigate against this by going further out in expiries, but the cost of entry into those options increase and the risk of losses also increase, to the point of making your stop outs more costly than had you done a leveraged share position. As well, going further out in expiry doesn't stop the decay from chop, it simply 'mitigates it'. Chop will not destroy a leveraged share, the only two things that will destroy a leveraged share are
a) Time > 3 to 6 months, share depending and
b) Moves against the share > 3 % to 4% on the underlying in a short period of time (i.e. 1 to 2 days).
That said, the gains on options can be better than the gains on shares, its just it comes with a risk. So it is important to weigh your prerogatives, account size and risk tolerance when deciding on these things.
That also said, there are many other things to trade other than leveraged shares. For example, NYSE:AI is an affordable ticker for new share traders, NASDAQ:RIVN , as well as NASDAQ:LCID and if you are Canadian, BA Canadian leveraged shares, though I admit I haven't tried to short sell these yet so not sure if they are easy to borrow.
Concluding remarks
That concludes the idea and request. If you have any questions, as always, leave them below.
Safe trades everyone and take care!
Thinking in Pine - Time SeriesHello everyone,
Welcome back to "Thinking in Pine" short video series. In this video, we discuss the concept of time series variables in Pinescript.
If you are not familiar with var and varip type of variables - please step back and watch this video before continuing - "Thinking in Pine - var, varip and regular variables"
🎲 Summary of our discussion is as follows
What are time series variables, and how are they used in Pinescript?
How do we access historical values of time series?
Limitations of accessing historical values
🎯 Example Program Used
currentBar = bar_index
var currentBarUsingVar = 0
currentBarUsingVar := bar_index
varip showLog = true
valueAt200thBar = ta.valuewhen(bar_index == 500, currentBar, 0)
if(barstate.islast and showLog)
log.info("Current Bar Values using regular and var variables : {0}, {1}", currentBar, currentBarUsingVar)
log.info("Last Bar Values using regular and var variables : {0}, {1}", currentBar , currentBarUsingVar )
log.info("Values 500 bars ago using regular and var variables : {0}, {1}", currentBar , currentBarUsingVar )
offset = bar_index-25000
log.info("Values at 25000th bar using regular and var variables : {0}, {1}", currentBar , currentBarUsingVar )
showLog := false
plot(bar_index, "Bar Index", color = color.blue, display = display.data_window)
There are pitfalls of using historical operators within loop or under if condition. We will discuss that in our next video.
🎲 References:
Pine Script® User Manual - Execution Model
Pine Script® User Manual - Time Series
Pine Script® User Manual - History Referencing Operator
]Pine Script® Reference Manual - History Referencing Operator