No it is not. However, it is appearing so. As previously mentioned by @PanoS, It is happening because of anisotropic property of charts.

Anyways, below is a code, where it is mathematically proven that ABCD is a square and hence by default it implies that the quadrilateral PQRS formed out of the mid-points of its sides is also a square.

```
function RadToDeg( x ) {
pi = atan( 1 ) * 4;
return x * ( 180 / pi ); //Angle is calculated in radians, thus converting it to degrees
}
_SECTION_BEGIN( "Square off a Trendline" );
SetChartOptions( 1, chartShowDates );
bi = BarIndex();
ChartId = Name() + GetChartId();
//////////////////////////////////////////////////////////////
///////////// Capturing co-ordinates of A and B //////////////
//////////////////////////////////////////////////////////////
LeftMsBtnJustClkd = GetCursorMouseButtons() & 8;
LeftMsBtnDownRlsd = GetCursorMouseButtons() & 9;
MsMiddleBtnClkd = GetCursorMouseButtons() & 4;
x = GetCursorXPosition( 0 );
y = GetCursorYPosition( 0 );
CtrlPressed = GetAsyncKeyState( 17 ) < 0;
if( CtrlPressed ) {
if( LeftMsBtnJustClkd ) {
StaticVarSet( "Ax" + ChartId, x, 0 );
StaticVarSet( "Ay" + ChartId, y, 0 );
}
if( LeftMsBtnDownRlsd ) {
StaticVarSet( "Bx" + ChartId, x, 0 );
StaticVarSet( "By" + ChartId, y, 0 );
}
if( MsMiddleBtnClkd ) {
StaticVarRemove( "Ax" + ChartId );
StaticVarRemove( "Ay" + ChartId );
StaticVarRemove( "Bx" + ChartId );
StaticVarRemove( "By" + ChartId );
}
RequestMouseMoveRefresh();
}
//////////////////////////////////////////////////////////////
GfxSetZOrder( 0 );
GfxSetCoordsMode( 1 );
GfxSetBkMode( 1 );
GfxSelectFont( "Arial", 8, 400 );
GfxSetTextColor( colorLavender );
GfxSelectPen( colorBlueGrey, 1, 0 );
_Ax = Lookup( bi, StaticVarGet( "Ax" + ChartId ) );
_Ay = StaticVarGet( "Ay" + ChartId );
_Bx = Lookup( bi, StaticVarGet( "Bx" + ChartId ) );
_By = StaticVarGet( "By" + ChartId );
if( _Ax != 0 AND _Bx != 0 ) {
// Using GFX, drawing a line between A and B
GfxMoveTo( _Ax, _Ay );
GfxLineTo( _Bx, _By );
// Finding co-ordinates of C and D (ABCD being a square)
dX = _Bx - _Ax; dY = _By - _Ay;
_Cx = _Bx + dY ; _Cy = _By - dx ;
_Dx = _Ax + dY ; _Dy = _Ay - dx ;
// Drawing a line between B and C
GfxMoveTo( _Bx, _By );
GfxLineTo( _Cx, _Cy );
// Drawing a line between A and D
GfxMoveTo( _Ax, _Ay );
GfxLineTo( _Dx, _Dy );
// Drawing a line between C and D
GfxMoveTo( _Cx, _Cy );
GfxLineTo( _Dx, _Dy );
// Drawing diagonals of the square ABCD
GfxMoveTo( _Ax, _Ay );
GfxLineTo( _Cx, _Cy );
GfxMoveTo( _Bx, _By );
GfxLineTo( _Dx, _Dy );
// Finding mid-points of the sides of ABCD
Px = ( _Ax + _Bx ) / 2; Py = ( _Ay + _By ) / 2;
Qx = ( _Bx + _Cx ) / 2; Qy = ( _By + _Cy ) / 2;
Rx = ( _Cx + _Dx ) / 2; Ry = ( _Cy + _Dy ) / 2;
Sx = ( _Ax + _Dx ) / 2; Sy = ( _Ay + _Dy ) / 2;
// Drawing a square PQRS
GfxMoveTo( Px, Py ); GfxLineTo( Qx, Qy );
GfxMoveTo( Qx, Qy ); GfxLineTo( Rx, Ry );
GfxMoveTo( Rx, Ry ); GfxLineTo( Sx, Sy );
GfxMoveTo( Sx, Sy ); GfxLineTo( Px, Py );
// Text for co-ordinates
GfxTextOut( "A", _Ax, _Ay );
GfxTextOut( "B", _Bx, _By );
GfxTextOut( "C", _Cx, _Cy );
GfxTextOut( "D", _Dx, _Dy );
GfxTextOut( "P", Px, Py );
GfxTextOut( "Q", Qx, Qy );
GfxTextOut( "R", Rx, Ry );
GfxTextOut( "S", Sx, Sy );
//////////////////////////////////////////////////////////////
/////////////// Proving that ABCD is a square ////////////////
//////////////////////////////////////////////////////////////
// Measuring length of the sides using Distance formula
AB = sqrt( dX ^ 2 + dY ^ 2 );
BC = sqrt( ( _Cx - _Bx ) ^ 2 + ( _Cy - _By ) ^ 2 );
CD = sqrt( ( _Dx - _Cx ) ^ 2 + ( _Dy - _Cy ) ^ 2 );
DA = sqrt( ( _Dx - _Ax ) ^ 2 + ( _Dy - _Ay ) ^ 2 );
// Finding angle of the vertices of ABCD
CAD = atan( CD / DA ); CAB = atan( BC / AB ); /*Hence,*/ DAB = RadToDeg( CAD + CAB );
DBA = atan( DA / AB ); DBC = atan( CD / BC ); /*Hence,*/ ABC = RadToDeg( DBA + DBC );
ACB = atan( AB / BC ); ACD = atan( DA / CD ); /*Hence,*/ BCD = RadToDeg( ACB + ACD );
BDC = atan( BC / CD ); BDA = atan( AB / DA ); /*Hence,*/ CDA = RadToDeg( BDC + BDA );
Title =
"Proof 1: All sides of ABCD are equal" +
StrFormat( "\nAB = %1.2f, BC = %1.2f, CD = %1.2f, DA = %1.2f", AB, BC, CD, DA ) +
"\nAB = BC = CD = DA = " + WriteIf( AB == BC && BC == CD && CD == DA, "True", "False" ) +
"\n\nProof 2: All vertices of ABCD are of 90°" +
StrFormat( "\nDAB = %1.0f°, ABC = %1.0f°, BCD = %1.0f°, CDA = %1.0f°", DAB, ABC, BCD, CDA ) +
"\nAngle A = B = C = D = " + WriteIf( DAB == ABC && ABC == BCD && BCD == CDA, "True", "False" )
;
//////////////////////////////////////////////////////////////
}
Plot( C, "Price", colorDefault, styleCandle );
_SECTION_END();
```