Here is the ELD for the Tradestation showme that jychiu coded. (He posted the zip file a few pages back) Inputs: {BuyColor/SellColor is the color code for buy/sell signal, Magicstick is one tick below the trigger price 0.25 for ES/NQ, 0.1 for ER2} BuyColor(Cyan), SellColor(Magenta), Magictick(0.25); If High>High[1] and Low>Low[1] and Low[1]>=Low[2] and Low[2]<=Low[3] and Low[3]<=Low[4] Then Begin {chiu change plot1(low) to plot1(High[1]+Magictick),Low[2]<Low[3] to Low[2]<=Low[3] } Plot1(High[1]+Magictick,"buyp",BuyColor); Alert("3BR Buy"); End; If Low<Low[1] and High<High[1] and High[1]<=High[2] and High[2]>=High[3] and High[3]>=High[4] Then Begin {chiu change plot1(High) to plot1(Low[1])-Magictick, High[2]>High[3] to High[2]>=High[3]} Plot2(Low[1]-Magictick,"sellp",SellColor); Alert("3BR Sell"); End; ---------------------------------- He does a neat thing: He marks the entry point at the exact point on the bar where the magic tic occurs. That is very cool, but I don't want the mark messing up my charts. I want it above the bar for sell signals, and below the bar for buy signals. So all I did was change where the showme thing is located, and I added the ability to move it varying distances from the top (or bottom) of the bar. So I added the line: Increment(1); as an input, inserted below his "Magictick" And I changed the plot1 command to: Plot1(LOW -Increment,"buyp",BuyColor); And I changed the plot2 command to: Plot2(HIGH +Increment,"sellp",SellColor); All that does is puts the showme dot or cross either above or below the signal bar. Plus, I can adjust the number of tics it sits above or below the bar. I also changed to colors to red (for sell) and green. That's all! Will post a chart later. Also, it looks like I added some extra logic for the bearish 3BR. Might produce more signals. I will check
Hi guys, working on trading plan and came across one of my old cheat sheets... posting for anyone who has use for it... needs to be marked up for AHG (Fastone capture should work well) trade well, be well...
Thank you for the chart patterns, they are fine. I am a new reader of this admirable journal, now on page 257. When I read a longer story, I always check the last page!
Brutus, I'm 100% heterosexual. But if you keep things like this up I'm going to make sweet love to you :eek: Thanks man! I appreciate you posting the logs. The Anek highlights were are an awesome touch too! I'm sure the others who can't be in the chat room during the day appreciate it as well. Thanks again
Happy New Year All... Up to page 130 and keeping tabs on new posts for 1month. Have alot of time during mornings/day...would love to get in on chat room if possible... assistance would be greatly appreciated..... you guys are doing a great service and I am personally very appreciative...Thx Anek..
ME code for Sierra users. Lot's of commented code, used for debugging. Enjoy. It also has a volume counter. Code: SCSFExport scsf_EMotion(SCStudyGraphRef sg) { // Section 1 - Set the configuration variables SCString Buffer; if (sg.SetDefaults) // This section only run once upon adding an instance of the study to a chart { // Set the configuration and defaults // Please see 'scsf_MovingAverageExample1' for comments on 'sg.SetDefaults'. sg.GraphName = "Market E-Motion"; sg.StudyDescription = "Market E-Motion: High, Low and midpoints of the day."; sg.CalculationPrecedence = LOW_PREC_LEVEL; sg.AutoLoop = 0; // Enable auto-looping sg.UpdateAlways = 0; // Set this study to update always sg.FreeDLL = 1; // must be set to zero, it makes calling the function faster // Set the region to draw the graph in. Region zero is the main // price graph region. sg.GraphRegion = 0; // Set the name of the first subgraph sg.Subgraph[0].Name = "High"; // Set the color and style of the graph line. If these are not set // the default will be used. sg.Subgraph[0].PrimaryColor = RGB(255,0,0); // Red sg.Subgraph[0].DrawStyle = DRAWSTYLE_LINE; sg.Subgraph[0].Caption = CAPTION_VALUE; sg.Subgraph[1].Name = "Low"; sg.Subgraph[1].PrimaryColor = RGB(0,255,0); // Green sg.Subgraph[1].DrawStyle = DRAWSTYLE_LINE; sg.Subgraph[1].Caption = CAPTION_VALUE; sg.Subgraph[2].Name = "Mid"; sg.Subgraph[2].PrimaryColor = RGB(128,0,0); // Dark Red sg.Subgraph[2].SecondaryColor = RGB(0,128,0); // Dark Green sg.Subgraph[2].DrawStyle = DRAWSTYLE_LINE; sg.Subgraph[2].Caption = CAPTION_VALUE; sg.Subgraph[2].SecondaryColorUsed = 1; // true sg.Subgraph[3].Name = "Mid+"; sg.Subgraph[3].PrimaryColor = RGB(128,0,0); // Dark Red sg.Subgraph[3].SecondaryColor = RGB(0,128,0); // Dark Green sg.Subgraph[3].DrawStyle = DRAWSTYLE_LINE; sg.Subgraph[3].Caption = CAPTION_VALUE; sg.Subgraph[3].SecondaryColorUsed = 1; // true sg.Subgraph[4].Name = "Mid-"; sg.Subgraph[4].PrimaryColor = RGB(128,0,0); // Dark Red sg.Subgraph[4].SecondaryColor = RGB(0,128,0); // Dark Green sg.Subgraph[4].DrawStyle = DRAWSTYLE_LINE; sg.Subgraph[4].Caption = CAPTION_VALUE; sg.Subgraph[4].SecondaryColorUsed = 1; // true // Must return before doing any data processing if sg.SetDefaults is set return; } // Section 2 - Do data processing // Everything below here is run on every chart update or when the chart is // reloaded. if (sg.Symbol.CompareNoCase("ER2", 3) == 0) sg.ValueFormat = 1; if (sg.Symbol.CompareNoCase("YM", 2) == 0) sg.ValueFormat = 0; if (sg.Symbol.CompareNoCase("EUR", 3) == 0) sg.ValueFormat = 4; //Buffer.Format("Start %d: %s", sg.Symbol.CompareNoCase("YM", 2), sg.Symbol); //sg.AddMessageToLog(Buffer, 0); // Get the inputs //int InMALength = sg.Input[0].GetInt(); // Input 0 - "Length" //sg.Subgraph[0].Name.Format("Volume: %1.0f", sg.BaseDataIn[SC_VOLUME][sg.ArraySize-1]); sg.GraphName.Format("Volume: %1.0f", sg.BaseDataIn[SC_VOLUME][sg.ArraySize-1]); // Set the index of the first array element to begin drawing at. // Setting the variable sg.DataStartIndex ensures that we start far enough // from the beginning of the array to create valid plots. //sg.DataStartIndex = InMALength - 1; // Calculate a simple moving average for the input array // InMALength is 30 by default. Therefore, the 1st data element plotted begins with element // 29 (InMALength - 1). If there are 1000 bars in the chart, then the last data element // plotted begins with element 970 (999 - (InMALength - 1)) and goes to element 999. // Don't do anything until we have enough bars for calculating our average. //if (sg.CurrentIndex < InMALength - 1) return; // Add together the closing prices over the length for the prior bars //float Sum = 0; float MID = 0; float LOW = 0; float HIGH = 0; int DATE = 0; LOW = 5000000; //sg.BaseDataIn[SC_LOW][1]; HIGH = 0; //sg.BaseDataIn[SC_HIGH][1]; //Buffer.Format("Size %d", sg.ArraySize); //sg.AddMessageToLog(Buffer, 0); //Buffer.Format("Start %s", sg.Symbol); //sg.AddMessageToLog(Buffer, 0); for (int i = 0; i <= sg.ArraySize-1; i++) { //Buffer.Format("HIGH %f", HIGH); //sg.AddMessageToLog(Buffer, 0); //Buffer.Format("LOW %f", LOW); //sg.AddMessageToLog(Buffer, 0); if (sg.BaseDateTimeIn.DateAt(i) != DATE) { LOW = 5000000; //sg.BaseDataIn[SC_LOW][1]; HIGH = 0; //sg.BaseDataIn[SC_HIGH][1]; DATE = sg.BaseDateTimeIn.DateAt(i); } if (sg.BaseDataIn[SC_LOW][i] < LOW) LOW = sg.BaseDataIn[SC_LOW][i]; if (sg.BaseDataIn[SC_HIGH][i] > HIGH) HIGH = sg.BaseDataIn[SC_HIGH][i]; } //Buffer.Format("Size %d",sg.ArraySize); //sg.AddMessageToLog(Buffer, 0); //Buffer.Format("HIGH %f", HIGH); //sg.AddMessageToLog(Buffer, 0); //Buffer.Format("LOW %f", LOW); //sg.AddMessageToLog(Buffer, 0); //Buffer.Format("Start %d: %s", sg.Symbol.CompareNoCase("ES", 2), sg.Symbol); //sg.AddMessageToLog(Buffer, 0); for (int i = sg.UpdateStartIndex+1; i <= sg.ArraySize; i++) { //Buffer.Format("HIGH %f", sg.BaseDataIn[SC_HIGH][i]); //sg.AddMessageToLog(Buffer, 0); //Buffer.Format("LOW %f", sg.BaseDataIn[SC_LOW][i]); //sg.AddMessageToLog(Buffer, 0); if (sg.BaseDateTimeIn.DateAt(i) != DATE) { LOW = 5000000; //sg.BaseDataIn[SC_LOW][1]; HIGH = 0; //sg.BaseDataIn[SC_HIGH][1]; DATE = sg.BaseDateTimeIn.DateAt(i); } if (sg.BaseDataIn[SC_LOW][i] < LOW) LOW = sg.BaseDataIn[SC_LOW][i]; if (sg.BaseDataIn[SC_HIGH][i] > HIGH) HIGH = sg.BaseDataIn[SC_HIGH][i]; sg.Subgraph[0][i] = HIGH; sg.Subgraph[1][i] = LOW; MID = (LOW+HIGH)/2; sg.Subgraph[2][i] = MID; if (sg.BaseDataIn[SC_LAST][i] < MID) sg.Subgraph[2].DataColor[i] = sg.Subgraph[2].PrimaryColor; // Dark Red else sg.Subgraph[2].DataColor[i] = sg.Subgraph[2].SecondaryColor; //Dark Green sg.Subgraph[3][i] = (MID+HIGH)/2; if (sg.BaseDataIn[SC_LAST][i] < (MID+HIGH)/2) sg.Subgraph[3].DataColor[i] = sg.Subgraph[3].PrimaryColor; // Dark Red else sg.Subgraph[3].DataColor[i] = sg.Subgraph[3].SecondaryColor; //Dark Green sg.Subgraph[4][i] = (MID+LOW)/2; if (sg.BaseDataIn[SC_LAST][i] < (MID+LOW)/2) sg.Subgraph[4].DataColor[i] = sg.Subgraph[4].PrimaryColor; // Dark Red else sg.Subgraph[4].DataColor[i] = sg.Subgraph[4].SecondaryColor; //Dark Green } }