last works ...

This commit is contained in:
2024-06-14 05:39:49 +03:30
parent a525a2e2cd
commit e12f7f72c5
7 changed files with 655 additions and 97 deletions
+57 -6
View File
@@ -24,6 +24,7 @@
#include <Arrays/ArrayObj.mqh>
#include <ChartObjects/ChartObjectsShapes.mqh>
#include "../Classes/x-saherelm.base.class.mq5"
#include "../Libraries/x-saherelm.draw.lib.mq5"
#include <ChartObjects/ChartObjectsTxtControls.mqh>
//
@@ -135,6 +136,7 @@ struct XSCZonesInput
tmpLevels //
);
ArraySort(tmpLevels);
ArrayReverse(tmpLevels);
//
// Size of Looping ...
@@ -186,6 +188,7 @@ public:
double high;
double low;
int ticks;
double percent;
//
// Compare Two Zone With Each Other ...
@@ -356,7 +359,7 @@ public:
//
// Find Lowest Value in Range ...
mRangeLow = mLows[ArrayMaximum(mLows)];
mRangeLow = mLows[ArrayMinimum(mLows)];
//
double mRangeSize = GetRange();
@@ -419,10 +422,28 @@ public:
}
}
//
// Calculating Zone Percents ...
for (int i = 0; i < mZones.Total(); i++)
{
//
XSCZone *iZone = mZones.At(i);
//
double percent = CalculateZoneTickPercent(iZone);
iZone.percent = percent;
}
//
mZones.Sort();
}
//
int CountZones()
{
return mZones.Total();
}
//
XSCZone *GetZone(int index)
{
@@ -483,12 +504,24 @@ public:
return result;
}
//
mZones.Sort();
//
int ticksCount = CountTicks();
result = IsValidSize(ticksCount);
if (!result)
{
return result;
}
//
double levels[];
color colors[];
mInputs.RetrieveSortedLevels(
levels,
colors);
colors //
);
int levelsCount = ArraySize(levels);
int colorsCount = ArraySize(colors);
bool canSetLevels = IsValidSize(levelsCount) &&
@@ -526,7 +559,7 @@ public:
//
// Set Default Rectangle Color ...
iRect.Color(defZoneBGColor);
// iRect.Color(defZoneBGColor);
iRect.Fill(true);
//
@@ -548,13 +581,31 @@ public:
iLabel.Color(defZoneLBLColor);
//
double iPercentage = CalculateZoneTickPercent(iZone);
iLabel.Description(ToString(iPercentage) + "%");
iLabel.Description(ToString(iZone.percent) + "%");
//
// Set Levels and Colors if Provided ...
if (canSetLevels) {
if (canSetLevels)
{
//
color iRectColor = defZoneBGColor;
for (int z = 0; z < levelsCount; z++)
{
//
double zLevel = levels[z];
color zColor = colors[z];
//
if (iZone.ticks >= ticksCount * zLevel)
{
//
iRectColor = zColor;
break;
}
}
//
iRect.Color(iRectColor);
}
//