AHG - Profitable Strategy for Struggling Traders

Discussion in 'Journals' started by Anekdoten, Jul 19, 2007.

Thread Status:
Not open for further replies.
  1. Forum is up again, link should work now...
     
    #5801     Jan 3, 2008
  2. Jaxon

    Jaxon

    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
     
    #5802     Jan 3, 2008
  3. jychiu

    jychiu

    For unknown reason, the link disappeared. See the attached chart.
     
    #5803     Jan 3, 2008
  4. 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...
     
    #5804     Jan 3, 2008
  5. Solja

    Solja

    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!
     
    #5805     Jan 3, 2008
  6. Jaxon

    Jaxon

    camel pattern...
     
    #5806     Jan 3, 2008
  7. AHG Chat log

    ....in word format with highlighting for anek

    comments?
     
    #5807     Jan 3, 2008
  8. jack411

    jack411

    Brutus,

    I'm 100% heterosexual. But if you keep things like this up I'm going to make sweet love to you :eek:

    :D

    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
     
    #5808     Jan 3, 2008
  9. bwfking

    bwfking

    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..
     
    #5809     Jan 3, 2008
  10. 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
    
    	}
    }
    
    
     
    #5810     Jan 4, 2008
Thread Status:
Not open for further replies.