This commit is contained in:
2025-08-27 19:46:21 +03:30
parent a08e067236
commit 068394f629
6 changed files with 1766 additions and 19 deletions
+271
View File
@@ -0,0 +1,271 @@
///////////////////////////////////////////////////////
//
// SaherElm IT Center MQL5 Class
// -------------------------------------------------
// Name: XCXOM1EAExpret ...
// Description: XCXOM1EA Expert Class ...
//
//
// Maintainer:
// ------------
// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com)
//
//////////////////////////////////////////////////////
//
// Global Properties ...
#property library
#property copyright "Copyright 2023, SaherElm IT Center"
#property link "https://saherelm.ir"
#property version "1.00"
#property description "SaherElm XCXOM1EA Expert Class"
#property strict
//
// Imports ...
#include "../../Classes/x-saherelm.base.class.mq5"
#include "../../Classes/x-saherelm.x-alert.class.mq5"
#include "../../Classes/x-saherelm.x-volume.class.mq5"
#include "../Classes/xom1ea.signaller.class.mq5"
//
// Definitions ...
//
// Implementation ...
class XCXOM1EAExpert : public XCBase
{
//
// Public ...
public:
//
// Props ...
//
// Common ...
long eaMagicNumber; // Magic Number
int eaSlippage; // Slippgae
string eaLogSuffix; // Log Suffix
//
// 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
bool eaSaveAlerts; // Save Alerts
bool eaLogAlerts; // Log Alerts
bool eaMailAlerts; // Mail Alerts
bool eaPushAlerts; // Push Alerts
bool eaTerminalAlerts; // Terminal Alerts
//
// Requirements ...
//
XCAlert *eaAlert; // EA Scope Alert Handler ...
XCVolume *eaVolume; // EA Scope Voluem Handler ...
//
// Validators ...
/**
* Validate Inputs ...
*
* @return ( bool )
*/
bool ValidateInputs()
{
//
bool result = false;
//
// TODO: Handle this ...
result = true;
//
return result;
}
//
// Expert Advisor Event Handlers ...
/**
* Handle Initialization of Expert ...
*
* @return ( bool )
*/
bool HandleOnInit()
{
//
bool result = false;
//
// Validate Inputs ...
result = ValidateInputs();
if (!result)
{
return result;
}
//
// Initialize Alert Handler ...
eaAlert = new XCAlert();
eaAlert.SetPrefix(eaLogSuffix);
eaAlert.SetLogAlerts(eaLogAlerts);
eaAlert.SetMailAlerts(eaMailAlerts);
eaAlert.SetPushAlerts(eaPushAlerts);
eaAlert.SetSaveAlerts(eaSaveAlerts);
eaAlert.SetEnableAlerts(eaEnableAlerts);
eaAlert.SetTerminalAlerts(eaTerminalAlerts);
//
// Initialize Volume Manager ...
// eaVolume = new XCVolume();
// result = eaVolume.Init(
// eaVolumeSelect,
// eaStaticVoluem,
// eaDynamicVolumeStepBalance,
// eaDynamicVolumeStepVolume,
// eaConstantRiskBalance,
// eaConstantPercent,
// eaConstantBalance //
// );
// if (!result)
// {
// return result;
// }
//
// Here we Apply Symbols,Periods and Configs ...
//
XOM1Inputs iDZoneOMInputs;
iDZoneOMInputs.Default();
//
XOM1SignallerConfig iDZoneSignallerConfig;
iDZoneSignallerConfig.processAllTicks = false;
//
XCXOM1SignallerBase *iDZoneSignaller = NULL;
iDZoneSignaller = new XCXOM1SignallerBase(
"XDZN",
"EURUSDb",
PERIOD_M5,
iDZoneOMInputs,
iDZoneSignallerConfig);
if (iDZoneSignaller != NULL)
{
//
Add(
iDZoneSignaller,
signallers //
);
}
//
// Cleanup Resources ...
iDZoneOMInputs.Clean();
iDZoneSignallerConfig.Clean();
ZeroMemory(iDZoneSignaller);
//
return result;
}
/**
* Handle De Initialization of Expert ...
*/
void HandleOnDeInit()
{
//
//
delete eaVolume;
ZeroMemory(eaVolume);
//
string message = "DeInitialized Successfully ...";
eaAlert.SendAlert(message);
//
delete eaAlert;
ZeroMemory(eaAlert);
}
/**
* Handle Tick ...
*/
void HandleOnTick()
{
//
int count = ArraySize(signallers);
bool has = IsValidSize(count);
if (!has) {
return;
}
//
// Loop through Signallers ...
for (int i = 0; i < count; i++) {
//
// Calling Process Ticks on Signaller ...
signallers[i].ProcessTick(0);
}
}
/**
* Handle Trade ...
*/
void HandleOnTrade()
{
}
/**
* Handle Timer ...
*/
void HandleOnTimer()
{
}
/**
* Handle Chart Event ...
*
* @param id: int, Event id ...
* @param lparam: long, Event Long Parameter ...
* @param dparam: double, Event Double Parameter ...
* @param sparam: string, Event String Parameter ...
*/
void HandleOnChartEvent(
const int id,
const long &lparam,
const double &dparam,
const string &sparam //
)
{
}
//
// Trade Event Handlers ...
//
// Protected ...
protected:
//
// Private ...
private:
//
// Props ...
//
XCXOM1SignallerBase *signallers[]; // All Registered Signallers ...
};
//