NexusFi: Find Your Edge


Home Menu

 





Is it possible to Get graphics/Windows control in SC/ACSIL?


Discussion in Sierra Chart

Updated
    1. trending_up 2,863 views
    2. thumb_up 0 thanks given
    3. group 1 followers
    1. forum 1 posts
    2. attach_file 3 attachments




 
Search this Thread
  #1 (permalink)
 ejtrader 
Portland, OR
 
Experience: Intermediate
Platform: Sierra Chart
Trading: ES
Posts: 269 since Jan 2011
Thanks Given: 327
Thanks Received: 180

Hello - Need some help/guidance/clarification dealing with better graphics control in Sierra platform for generic graphics related tasks.

In Ninja - One can have better control over plots using plot(Graphics graphics, Rectangle bounds, double min, double max) etc and can use various brushes etc to draw text/rectangles etc with ease. I am trying to mimic something similar in Sierra but so far stuck with this task.

Has anyone done any work in this space in Sierra? Can any one review this code and suggest any options?

Wondering if anyone has done any work with Windows GDI so that I can convert portion of the code from Ninja to Sierra ( Graphics graphics, Rectangle bounds, double min, double max) - https://www.sierrachart.com/supportboard/showthread.php?t=32647

PS: Have opened a thread in Sierra forum as well - https://www.sierrachart.com/supportboard/showpost.php?p=233188&postcount=12

Code:
 
Code
	if (sc.SetDefaults)
	{
		sc.GraphName = "UseTool";
		sc.StudyDescription = "UseTool";
		sc.GraphRegion = 0;
		sc.FreeDLL = 1;
		
		sc.AutoLoop = 0; 

		return;
	}

	if (sc.UpdateStartIndex == 0)
	{
		sc.NumFillSpaceBars = 20;
		sc.PreserveFillSpace = true;
		sc.UpdateAlways=1;
	}
	
        static const int UniqueLineNumber = (sc.ChartNumber+sc.StudyGraphInstanceID)*1000;

	s_UseTool Tool;
	Tool.Clear();

	Tool.ChartNumber = sc.ChartNumber;
	Tool.Region = sc.GraphRegion;
	Tool.DrawUnderneathMainGraph=1;
	Tool.TextAlignment = DT_RIGHT | DT_VCENTER;

	int BarIndex=sc.IndexOfLastVisibleBar;
	float BarValue=sc.Close[BarIndex];
	SCString ValueText=sc.FormatGraphValue(BarValue,sc.GetValueFormat());
	int offset=(int)(sc.NumFillSpaceBars/3);
	int lineStartIdx=BarIndex;
	int lineEndIdx=BarIndex+offset;
	int rectStartIdx=lineEndIdx;
	int rectEndIdx=rectStartIdx+ValueText.GetLength();  // Is this the correct way to get the string length? Based on the image - it doesn't look like
	int textStartIdx=rectStartIdx;

	Tool.Clear();
	Tool.Tool=DRAWING_LINE;
	Tool.TextAlignment=DT_RIGHT;
	Tool.LineNumber =  UniqueLineNumber + 1;
	Tool.BeginIndex=lineStartIdx;
	Tool.EndIndex=lineEndIdx;
	Tool.BeginValue=BarValue;
	Tool.EndValue=BarValue;
	Tool.Color = RGB(255,0,0);
	Tool.LineWidth = 1;
	Tool.AddMethod = UTAM_ADD_OR_ADJUST;
	sc.UseTool(Tool);

	Tool.Clear();
	Tool.ChartNumber = sc.ChartNumber;
	Tool.Tool = TOOL_RECTANGLE_HIGHLIGHT;
	Tool.LineNumber = UniqueLineNumber + 2;
	Tool.BeginIndex=rectStartIdx;
	Tool.EndIndex=rectEndIdx;
	// Ideally Begin/End Values for Rectangle should be calculated based on the Text Real Height - which is dependent on the font-size
	// But Don't know how to calculate this in SC..
	Tool.BeginValue=BarValue+(sc.TickSize/2);  // there should be an intelligent way to handle this based on font size and should be independent of the scaling/instrument
	Tool.EndValue=BarValue-(sc.TickSize/2);   // there should be an intelligent way to handle this based on font size and should be independent of the scaling/instrument
	Tool.Color = RGB(255,0,0); // Red
	Tool.LineWidth = 1;
	Tool.SecondaryColor = RGB(0,255,0); // Green
	Tool.TransparencyLevel = 90;
	Tool.AddMethod = UTAM_ADD_OR_ADJUST;
	sc.UseTool(Tool);

	Tool.Clear();
	Tool.DrawingType = DRAWING_TEXT;
	Tool.LineNumber = UniqueLineNumber + 3;
	//Tool.UseRelativeValue = true;
	Tool.Color = RGB(255,255,255);  //WHITE
	Tool.TextAlignment = DT_RIGHT | DT_VCENTER;
	Tool.FontBackColor = sc.ChartBackgroundColor; //   GREEN;
	Tool.FontBold = false;

	Tool.Text = ValueText;
	Tool.BeginValue = BarValue;
	//Tool.BeginIndex=textStartIdx;  // Don't know why can't get this to work instead of BeginDateTime
	Tool.BeginDateTime=sc.BaseDateTimeIn[BarIndex+10];  // Would be nice to get this into BarIndex mode rather than time
	Tool.FontSize = 10;
	Tool.AddMethod = UTAM_ADD_OR_ADJUST;
	Tool.ReverseTextColor = false;
	sc.UseTool(Tool);


Attached Thumbnails
Click image for larger version

Name:	SC_Text_rectangle_1.png
Views:	362
Size:	23.5 KB
ID:	102276   Click image for larger version

Name:	SC_Text_rectangle_2.png
Views:	364
Size:	22.8 KB
ID:	102277   Click image for larger version

Name:	Ninja_Text_In_Rectangles.png
Views:	332
Size:	7.7 KB
ID:	102278  
Started this thread Reply With Quote

Can you help answer these questions
from other members on NexusFi?
Fed Hike Odds at 57% After Warsh: England Surges 12.9%, …
Prediction Markets & Event Contracts
Iran Talks Final Stages -- Two VLCCs Exit Hormuz, Record …
Traders Hideout
US Prop Firms Race Inside the CFTC Perimeter -- Tradeify …
Funded Trading Evaluation Firms
The June 15 Resolution Trap: Irans Agreed Text Still Pri …
Prediction Markets & Event Contracts
Iran Airspace Contract Surges to 33.5% as Project Freedo …
Prediction Markets & Event Contracts
 
Best Threads (Most Thanked)
in the last 7 days on NexusFi
NexusFi site changelog and issues/problem reporting
13 thanks
Darmok and Jalad at Tanagra
3 thanks
Big Mike in Ecuador
1 thanks
30 Sessions
1 thanks




Last Updated on February 10, 2013


© 2026 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 - Downloads - Top
no new posts