NexusFi: Find Your Edge


Home Menu

 





Millionaire in 10 weeks & Conversation with broker


Discussion in Psychology and Money Management

Updated
      Top Posters
    1. looks_one MerlinWorld with 125 posts (116 thanks)
    2. looks_two Big Mike with 20 posts (136 thanks)
    3. looks_3 DavidHP with 15 posts (57 thanks)
    4. looks_4 wldman with 14 posts (49 thanks)
      Best Posters
    1. looks_one Big Mike with 6.8 thanks per post
    2. looks_two DavidHP with 3.8 thanks per post
    3. looks_3 wldman with 3.5 thanks per post
    4. looks_4 MerlinWorld with 0.9 thanks per post
    1. trending_up 69,627 views
    2. thumb_up 773 thanks given
    3. group 76 followers
    1. forum 298 posts
    2. attach_file 123 attachments




Closed Thread
 
Search this Thread

Millionaire in 10 weeks & Conversation with broker

  #241 (permalink)
 
ratfink's Avatar
 ratfink 
Birmingham UK
Market Wizard
 
Experience: Intermediate
Platform: NinjaTrader
Broker: TST/Rithmic
Trading: YM/Gold
Posts: 3,633 since Dec 2012
Thanks Given: 17,423
Thanks Received: 8,425


MerlinWorld View Post
Oh I will be gone way before that date, trust me on that Mike.

I live in hope, along with @mattz and @wldman, sometimes PC correctness is way overrated. I do not like the way this forum is being dragged through some rotten places. I appreciate others have more tolerance, my bad. I don't have their trading savvy but I am a bloody good programmer and system engineer and I also know tosh when I see it.


MerlinWorld View Post
YOU on the other hand will have to make the decision to delete or not this thread and kick me out.

He won't, its already number 1 in the top ten list of threads to learn how not do go about things and will be kept as lesson material.


MerlinWorld View Post
If you do, a lot of your members who hate me will be happy but the 12s if not 100s of others hidding being PMs and silently lurking around that have boosted this thread by the 1000s will be pissed because they won't know the end result of the backtests.

They won't because they already know damn well that backtests on good systems are at best unreliable indications of future success and on special bars and indicators like this they are pointless and downright misleading. Years ago we watched a similar exercise by an extremely talented and well respected member of this forum; he finally accepted that a similarly visually appealing approach actually contained ZERO programmatically useful information. i.e. no real time edge.


MerlinWorld View Post
If you don't then I will come back and post all the screenshots we come up with in our performance reports once we have them and I don't even know when we will have them. Maybe in 10 weeks there be any backtesting done yet. We'll see...

They won't mean anything...


MerlinWorld View Post
P.s I NEVER said that I was gonna be a Millionaire in 10 weeks, because well.. 10 weeks is WAYYYYYY too long for my taste. ;-D

What are you saying then?

Travel Well
Visit my NexusFi Trade Journal

Can you help answer these questions
from other members on NexusFi?
Ninja Mobile Trader VPS (ninjamobiletrader.com)
Trading Reviews and Vendors
Better Renko Gaps
The Elite Circle
NT7 Indicator Script Troubleshooting - Camarilla Pivots
NinjaTrader
Deepmoney LLM
Elite Quantitative GenAI/LLM
ZombieSqueeze
Platforms and Indicators
 
  #242 (permalink)
 TraderDoc007 
Detroit MI/USA
 
Experience: Advanced
Platform: Multicharts, Custom own
Trading: All Futures
Posts: 66 since Sep 2017
Thanks Given: 41
Thanks Received: 206

I haven't spent much time on this forum in the past but checked in due to Mike's email about this thread. After reading through this thread, I might spend some more time here as I might be missing out on some great bunfights and some sage discussions regarding trading. This thread has been quite amusing to say the least.

I am quite bemused at how experienced traders are getting so bent out of shape owing to what Merlin is attempting to do and how he is responding to some of the advice/posts.
As traders, we have all been through the ringer at some time in our career, and some of us, fortunately, have come out the other side successfully. Some haven't yet found their own success, but are seeking it in whichever way they believe they need to. Fellow traders can assist, give advice and attempt to help, but if someone is not willing to accept all that, so be it. It is unnecessary to kick and shout and insult in order to "ensure" our advice is heard and taken to heart. If the recipient of our advice chooses to continue along the pathway they believe is correct, they should be allowed to.
By threatening, sulking and throwing tantrums by trying to get Merlin banned is really quite silly - that's what 2 year old kids do - we as adults and actually more so as traders, should have or develop far thicker skins. We should not be offended so quickly - there is far too much other strife in the world than adding to it in a traders forum.

I personally believe, and for me it was an actual defining moment in my trading career, that you have to hit rock bottom, with multitudes of errors in various aspects of one's trading (be it strategy related, money management related or most importantly psychologically related) before you can actually see the forest for the trees and become a successful trader. It is the ultimate journey that one needs to traverse to become successful. Same as drug addicts and alcoholics - they have to hit rock bottom before they eventually turn the corner. It might be how our genetic makeup is woven into us!

This thread, like any others, should be allowed to run its course and let Merlin meet all the demons that are waiting at the end of the journey. If he manages to see through those and fight through them, he might become a successful trader. If not, he can simply just join the huge heap of wannabees who unfortunately couldn't make it in the hardest career on the planet.
Everyone should just relax, get the popcorn and read whichever threads they find interesting. I have to say I have sat reading this thread with a smile on my face! Thanks to all those that have posted.

  #243 (permalink)
 MerlinWorld 
Montreal
 
Posts: 128 since Jan 2013



ratfink View Post
I do not like the way this forum is being dragged through some rotten places. I appreciate others have more tolerance, my bad.

I couldn't agree more. If I was the admin of this forum, pretty much page 2 and up would have been deleted right now because as we speak, it's already over for whatever we can talk about.

NOBODY is going to read 25 pages of bitching so we lost 90% of the people who are coming on page 1.


ratfink View Post
What are you saying then?

The Millionaire in 10 weeks was based in my 2014 research that was on Forex where I would need to make 26.5 pip on a daily basis so that I could get enough profit $ to buy a 2nd Forex Lot costing $1,300 at that time.

Today, I don't trade Forex, I trade Futures and even that evolved a lot since 2014. Not only the Mini Russell Contract (RTY) has doubled it's daily range but today, you can even buy a Micro Russell Contract (M2K) for just $25!!!

As I was explaining on page 1, each ticks pays $0.50 so 50 ticks in the right direction and you have made a $25 profit and can now be able to buy a 2nd M2K contract.

So technically speaking, if we would make that 5 pts profit (100% ROI) on a daily basis and don't lose too one of those 5 pts (100% DrawDown) then it wouldn't take us 3 weeks (16 doublings) to reach the Million.

Now before you all jump on me and call me a moron or dreamer, I need to say that EVEN if we make our 5 pts on most trading days, we will still won't be able to get to the Million $ by doubling our contracts. Sooner or later we will hit a wall where when we get in with 100+ contracts things are turning against us and the slippage becomes too big, the volatility of the RTY, believe it or not won't be able to handle it.




Here's a screen of my 2 ticks Renko bars near the close at 4 Pm. You can see that even when everybody is getting out, we don't get passed the 500 trades on the same tick meaning that if you buy 256, 512, 1024 or 2048 contracts (see diagram below) like we need to buy to go from $500K to $1M, we won't be filled instantly and look at the drop in price in just those 5-6 bars, 1 full point was lost.

Conclusion, Tim was right and we will need to lock in our contracts to get there and as to HOW LONG we will get there, only a good trading system will let us do it and only the backtesting will confirm this. Right now, I have no clue how long it will take becuse I don't have Tim's system.

Btw, what are you saying? That any strategy and backtesting won't work, and everything is doomed to fail?


  #244 (permalink)
 MerlinWorld 
Montreal
 
Posts: 128 since Jan 2013

Yes I know, I have already a thread talking about this but not everyone has the time nor the interest to hear 25 pages of pickering and bitching to reach the part where I start sharing the code I have and the code I get form other programmers.

If Big Mike or any other admin would be willing to delete the last 24 pages of us arguing then I would post it there but nobody will see it. So before any admin move this page or merge it with the Millionaire in 10 weeks thread, PLEASE wait a couple of days so that the most people will be able to see before it gets lost on page 25 or 26 of an already messy thread.

Before I post the code, you need to understand the logic of this indicator and why I think it's by far the best indicator I've seen and trust me, after 14 years spent on the TradeStation forum which is "Indicator, strategy and backtesting" HEAVEN for any programmer out trade.

First, my 2 clouds indicator does NOT LAG like 99.999% of the other (Price Channel) indicators out there.

Why is that?

It's because indicators are usually based on previous X number of bars back. So if you have a 50 MA on your chart, that Moving Average has is calculated on the previous 50 bars AND THAT... makes it lag.

It's the same with most price channel indicators out there (Keltner, Bollinger Bands, Donchian Channel, etc..). They are all based on previous bars, not mine.

Mine is based on a FIXED PRICE VALUE.

As you can see, the upper and lower bands of the channel stay parallel during all this climb...



Here's another price channel (keltner), noticed how it it smoothly curved. This is caused by making an "average" of previous bars and because of that it lags.



Here's a closer shot of what happens on my price channel.

At the beginning, the channel was blue because we were coming out of a downtrend but look what happened when the price moved back up inside the channel and moved 1 BAR above the upperband...down to the very last tick of that bar... BOOM the 5 pt fixed price of the channel has been crossed and therefore, the whole channel changes color from blue to white and the center line also changed from red to green.



In other words, when the trend changes direction and hits a SPECIFIC FIXED PRICE for that channel, the channel changes color and indicates a trend direction change.

One common line that I heard 100 times throughout my 15 years in this trading business is...

"First..FIND THE TREND and then BUY THE DIPs"

Well when you load this indicator on your charts, the first thing you will notice is how good it is to spot the big trend (when there is one of course). If the market makes a big move that indicator will catch it and fairly early.

So what I did is remove the upper and lower bands of that channel and only kept the red/green center line that I call my Merlin Squared MA.

Then I used 4 of those Squared MA and for now the settings are 6 and 8 pts for the faster TF cloud (light blue and white) and 10 and 12 pts for the slower TF cloud (gray and dark blue).

You end up with this on your 0.2 pt high Renko bar chart.



Now yesterday, Sevak (1 of the programmer working with me at converting this EasyLanguage indicator code) was able to convert it in C# and it seems to be working fine on NinjaTrader (NT8) as you can see... his chart is right smack on the nose because our chart looks the same.



However, when I loaded it into my MultiChart (.NET version) editor, I got all these errors...



Now before you tell me to go with the version of MultiCharts that accept EasyLanguage, you need to understand that both version of MC cost $1,500 each but with my new broker (Amp Futures), you can get the .NET version for free with no monthly fee!

Because I like"FREE STUFF" and knowing that people who are interested in trading but don't have millions to throw away, they will be happy to go with this free MC version however, I will still need some help to convert it and debug it for MC too.

So first, here's the EasyLanguage code for those who have TradeStation or MultiCharts w/EasyLanguage...

 
Code
Input: S_TF(True),X(6),X2(8),M_TF(True),X3(10),X4(12),C1(White),C2(RGB(24,117,231)),C3(DarkGray),C4(DarkBlue);  

variables: HH(0),LL(0),Midline(0),MidColor(0),HH2(0),LL2(0),Midline2(0),MidColor2(0),HH3(0),LL3(0),Midline3(0),MidColor3(0),HH4(0),LL4(0),Midline4(0),MidColor4(0);

If High >= HH then 
HH = high;
		
If LL < (HH - X) then
LL = HH - X;

If Low <= LL then
LL = low;

If HH > (LL + X) then
HH = LL + X;

Midline = (HH + LL)/2;

If High >= HH2 then 
HH2 = high;
		
If LL2 < (HH2 - X2) then
LL2 = HH2 - X2;

If Low <= LL2 then
LL2 = low;

If HH2 > (LL2 + X2) then
HH2 = LL2 + X2;

Midline2 = (HH2 + LL2)/2;

If High >= HH3 then 
HH3 = high;
		
If LL3 < (HH3 - X3) then
LL3 = HH3 - X3;

If Low <= LL3 then
LL3 = low;

If HH3 > (LL3 + X3) then
HH3 = LL3 + X3;

Midline3 = (HH3 + LL3)/2;

If High >= HH4 then 
HH4 = high;
		
If LL4 < (HH4 - X4) then
LL4 = HH4 - X4;

If Low <= LL4 then
LL4 = low;

If HH4 > (LL4 + X4) then
HH4 = LL4 + X4;

Midline4 = (HH4 + LL4)/2;


If Midline > Midline2 then begin
MidColor = C1;
End
Else
If Midline < Midline2 then begin
MidColor = C2;
End;


If Midline >= Midline3 then begin
MidColor2 = C3;
End
Else
If Midline <= Midline3 then begin
MidColor2 = C4;
End;


// Plots

If S_TF = True Then begin
plot1(Midline,"Midline",Midcolor);
Plot2(Midline2,"Midline2",Midcolor);
End;

If M_TF = True Then begin
plot3(Midline3,"Midline3",Midcolor2);
Plot4(Midline4,"Midline4",Midcolor2);
End;

And here's the code for NinjaTrader.


 
Code
#region Using declarations
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using System.Xml.Serialization;
using NinjaTrader.Cbi;
using NinjaTrader.Gui;
using NinjaTrader.Gui.Chart;
using NinjaTrader.Gui.SuperDom;
using NinjaTrader.Gui.Tools;
using NinjaTrader.Data;
using NinjaTrader.NinjaScript;
using NinjaTrader.Core.FloatingPoint;
using NinjaTrader.NinjaScript.DrawingTools;
#endregion

//This namespace holds Indicators in this folder and is required. Do not change it. 
namespace NinjaTrader.NinjaScript.Indicators
{
	public class _Merlin_2Clouds : Indicator
	{
		protected override void OnStateChange()
		{
			if (State == State.SetDefaults)
			{
				Description									= @"Merlin 2 Clouds Indicator";
				Name										= "_Merlin_2Clouds";
				Calculate									= Calculate.OnBarClose;
				IsOverlay									= true;
				DisplayInDataBox							= true;
				DrawOnPricePanel							= true;
				DrawHorizontalGridLines						= true;
				DrawVerticalGridLines						= true;
				PaintPriceMarkers							= true;
				ScaleJustification							= NinjaTrader.Gui.Chart.ScaleJustification.Right;
				//Disable this property if your indicator requires custom values that cumulate with each new market data event. 
				//See Help Guide for additional information.
				IsSuspendedWhileInactive					= true;

				Range1	= 6;
				Range2	= 8;
				Range3	= 10;
				Range4	= 12;
				
				ShowST = true ;
				ShowMT = true ;
				
				BandOpacity = 50 ;

				AddPlot(Brushes.Transparent, "MM1");
				AddPlot(Brushes.Transparent, "MM2");
				AddPlot(Brushes.Transparent, "MM3");
				AddPlot(Brushes.Transparent, "MM4");
			}
			else if (State == State.Configure)
			{
			}
		}

		System.Windows.Media.Brush color1 = Brushes.White ;
		System.Windows.Media.Brush color2 = Brushes.DeepSkyBlue ;
		System.Windows.Media.Brush color3 = Brushes.DimGray ;
		System.Windows.Media.Brush color4 = Brushes.Blue ;
		
		double hh1 = 0 ;
		double ll1 = 0 ;
		
		double hh2 = 0 ;
		double ll2 = 0 ;

		double hh3 = 0 ;
		double ll3 = 0 ;

		double hh4 = 0 ;
		double ll4 = 0 ;

		int sregnum = 0 ;
		int mregnum = 0 ;

		DateTime start_time1 ;
		DateTime start_time2 ;
		
		System.Windows.Media.Brush pcolor1 = Brushes.Transparent ;
		System.Windows.Media.Brush pcolor2 = Brushes.Transparent ;
		
		protected override void OnBarUpdate()
		{
			if( CurrentBar == 0 ) { start_time1 = Time[0] ; start_time2 = Time[0] ; }
			
			if( High[0] >= hh1 )			{ hh1 = High[0] ; }
			if( ll1 < ( hh1 - Range1 ))		{ ll1 = hh1 - Range1 ; }
			if( Low[0] <= ll1 )				{ ll1 = Low[0] ; }
			if( hh1 > ( ll1 + Range1 ) )	{ hh1 = ll1 + Range1 ; }
			MM1[0] = ( hh1 + ll1 ) / 2 ; ;
			
			if( High[0] >= hh2 )			{ hh2 = High[0] ; }
			if( ll2 < ( hh2 - Range2 )	)	{ ll2 = hh2 - Range2 ; }
			if( Low[0] <= ll2 )				{ ll2 = Low[0] ; }
			if( hh2 > ( ll2 + Range2 ) )	{ hh2 = ll2 + Range2 ; }
			MM2[0] = ( hh2 + ll2 ) / 2 ;

			if( High[0] >= hh3 )			{ hh3 = High[0] ; }
			if( ll3 < ( hh3 - Range3 )	)	{ ll3 = hh3 - Range3 ; }
			if( Low[0] <= ll3 )				{ ll3 = Low[0] ; }
			if( hh3 > ( ll3 + Range3 ) )	{ hh3 = ll3 + Range3 ; }
			MM3[0] = ( hh3 + ll3 ) / 2 ;

			if( High[0] >= hh4 )			{ hh4 = High[0] ; }
			if( ll4 < ( hh4 - Range4 )	)	{ ll4 = hh4 - Range4 ; }
			if( Low[0] <= ll4 )				{ ll4 = Low[0] ; }
			if( hh4 > ( ll4 + Range4 ) )	{ hh4 = ll4 + Range4 ; }
			MM4[0] = ( hh4 + ll4 ) / 2 ;

			if( CurrentBar < 5 ) { return ; }
			
			System.Windows.Media.Brush mycolor1 = MM1[0] > MM2[0] ? color1 : color2 ;
			System.Windows.Media.Brush mycolor2 = MM1[0] > MM3[0] ? color3 : color4 ;
			
			if( pcolor1 != mycolor1 )
			{
				start_time1 = Time[0] ;
				sregnum++ ;
			}
			pcolor1 = mycolor1 ;
			
			if( pcolor2 != mycolor2 )
			{
				start_time2 = Time[0] ;
				mregnum++ ;
			}
			pcolor2 = mycolor2 ;

			if( ShowST ) { Draw.Region(this,"SREG"+sregnum,start_time1,Time[0],MM1,MM2,null,mycolor1,BandOpacity); }
			if( ShowMT ) { Draw.Region(this,"MREG"+mregnum,start_time2,Time[0],MM3,MM4,null,mycolor2,BandOpacity); }
		}

		#region Properties
		[NinjaScriptProperty]
		[Range(1, int.MaxValue)]
		[Display(Name="Range1", Description="(Short term) Range1 in Points", Order=1, GroupName="Parameters")]
		public int Range1
		{ get; set; }

		[NinjaScriptProperty]
		[Range(1, int.MaxValue)]
		[Display(Name="Range2", Description="(Short term) Range2 in Points", Order=2, GroupName="Parameters")]
		public int Range2
		{ get; set; }

		[NinjaScriptProperty]
		[Range(1, int.MaxValue)]
		[Display(Name="Range3", Description="(Medium term) Range3 in Points", Order=3, GroupName="Parameters")]
		public int Range3
		{ get; set; }

		[NinjaScriptProperty]
		[Range(1, int.MaxValue)]
		[Display(Name="Range4", Description="(Medium term) Range4 in Points", Order=4, GroupName="Parameters")]
		public int Range4
		{ get; set; }

		[NinjaScriptProperty]
		[Display(Name="Show short term band", Description="Show or hide the short term band.", Order=5, GroupName="Parameters")]
		public bool ShowST
		{ get; set; }

		[NinjaScriptProperty]
		[Display(Name="Show medium term band", Description="Show or hide the medium term band.", Order=6, GroupName="Parameters")]
		public bool ShowMT
		{ get; set; }
		
		[NinjaScriptProperty]
		[Range(0, 100)]
		[Display(Name="Band opacity", Description="Band Opacity (0-100)", Order=7, GroupName="Parameters")]
		public int BandOpacity
		{ get; set; }

		[Browsable(false)]
		[XmlIgnore]
		public Series<double> MM1
		{
			get { return Values[0]; }
		}

		[Browsable(false)]
		[XmlIgnore]
		public Series<double> MM2
		{
			get { return Values[1]; }
		}

		[Browsable(false)]
		[XmlIgnore]
		public Series<double> MM3
		{
			get { return Values[2]; }
		}

		[Browsable(false)]
		[XmlIgnore]
		public Series<double> MM4
		{
			get { return Values[3]; }
		}

		#endregion

	}
}

#region NinjaScript generated code. Neither change nor remove.

namespace NinjaTrader.NinjaScript.Indicators
{
	public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase
	{
		private _Merlin_2Clouds[] cache_Merlin_2Clouds;
		public _Merlin_2Clouds _Merlin_2Clouds(int range1, int range2, int range3, int range4, bool showST, bool showMT, int bandOpacity)
		{
			return _Merlin_2Clouds(Input, range1, range2, range3, range4, showST, showMT, bandOpacity);
		}

		public _Merlin_2Clouds _Merlin_2Clouds(ISeries<double> input, int range1, int range2, int range3, int range4, bool showST, bool showMT, int bandOpacity)
		{
			if (cache_Merlin_2Clouds != null)
				for (int idx = 0; idx < cache_Merlin_2Clouds.Length; idx++)
					if (cache_Merlin_2Clouds[idx] != null && cache_Merlin_2Clouds[idx].Range1 == range1 && cache_Merlin_2Clouds[idx].Range2 == range2 && cache_Merlin_2Clouds[idx].Range3 == range3 && cache_Merlin_2Clouds[idx].Range4 == range4 && cache_Merlin_2Clouds[idx].ShowST == showST && cache_Merlin_2Clouds[idx].ShowMT == showMT && cache_Merlin_2Clouds[idx].BandOpacity == bandOpacity && cache_Merlin_2Clouds[idx].EqualsInput(input))
						return cache_Merlin_2Clouds[idx];
			return CacheIndicator<_Merlin_2Clouds>(new _Merlin_2Clouds(){ Range1 = range1, Range2 = range2, Range3 = range3, Range4 = range4, ShowST = showST, ShowMT = showMT, BandOpacity = bandOpacity }, input, ref cache_Merlin_2Clouds);
		}
	}
}

namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns
{
	public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase
	{
		public Indicators._Merlin_2Clouds _Merlin_2Clouds(int range1, int range2, int range3, int range4, bool showST, bool showMT, int bandOpacity)
		{
			return indicator._Merlin_2Clouds(Input, range1, range2, range3, range4, showST, showMT, bandOpacity);
		}

		public Indicators._Merlin_2Clouds _Merlin_2Clouds(ISeries<double> input , int range1, int range2, int range3, int range4, bool showST, bool showMT, int bandOpacity)
		{
			return indicator._Merlin_2Clouds(input, range1, range2, range3, range4, showST, showMT, bandOpacity);
		}
	}
}

namespace NinjaTrader.NinjaScript.Strategies
{
	public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase
	{
		public Indicators._Merlin_2Clouds _Merlin_2Clouds(int range1, int range2, int range3, int range4, bool showST, bool showMT, int bandOpacity)
		{
			return indicator._Merlin_2Clouds(Input, range1, range2, range3, range4, showST, showMT, bandOpacity);
		}

		public Indicators._Merlin_2Clouds _Merlin_2Clouds(ISeries<double> input , int range1, int range2, int range3, int range4, bool showST, bool showMT, int bandOpacity)
		{
			return indicator._Merlin_2Clouds(input, range1, range2, range3, range4, showST, showMT, bandOpacity);
		}
	}
}

#endregion

At the time I write this post, this is a screenshot of what you should see on today's chart if you set your bars to 0.3 pt Renko bars on a M2K (Micro Russell 2000) chart.



Once again, don't get too excited, NO INDICATOR alone will make you rich. To make it big you need an ENTIRE ROBUST TRADING SYSTEM.

So if a programmer out there who have Multicharts .NET version and know C#, maybe you can take the C# of the NinjaTrader that seems to work and debug it so that it fits on MC too.

Then we will start to mastermind on he best entries we can find using this indicator.

  #245 (permalink)
 MerlinWorld 
Montreal
 
Posts: 128 since Jan 2013

If you managed to read all 25 pages, you are a saint (or just love drama) but sadly, based on experience as forum admin, I know that very few people get passed the 2-3 first pages ESPECIALLY if those first 3 pages are constant bitching so I create a new thread and posted the code for my 2 Clouds Indicator (for both TradeStation and NinjaTrader).

https://nexusfi.com/psychology-money-management/47679-merlin-2-clouds-indicator-code.html

So if you follow this thread since page 1 good here the link to it, if you don't then you will find it at the top of this

https://nexusfi.com/psychology-money-management/

Hope you like it. Let me know if you can see the indicator lines on your chart.

Merlin

  #246 (permalink)
 
Big Mike's Avatar
 Big Mike 
Manta, Ecuador
Site Administrator
Developer
Swing Trader
 
Experience: Advanced
Platform: Custom solution
Broker: IBKR
Trading: Stocks & Futures
Frequency: Every few days
Duration: Weeks
Posts: 50,399 since Jun 2009
Thanks Given: 33,175
Thanks Received: 101,541


MerlinWorld View Post
Yes I know, I have already a thread talking about this but not everyone has the time nor the interest to hear 25 pages of pickering and bitching to reach the part where I start sharing the code I have and the code I get form other programmers.

Please stop creating duplicate threads. Anything to do with this topic shall remain here in one single thread, everyone can read it or not read it, it's up to them. But we won't split the topic.

Mike

We're here to help: just ask the community or contact our Help Desk

Quick Links: Change your Username or Register as a Vendor
Searching for trading reviews? Review this list
Lifetime Elite Membership: Sign-up for only $149 USD
Exclusive money saving offers from our Site Sponsors: Browse Offers
Report problems with the site: Using the NexusFi changelog thread
Follow me on Twitter Visit my NexusFi Trade Journal
Thanked by:
  #247 (permalink)
 RickW00716 
Richmond Virginia
 
Experience: Intermediate
Platform: Ninja Trader
Trading: ES
Posts: 318 since Feb 2013
Thanks Given: 306
Thanks Received: 163


MerlinWorld View Post
Yes I know, I have already a thread talking about this but not everyone has the time nor the interest to hear 25 pages of pickering and bitching to reach the part where I start sharing the code I have and the code I get form other programmers.

If Big Mike or any other admin would be willing to delete the last 24 pages of us arguing then I would post it there but nobody will see it. So before any admin move this page or merge it with the Millionaire in 10 weeks thread, PLEASE wait a couple of days so that the most people will be able to see before it gets lost on page 25 or 26 of an already messy thread.

Before I post the code, you need to understand the logic of this indicator and why I think it's by far the best indicator I've seen and trust me, after 14 years spent on the TradeStation forum which is "Indicator, strategy and backtesting" HEAVEN for any programmer out trade.

First, my 2 clouds indicator does NOT LAG like 99.999% of the other (Price Channel) indicators out there.

Why is that?

It's because indicators are usually based on previous X number of bars back. So if you have a 50 MA on your chart, that Moving Average has is calculated on the previous 50 bars AND THAT... makes it lag.

It's the same with most price channel indicators out there (Keltner, Bollinger Bands, Donchian Channel, etc..). They are all based on previous bars, not mine.

Mine is based on a FIXED PRICE VALUE.

As you can see, the upper and lower bands of the channel stay parallel during all this climb...



Here's another price channel (keltner), noticed how it it smoothly curved. This is caused by making an "average" of previous bars and because of that it lags.



Here's a closer shot of what happens on my price channel.

At the beginning, the channel was blue because we were coming out of a downtrend but look what happened when the price moved back up inside the channel and moved 1 BAR above the upperband...down to the very last tick of that bar... BOOM the 5 pt fixed price of the channel has been crossed and therefore, the whole channel changes color from blue to white and the center line also changed from red to green.



In other words, when the trend changes direction and hits a SPECIFIC FIXED PRICE for that channel, the channel changes color and indicates a trend direction change.

One common line that I heard 100 times throughout my 15 years in this trading business is...

"First..FIND THE TREND and then BUY THE DIPs"

Well when you load this indicator on your charts, the first thing you will notice is how good it is to spot the big trend (when there is one of course). If the market makes a big move that indicator will catch it and fairly early.

So what I did is remove the upper and lower bands of that channel and only kept the red/green center line that I call my Merlin Squared MA.

Then I used 4 of those Squared MA and for now the settings are 6 and 8 pts for the faster TF cloud (light blue and white) and 10 and 12 pts for the slower TF cloud (gray and dark blue).

You end up with this on your 0.2 pt high Renko bar chart.



Now yesterday, Sevak (1 of the programmer working with me at converting this EasyLanguage indicator code) was able to convert it in C# and it seems to be working fine on NinjaTrader (NT8) as you can see... his chart is right smack on the nose because our chart looks the same.



However, when I loaded it into my MultiChart (.NET version) editor, I got all these errors...



Now before you tell me to go with the version of MultiCharts that accept EasyLanguage, you need to understand that both version of MC cost $1,500 each but with my new broker (Amp Futures), you can get the .NET version for free with no monthly fee!

Because I like"FREE STUFF" and knowing that people who are interested in trading but don't have millions to throw away, they will be happy to go with this free MC version however, I will still need some help to convert it and debug it for MC too.

So first, here's the EasyLanguage code for those who have TradeStation or MultiCharts w/EasyLanguage...

 
Code
Input: S_TF(True),X(6),X2(8),M_TF(True),X3(10),X4(12),C1(White),C2(RGB(24,117,231)),C3(DarkGray),C4(DarkBlue);  

variables: HH(0),LL(0),Midline(0),MidColor(0),HH2(0),LL2(0),Midline2(0),MidColor2(0),HH3(0),LL3(0),Midline3(0),MidColor3(0),HH4(0),LL4(0),Midline4(0),MidColor4(0);

If High >= HH then 
HH = high;
		
If LL < (HH - X) then
LL = HH - X;

If Low <= LL then
LL = low;

If HH > (LL + X) then
HH = LL + X;

Midline = (HH + LL)/2;

If High >= HH2 then 
HH2 = high;
		
If LL2 < (HH2 - X2) then
LL2 = HH2 - X2;

If Low <= LL2 then
LL2 = low;

If HH2 > (LL2 + X2) then
HH2 = LL2 + X2;

Midline2 = (HH2 + LL2)/2;

If High >= HH3 then 
HH3 = high;
		
If LL3 < (HH3 - X3) then
LL3 = HH3 - X3;

If Low <= LL3 then
LL3 = low;

If HH3 > (LL3 + X3) then
HH3 = LL3 + X3;

Midline3 = (HH3 + LL3)/2;

If High >= HH4 then 
HH4 = high;
		
If LL4 < (HH4 - X4) then
LL4 = HH4 - X4;

If Low <= LL4 then
LL4 = low;

If HH4 > (LL4 + X4) then
HH4 = LL4 + X4;

Midline4 = (HH4 + LL4)/2;


If Midline > Midline2 then begin
MidColor = C1;
End
Else
If Midline < Midline2 then begin
MidColor = C2;
End;


If Midline >= Midline3 then begin
MidColor2 = C3;
End
Else
If Midline <= Midline3 then begin
MidColor2 = C4;
End;


// Plots

If S_TF = True Then begin
plot1(Midline,"Midline",Midcolor);
Plot2(Midline2,"Midline2",Midcolor);
End;

If M_TF = True Then begin
plot3(Midline3,"Midline3",Midcolor2);
Plot4(Midline4,"Midline4",Midcolor2);
End;

And here's the code for NinjaTrader.


 
Code
#region Using declarations
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using System.Xml.Serialization;
using NinjaTrader.Cbi;
using NinjaTrader.Gui;
using NinjaTrader.Gui.Chart;
using NinjaTrader.Gui.SuperDom;
using NinjaTrader.Gui.Tools;
using NinjaTrader.Data;
using NinjaTrader.NinjaScript;
using NinjaTrader.Core.FloatingPoint;
using NinjaTrader.NinjaScript.DrawingTools;
#endregion

//This namespace holds Indicators in this folder and is required. Do not change it. 
namespace NinjaTrader.NinjaScript.Indicators
{
	public class _Merlin_2Clouds : Indicator
	{
		protected override void OnStateChange()
		{
			if (State == State.SetDefaults)
			{
				Description									= @"Merlin 2 Clouds Indicator";
				Name										= "_Merlin_2Clouds";
				Calculate									= Calculate.OnBarClose;
				IsOverlay									= true;
				DisplayInDataBox							= true;
				DrawOnPricePanel							= true;
				DrawHorizontalGridLines						= true;
				DrawVerticalGridLines						= true;
				PaintPriceMarkers							= true;
				ScaleJustification							= NinjaTrader.Gui.Chart.ScaleJustification.Right;
				//Disable this property if your indicator requires custom values that cumulate with each new market data event. 
				//See Help Guide for additional information.
				IsSuspendedWhileInactive					= true;

				Range1	= 6;
				Range2	= 8;
				Range3	= 10;
				Range4	= 12;
				
				ShowST = true ;
				ShowMT = true ;
				
				BandOpacity = 50 ;

				AddPlot(Brushes.Transparent, "MM1");
				AddPlot(Brushes.Transparent, "MM2");
				AddPlot(Brushes.Transparent, "MM3");
				AddPlot(Brushes.Transparent, "MM4");
			}
			else if (State == State.Configure)
			{
			}
		}

		System.Windows.Media.Brush color1 = Brushes.White ;
		System.Windows.Media.Brush color2 = Brushes.DeepSkyBlue ;
		System.Windows.Media.Brush color3 = Brushes.DimGray ;
		System.Windows.Media.Brush color4 = Brushes.Blue ;
		
		double hh1 = 0 ;
		double ll1 = 0 ;
		
		double hh2 = 0 ;
		double ll2 = 0 ;

		double hh3 = 0 ;
		double ll3 = 0 ;

		double hh4 = 0 ;
		double ll4 = 0 ;

		int sregnum = 0 ;
		int mregnum = 0 ;

		DateTime start_time1 ;
		DateTime start_time2 ;
		
		System.Windows.Media.Brush pcolor1 = Brushes.Transparent ;
		System.Windows.Media.Brush pcolor2 = Brushes.Transparent ;
		
		protected override void OnBarUpdate()
		{
			if( CurrentBar == 0 ) { start_time1 = Time[0] ; start_time2 = Time[0] ; }
			
			if( High[0] >= hh1 )			{ hh1 = High[0] ; }
			if( ll1 < ( hh1 - Range1 ))		{ ll1 = hh1 - Range1 ; }
			if( Low[0] <= ll1 )				{ ll1 = Low[0] ; }
			if( hh1 > ( ll1 + Range1 ) )	{ hh1 = ll1 + Range1 ; }
			MM1[0] = ( hh1 + ll1 ) / 2 ; ;
			
			if( High[0] >= hh2 )			{ hh2 = High[0] ; }
			if( ll2 < ( hh2 - Range2 )	)	{ ll2 = hh2 - Range2 ; }
			if( Low[0] <= ll2 )				{ ll2 = Low[0] ; }
			if( hh2 > ( ll2 + Range2 ) )	{ hh2 = ll2 + Range2 ; }
			MM2[0] = ( hh2 + ll2 ) / 2 ;

			if( High[0] >= hh3 )			{ hh3 = High[0] ; }
			if( ll3 < ( hh3 - Range3 )	)	{ ll3 = hh3 - Range3 ; }
			if( Low[0] <= ll3 )				{ ll3 = Low[0] ; }
			if( hh3 > ( ll3 + Range3 ) )	{ hh3 = ll3 + Range3 ; }
			MM3[0] = ( hh3 + ll3 ) / 2 ;

			if( High[0] >= hh4 )			{ hh4 = High[0] ; }
			if( ll4 < ( hh4 - Range4 )	)	{ ll4 = hh4 - Range4 ; }
			if( Low[0] <= ll4 )				{ ll4 = Low[0] ; }
			if( hh4 > ( ll4 + Range4 ) )	{ hh4 = ll4 + Range4 ; }
			MM4[0] = ( hh4 + ll4 ) / 2 ;

			if( CurrentBar < 5 ) { return ; }
			
			System.Windows.Media.Brush mycolor1 = MM1[0] > MM2[0] ? color1 : color2 ;
			System.Windows.Media.Brush mycolor2 = MM1[0] > MM3[0] ? color3 : color4 ;
			
			if( pcolor1 != mycolor1 )
			{
				start_time1 = Time[0] ;
				sregnum++ ;
			}
			pcolor1 = mycolor1 ;
			
			if( pcolor2 != mycolor2 )
			{
				start_time2 = Time[0] ;
				mregnum++ ;
			}
			pcolor2 = mycolor2 ;

			if( ShowST ) { Draw.Region(this,"SREG"+sregnum,start_time1,Time[0],MM1,MM2,null,mycolor1,BandOpacity); }
			if( ShowMT ) { Draw.Region(this,"MREG"+mregnum,start_time2,Time[0],MM3,MM4,null,mycolor2,BandOpacity); }
		}

		#region Properties
		[NinjaScriptProperty]
		[Range(1, int.MaxValue)]
		[Display(Name="Range1", Description="(Short term) Range1 in Points", Order=1, GroupName="Parameters")]
		public int Range1
		{ get; set; }

		[NinjaScriptProperty]
		[Range(1, int.MaxValue)]
		[Display(Name="Range2", Description="(Short term) Range2 in Points", Order=2, GroupName="Parameters")]
		public int Range2
		{ get; set; }

		[NinjaScriptProperty]
		[Range(1, int.MaxValue)]
		[Display(Name="Range3", Description="(Medium term) Range3 in Points", Order=3, GroupName="Parameters")]
		public int Range3
		{ get; set; }

		[NinjaScriptProperty]
		[Range(1, int.MaxValue)]
		[Display(Name="Range4", Description="(Medium term) Range4 in Points", Order=4, GroupName="Parameters")]
		public int Range4
		{ get; set; }

		[NinjaScriptProperty]
		[Display(Name="Show short term band", Description="Show or hide the short term band.", Order=5, GroupName="Parameters")]
		public bool ShowST
		{ get; set; }

		[NinjaScriptProperty]
		[Display(Name="Show medium term band", Description="Show or hide the medium term band.", Order=6, GroupName="Parameters")]
		public bool ShowMT
		{ get; set; }
		
		[NinjaScriptProperty]
		[Range(0, 100)]
		[Display(Name="Band opacity", Description="Band Opacity (0-100)", Order=7, GroupName="Parameters")]
		public int BandOpacity
		{ get; set; }

		[Browsable(false)]
		[XmlIgnore]
		public Series<double> MM1
		{
			get { return Values[0]; }
		}

		[Browsable(false)]
		[XmlIgnore]
		public Series<double> MM2
		{
			get { return Values[1]; }
		}

		[Browsable(false)]
		[XmlIgnore]
		public Series<double> MM3
		{
			get { return Values[2]; }
		}

		[Browsable(false)]
		[XmlIgnore]
		public Series<double> MM4
		{
			get { return Values[3]; }
		}

		#endregion

	}
}

#region NinjaScript generated code. Neither change nor remove.

namespace NinjaTrader.NinjaScript.Indicators
{
	public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase
	{
		private _Merlin_2Clouds[] cache_Merlin_2Clouds;
		public _Merlin_2Clouds _Merlin_2Clouds(int range1, int range2, int range3, int range4, bool showST, bool showMT, int bandOpacity)
		{
			return _Merlin_2Clouds(Input, range1, range2, range3, range4, showST, showMT, bandOpacity);
		}

		public _Merlin_2Clouds _Merlin_2Clouds(ISeries<double> input, int range1, int range2, int range3, int range4, bool showST, bool showMT, int bandOpacity)
		{
			if (cache_Merlin_2Clouds != null)
				for (int idx = 0; idx < cache_Merlin_2Clouds.Length; idx++)
					if (cache_Merlin_2Clouds[idx] != null && cache_Merlin_2Clouds[idx].Range1 == range1 && cache_Merlin_2Clouds[idx].Range2 == range2 && cache_Merlin_2Clouds[idx].Range3 == range3 && cache_Merlin_2Clouds[idx].Range4 == range4 && cache_Merlin_2Clouds[idx].ShowST == showST && cache_Merlin_2Clouds[idx].ShowMT == showMT && cache_Merlin_2Clouds[idx].BandOpacity == bandOpacity && cache_Merlin_2Clouds[idx].EqualsInput(input))
						return cache_Merlin_2Clouds[idx];
			return CacheIndicator<_Merlin_2Clouds>(new _Merlin_2Clouds(){ Range1 = range1, Range2 = range2, Range3 = range3, Range4 = range4, ShowST = showST, ShowMT = showMT, BandOpacity = bandOpacity }, input, ref cache_Merlin_2Clouds);
		}
	}
}

namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns
{
	public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase
	{
		public Indicators._Merlin_2Clouds _Merlin_2Clouds(int range1, int range2, int range3, int range4, bool showST, bool showMT, int bandOpacity)
		{
			return indicator._Merlin_2Clouds(Input, range1, range2, range3, range4, showST, showMT, bandOpacity);
		}

		public Indicators._Merlin_2Clouds _Merlin_2Clouds(ISeries<double> input , int range1, int range2, int range3, int range4, bool showST, bool showMT, int bandOpacity)
		{
			return indicator._Merlin_2Clouds(input, range1, range2, range3, range4, showST, showMT, bandOpacity);
		}
	}
}

namespace NinjaTrader.NinjaScript.Strategies
{
	public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase
	{
		public Indicators._Merlin_2Clouds _Merlin_2Clouds(int range1, int range2, int range3, int range4, bool showST, bool showMT, int bandOpacity)
		{
			return indicator._Merlin_2Clouds(Input, range1, range2, range3, range4, showST, showMT, bandOpacity);
		}

		public Indicators._Merlin_2Clouds _Merlin_2Clouds(ISeries<double> input , int range1, int range2, int range3, int range4, bool showST, bool showMT, int bandOpacity)
		{
			return indicator._Merlin_2Clouds(input, range1, range2, range3, range4, showST, showMT, bandOpacity);
		}
	}
}

#endregion

At the time I write this post, this is a screenshot of what you should see on today's chart if you set your bars to 0.3 pt Renko bars on a M2K (Micro Russell 2000) chart.



Once again, don't get too excited, NO INDICATOR alone will make you rich. To make it big you need an ENTIRE ROBUST TRADING SYSTEM.

So if a programmer out there who have Multicharts .NET version and know C#, maybe you can take the C# of the NinjaTrader that seems to work and debug it so that it fits on MC too.

Then we will start to mastermind on he best entries we can find using this indicator.

Do you plan on posting the Ninjatrader 8 indicator for us ninja 8 users to test?

  #248 (permalink)
 
cejstrup's Avatar
 cejstrup 
Denmark
 
Experience: Intermediate
Platform: NinjaTrader
Trading: CL
Posts: 98 since Jan 2014
Thanks Given: 1,183
Thanks Received: 160


RickW00716 View Post
Do you plan on posting the Ninjatrader 8 indicator for us ninja 8 users to test?

Code is in the post you just quoted

To succeed in trading you need to think like the minority ,so you won't end up like the majority
  #249 (permalink)
 RickW00716 
Richmond Virginia
 
Experience: Intermediate
Platform: Ninja Trader
Trading: ES
Posts: 318 since Feb 2013
Thanks Given: 306
Thanks Received: 163


cejstrup View Post
Code is in the post you just quoted

Yes, I noticed that but if the indicator has already been created, I was wondering if it would be posted to save us all the time re-creating it.

Thanked by:
  #250 (permalink)
 
cejstrup's Avatar
 cejstrup 
Denmark
 
Experience: Intermediate
Platform: NinjaTrader
Trading: CL
Posts: 98 since Jan 2014
Thanks Given: 1,183
Thanks Received: 160



RickW00716 View Post
Yes, I noticed that but if the indicator has already been created, I was wondering if it would be posted to save us all the time re-creating it.

Copy the text into a file. Rename it so it ends in .cs. put the file in the nt8/bin/custom/indicators folder.


In NT open a ninjascript editor and click on the file in the ninjascript explorer. Then click compile. Done.

To succeed in trading you need to think like the minority ,so you won't end up like the majority

Closed Thread



Last Updated on August 5, 2019


© 2024 NexusFi™, s.a., All Rights Reserved.
Av Ricardo J. Alfaro, Century Tower, Panama City, Panama, Ph: +507 833-9432 (Panama and Intl), +1 888-312-3001 (USA and Canada)
All information is for educational use only and is not investment advice. There is a substantial risk of loss in trading commodity futures, stocks, options and foreign exchange products. Past performance is not indicative of future results.
About Us - Contact Us - Site Rules, Acceptable Use, and Terms and Conditions - Privacy Policy - Downloads - Top
no new posts