last works ...

This commit is contained in:
2025-10-09 12:34:26 +03:30
parent fc318b5c19
commit e97b44b938
7 changed files with 642 additions and 33 deletions
@@ -66,6 +66,16 @@ class XCBackTesterEA : public XCBase
string symbol; // Symbol
ENUM_TIMEFRAMES period; // Period
//
// Volume ...
ENUM_X_VOLUME_SELECT_TYPE eaVolumeSelect; // Volume Applying Type
double eaStaticVoluem; // Static Volume
double eaDynamicVolumeStepBalance; // Step of Balance for Increase Volume
double eaDynamicVolumeStepVolume; // Step of Volume Increasing
double eaConstantRiskBalance; // Constant Risk Balance per Trade
double eaConstantPercent; // Constant Percent of Balance Per Trade
double eaConstantBalance; // Constant Balance for Calculations
//
// Alert ...
bool eaEnableAlerts; // Enable Alerts
@@ -86,11 +96,10 @@ class XCBackTesterEA : public XCBase
XCAlert *eaAlert; // EA Scope Alert Handler ...
XCTrade *eaTrader; // EA Scope Trade Handler ...
XCTarget *eaTarget; // EA Scope Target Manager ...
XCVolume *eaVolume; // EA Scope Volume Manager ...
XCChartHelper *eaChartHelper; // EA Chart Helper ...
XCPositionDrawer *eaPositionDrawer; // EA Scope Position Drawer ...
//
XCChartHelper *eaChartHelper; // Chart Helper Class ...
//
// Constructor ...
XCBackTesterEA()
@@ -140,6 +149,10 @@ class XCBackTesterEA : public XCBase
int count = 0;
bool has = false;
//
// Chart Helper ...
eaChartHelper = new XCChartHelper();
//
// Initialize Alert Handler ...
eaAlert = new XCAlert();
@@ -297,6 +310,22 @@ class XCBackTesterEA : public XCBase
// Init Target Managers ...
eaTarget = new XCTarget(eaTrader, eaAlert);
//
eaVolume = new XCVolume();
result = eaVolume.Init(
eaVolumeSelect,
eaStaticVoluem,
eaDynamicVolumeStepBalance,
eaDynamicVolumeStepVolume,
eaConstantRiskBalance,
eaConstantPercent,
eaConstantBalance //
);
if (!result)
{
return result;
}
//
// Init Position Drawer ...
eaPositionDrawer = new XCPositionDrawer(eaTrader);
@@ -332,6 +361,10 @@ class XCBackTesterEA : public XCBase
delete eaPositionDrawer;
ZeroMemory(eaPositionDrawer);
//
delete eaVolume;
ZeroMemory(eaVolume);
//
delete eaTrader;
ZeroMemory(eaTrader);
@@ -588,6 +621,15 @@ class XCBackTesterEA : public XCBase
*/
void HandleOnSignalTriggered(XSignal &signal)
{
//
// Handle Volume ...
double iVolume = eaVolume.CalculateVolume(signal);
if (!signal.ignoreEAVolume &&
iVolume != signal.volume)
{
signal.volume = iVolume;
}
//
ENUM_X_SIGNAL_EXECUTION_RESULT result;
bool isExcuted = eaTrader.ExecuteSignal(
@@ -854,10 +896,6 @@ class XCBackTesterEA : public XCBase
ulong chartId = ChartID();
objSuffix = eaLogSuffix + "_";
//
// Initial Chart Class Instance ...
eaChartHelper = new XCChartHelper(chartId);
//
int startX = 5;
int startY = 25;