Announcement

Collapse

Looking for a User App or Add-On built by the NinjaTrader community?

Visit NinjaTrader EcoSystem and our free User App Share!

Have a question for the NinjaScript developer community? Open a new thread in our NinjaScript File Sharing Discussion Forum!
See more
See less

Partner 728x90

Collapse

Simpler Program

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Simpler Program

    Hi Guys, I have this code that I'd like to make more efficient. Basically I have 20 instruments referencing the same piece of code. Here is an example for 2 instruments.

    PHP Code:
    if (TFTrendTypes.Balanced == TFtrendType)
        {        
                
    //b. Value area % at bottom        
                    
                
    if (DrawObjects["VH"] != null&&Close[0]>lineValhigh1)
                {
                
    graphics.DrawRectangle(new Pen(Color.White),  bounds.+(bounds.Width/2), bounds.Bottom-5010040);                
                
    graphics.FillRectangle(new SolidBrush(Color.FromArgb(150,Color.Green.R,Color.Green.G,Color.Green.B)), bounds.+(bounds.Width/2)+1bounds.Bottom 499939);                            
                
    graphics.DrawString(abovevalue.ToString("N0")+"%"textFontHugetextBrushStrongbounds.+(bounds.Width/2)-3bounds.Bottom 50stringFormatCenter);        
                }    
                else if (
    DrawObjects["VH"] != null&&Close[0]<lineVallow1)
                {
                
    graphics.DrawRectangle(new Pen(Color.White),  bounds.+(bounds.Width/2), bounds.Bottom-5010040);    
                
    graphics.FillRectangle(new SolidBrush(Color.FromArgb(150,Color.Red.R,Color.Red.G,Color.Red.B)), bounds.+(bounds.Width/2)+1bounds.Bottom 499939);                        
                
    graphics.DrawString(belowvalue.ToString("N0")+"%"textFontHugetextBrushWeakbounds.+(bounds.Width/2)-3bounds.Bottom 50stringFormatCenter);
                }
                
                else if (
    DrawObjects["VH"] != null&&Close[0]>=lineVallow1 && Close[0]<=lineValhigh1)
                    {                
                
    graphics.DrawRectangle(new Pen(Color.White),  bounds.+(bounds.Width/2), bounds.Bottom-5010040);    
                
    graphics.FillRectangle(new SolidBrush(Color.FromArgb(250,Color.Yellow.R,Color.Yellow.G,Color.Yellow.B)), bounds.+(bounds.Width/2)+1bounds.Bottom 499939);                        
                
    graphics.DrawString(balancedvalue.ToString("N0")+"%"textFontHugetextBrushNormalbounds.+(bounds.Width/2)-3bounds.Bottom 50stringFormatCenter);
                    }                
        }        
                
        if (
    ESTrendTypes.Balanced == EStrendType)
        {        
                
    //b. Value area % at bottom        
                    
                
    if (DrawObjects["VH"] != null&&Close[0]>lineValhigh1)
                {
                
    graphics.DrawRectangle(new Pen(Color.White),  bounds.+(bounds.Width/2), bounds.Bottom-5010040);                
                
    graphics.FillRectangle(new SolidBrush(Color.FromArgb(150,Color.Green.R,Color.Green.G,Color.Green.B)), bounds.+(bounds.Width/2)+1bounds.Bottom 499939);                            
                
    graphics.DrawString(abovevalue.ToString("N0")+"%"textFontHugetextBrushStrongbounds.+(bounds.Width/2)-3bounds.Bottom 50stringFormatCenter);        
                }    
                else if (
    DrawObjects["VH"] != null&&Close[0]<lineVallow1)
                {
                
    graphics.DrawRectangle(new Pen(Color.White),  bounds.+(bounds.Width/2), bounds.Bottom-5010040);    
                
    graphics.FillRectangle(new SolidBrush(Color.FromArgb(150,Color.Red.R,Color.Red.G,Color.Red.B)), bounds.+(bounds.Width/2)+1bounds.Bottom 499939);                        
                
    graphics.DrawString(belowvalue.ToString("N0")+"%"textFontHugetextBrushWeakbounds.+(bounds.Width/2)-3bounds.Bottom 50stringFormatCenter);
                }
                
                else if (
    DrawObjects["VH"] != null&&Close[0]>=lineVallow1 && Close[0]<=lineValhigh1)
                    {                
                
    graphics.DrawRectangle(new Pen(Color.White),  bounds.+(bounds.Width/2), bounds.Bottom-5010040);    
                
    graphics.FillRectangle(new SolidBrush(Color.FromArgb(250,Color.Yellow.R,Color.Yellow.G,Color.Yellow.B)), bounds.+(bounds.Width/2)+1bounds.Bottom 499939);                        
                
    graphics.DrawString(balancedvalue.ToString("N0")+"%"textFontHugetextBrushNormalbounds.+(bounds.Width/2)-3bounds.Bottom 50stringFormatCenter);
                    }                
        } 
    Instead of doing this 20 times I'd like to say :

    if (TFTrendTypes.Balanced == TFtrendType)

    reference that piece of code.

    if (TFTrendTypes.Balanced == TFtrendType)

    reference that same piece of code. So basically I only have the Value area % at bottom code put in once instead of 20 times and referenced each time. How would I do this?


    Thanks
    DJ

    #2
    DJ, to make this code better readable I think you could look into creating a custom method for the redundant operations and then only call this as needed - http://www.ninjatrader.com/support/h...s_explaine.htm
    BertrandNinjaTrader Customer Service

    Comment

    Latest Posts

    Collapse

    Topics Statistics Last Post
    Started by cls71, Today, 04:45 AM
    0 responses
    1 view
    0 likes
    Last Post cls71
    by cls71
     
    Started by mjairg, 07-20-2023, 11:57 PM
    3 responses
    213 views
    1 like
    Last Post PaulMohn  
    Started by TheWhiteDragon, 01-21-2019, 12:44 PM
    4 responses
    544 views
    0 likes
    Last Post PaulMohn  
    Started by GLFX005, Today, 03:23 AM
    0 responses
    3 views
    0 likes
    Last Post GLFX005
    by GLFX005
     
    Started by XXtrader, Yesterday, 11:30 PM
    2 responses
    12 views
    0 likes
    Last Post XXtrader  
    Working...
    X