# Bar Closing Strenght

Bar Info

Debugging

Derivatives

Matrix Handling

Price Rounding

Regression Lines

Statistics

User Tracking

Example Strategies

## Bar Closing Strength

Description:

1st Method: Calculate the closing percent of a given bar.

2nd Method: Uses an equation we (TycheTrading.io) developed for calculating the relative closing strength of each bar.

Syntax:

`ClosingStrength(int bar);`

Arguments:

bar: The bar that occured X number of bars ago.

```				```
/// <summary>
/// Calculates the closing strength of a bar.
/// </summary>
/// <param name="bar"> The bar that occured n number of bars ago. </param>
/// <remarks> 0.9 = closing near high of bar, 0.1 = closing near low of bar. </remarks>
/// <returns> The percent closing strength of requested bar. </returns>
private double ClosingStrength(int bar)
{
return (Close[bar] - Low[bar]) / (High[bar] - Low[bar]);
}

/// <summary>
/// Calculates the closing strength of a bar based on closing direction, relative size, and wick size.
/// </summary>
/// <param name="bar"> The bar that occured n number of bars ago. </param>
/// <remarks>
/// With constants all set 1, -3 would be a strong bearish bar, and positive 3 would be a strong bullish bar.
/// Each variable can produce a value between 1 and -1 based on data of the provided bar.
/// </remarks>
/// <returns> The relative closing strength of the provided bar. </returns>
private double ClosingStrength(int bar)
{
double close = Close[bar];
double open = Open[bar];
double low = Low[bar];
double high = High[bar];

// constants
double C1 = 1;
double C2 = 1;
double C3 = 1;

double wickStrength;
double sizeStrength;
double closeStrength;

// lower wick minus upper wick divided by sum
if (close > open)
{
if (open - low > 0 || high - close > 0) // prevents dividing by zero error
wickStrength = ((open - low) - (high - close)) / ((open - low) + (high - close));
else
wickStrength = 0;
}
else
{
if (close - low > 0 || high - open > 0) // prevents dividing by zero error
wickStrength = ((close - low) - (high - open)) / ((close - low) + (high - open));
else
wickStrength = 0;
}

// bar body size divided by the average of the last n bars body size
int barCount = 5;

if (CurrentBar < bar + barCount) // prevents out of bounds error
barCount = CurrentBar - bar - 1;

double bodySizeSum = 0;
for (int i = 1; i <= barCount; i++)
bodySizeSum += Math.Abs(Close[bar + i] - Open[bar + i]);
double bodySizeAvg = bodySizeSum / barCount;

sizeStrength = (close - open) / bodySizeAvg;

if (sizeStrength > 1) // keeps sizeStrength within same relative range as other variables
sizeStrength = 1;
else if (sizeStrength < -1)
sizeStrength = -1;

// closing percent value of the bar relative to direction of close (bullish or bearish)
if (close > open)
closeStrength = (close - open) / (high - open);
else
closeStrength = (close - open) / (open - low);

return wickStrength * C1 + sizeStrength * C2 + closeStrength * C3;
}
```
```