Good trading there indeed !!! And that is definitely attainable if you're half way decent with pattern recognition and price action. I myself couldn't code anything to save my life, so that's def not an option for me, but obviously it can be done as all those quant and hft outfits and whatnots amply show. And despite my pet peeve around liquidity that I am not gonna keep harping on about tho, lol, I do admit it is very comforting to know that even with a one lot, and especially with the NQ that has always moved a lot, it's possible to earn what by any standard is a very good living indeed. I am truly grateful that that option with one lots in an active market will always be there no matter what happens. And yeah if I look at a chart from today using the range bars I like, I see the exact same patterns Buffy or Jimmer from dacharts.org posted way back in 2001 with tick charts, pics of which I still have saved lol. https://www.elitetrader.com/et/threads/dacharts-org-buffy-jimmer-still-around.383563/
My problem with range bars is you can get huge slippage even with automation. When I traded from office automation, turning points would create slowing down of data. I changed to putting automation on a server located in Chicago 1ms from CME building. No more concerns of high wind distorting cable or phone lines. El Paso Texas gets. winds over 100mph at times. Too old to change, maybe
Unfortunately, CME servers are 40 miles away in Aurora, IL https://www.cmegroup.com/trading/colocation/co-location-services.html
took today off to move some equipment around going to share my office space mancave with another trader. anyway been thinking on this project and since i like kaufman, i've have decided to use things from his book smarter trading that way there will be better documentation of how i put it all together. the book is small and very complex the more you study it - we will use the ama, smoothing constant, efficiently ration and some obscure page 232 Filtering Volatility.
Hello LionsWarthogsMillions, Yes, I agree. The ES Futures Market is for getting rich very very quickly. ES Futures is for people born poor who know how to hustle it up, not for smart people and people already rich. Work a regular job at night , but be sure to trade from 8:30am to 3pm everyday and you learn alot and be richer faster. Use prop firm funds if you do not have no money. NEVER EVER trade SIM or Paper money, waste of time and stupid. Use 401k to be rich at 65 years old incase you fail in the ES Futures Market. Trading for a living is stupid. You have to day trade to get rich so you can pay off debt. You can not day trade to pay bills at home. That makes no sense cause you can not scale up to large contracts and you be too stress and will lose.
Good Evening LionsWarthogsMillions, Correct. We join the ES futures market to grow $5K to $50 Million. You do not have time play around with fancy portfolio of systems and all his 8% return crap. Come back here when you have +$10 million in cash. Your goal NOW Is to get RICH as FAST possible in the markets. Look for insider trading and cheaters or spoof trading or HFT or find someone who is cheating in the futures market and GET rich with them. Or you have to trade yourself which is ok too. Look at Nancy and Stephen Colhen, they are rich by insider trading and they have good life now. So cheat if you need to. I programmed and back tested a lot of trading strategies on ES futures market. I could never find any ideas that make money year to year. Maybe I was not good enough. So I just click now and do my best, that is good enough. One thing I hate about building algos is the stupid Optimization button. I never know what is too much optimization and what is too less of optimization. Just waste of time and effort on my end. I have to get the fire and click that chart. You do not want to study too much, cause if you keep trying to learn alot, you still have to grow the your account to a million dollars, so at some point, you have to open the chart and click yourself with the rest of lions and trading players. Also, think about your health, you can not be too old clicking, cause the stress trading large size will make your heart rate go up. When you trading 50 to 100 ES contracts everyday, heart race in deep in drawdown So you have to hurry up man.
This little book has so many solid trading gems in it. Here is just 1 system I created using a simple formula from the book. As far as I know I have never seen anyone build a system from this at least this way. It isolates and capitalizes on very volatile moves. Shows the effect of follow through. Perry Kaufman - Smarter Trading page 232 - the golden nugget in the book. Filtering Volatility The volatility at the time of entry is a more dependable indication of expected profits and losses. Even more important, high volatility means high risk. A trade that has a good chance of being a loss, and includes high risk, is an excellent candidate for elimination. Figure ll-3(a) shows plots of the same WTI trades seen in Figure 11-2, this time using entry volatility against profits and losses. Volatility was calculated as the 10-day average of the absolute price changes (in $/bbl). Key Components Inputs: st1 (10): Period for the SMA. zn3 (4): Volatility threshold in points (e.g., price deviation from SMA). pftamt (1.0): Profit target in points. stpamt (4.0): Stop-loss in points. size (1): Number of contracts to trade. Variables: os: Current SMA value. aa: Current closing price. bb: Absolute deviation of the closing price from the SMA (|Close - SMA|). ---- code below ---- namespace NinjaTrader.NinjaScript.Strategies { public class CustomVolatilityBreakout : Strategy { // User-defined inputs private int st1 = 10; // Moving average period private double zn3 = 4.0; // Volatility threshold in points private double pftamt = 1.0; // Profit target in points private double stpamt = 4.0; // Stop loss in points private int size = 1; // Order size private double tolerance = 0.25; // Tolerance for deviation matching // Internal variables private double os; // Moving average private double aa; // Current price private double bb; // Absolute deviation protected override void OnStateChange() { if (State == State.SetDefaults) { Description = "Volatility breakout strategy with SMA-based entries."; Name = "CustomVolatilityBreakout"; Calculate = Calculate.OnEachTick; EntriesPerDirection = 1; EntryHandling = EntryHandling.AllEntries; IsExitOnSessionCloseStrategy = true; ExitOnSessionCloseSeconds = 30; IsInstantiatedOnEachOptimizationIteration = false; IsTickReplay = true; } else if (State == State.Configure) { SetProfitTarget(CalculationMode.Price, pftamt); SetStopLoss(CalculationMode.Price, stpamt); } } protected override void OnBarUpdate() { // Ensure enough bars for SMA calculation if (CurrentBar < st1) return; // Calculate SMA, current price, and deviation os = SMA(Close, st1)[0]; aa = Close[0]; bb = Math.Abs(aa - os); // Trading window: 8:30 AM to 11:30 AM int currentTime = ToTime(Time[0]); if (currentTime >= 83000 && currentTime < 113000) { // Long entry: price above SMA and deviation within range if (aa >= os && bb >= zn3 && bb <= zn3 + tolerance) { EnterLong(size, "LongEntry"); } // Short entry: price below SMA and deviation within range else if (aa <= os && bb >= zn3 && bb <= zn3 + tolerance) { EnterShort(size, "ShortEntry"); } } } #region Properties [NinjaScriptProperty] [Range(1, int.MaxValue)] [Display(Name="SMA Period", Order=1, GroupName="Parameters")] public int St1 { get { return st1; } set { st1 = value; } } [NinjaScriptProperty] [Range(0, double.MaxValue)] [Display(Name="Volatility Threshold", Order=2, GroupName="Parameters")] public double Zn3 { get { return zn3; } set { zn3 = value; } } [NinjaScriptProperty] [Range(0, double.MaxValue)] [Display(Name="Profit Target (points)", Order=3, GroupName="Parameters")] public double Pftamt { get { return pftamt; } set { pftamt = value; } } [NinjaScriptProperty] [Range(0, double.MaxValue)] [Display(Name="Stop Loss (points)", Order=4, GroupName="Parameters")] public double Stpamt { get { return stpamt; } set { stpamt = value; } } [NinjaScriptProperty] [Range(1, int.MaxValue)] [Display(Name="Order Size", Order=5, GroupName="Parameters")] public int Size { get { return size; } set { size = value; } } [NinjaScriptProperty] [Range(0, double.MaxValue)] [Display(Name="Deviation Tolerance", Order=6, GroupName="Parameters")] public double Tolerance { get { return tolerance; } set { tolerance = value; } } #endregion } }