Files
xMQL5/BKPS/Temp/x-saherelm.xts.indicator.helper.lib.mq5
T
2024-01-25 04:09:42 +03:30

263 lines
4.9 KiB
Plaintext

/////////////////////////////////////////////////////////////////////////////
//
// SaherElm IT Center MQL5 XTS Indicator Helper for Signal Providers
// --------------------------------------------------------------------------
//
// Maintainer:
// ------------
// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com)
//
/////////////////////////////////////////////////////////////////////////////
//
// Global Properties ...
#property library
#property copyright "Copyright 2023, SaherElm IT Center"
#property link "https://www.saherelm.ir"
#property version "1.00"
#property strict
//
// Includes ...
#include "..\Libraries\x-saherelm.log.lib.mq5"
#include "..\Libraries\x-saherelm.common.lib.mq5"
//
// START Enum Definitions ...
//
enum ENUM_X_PERIOD_METHOD
{
//
X_PERIOD_NOTHING,
//
X_PERIOD_AUTO,
//
X_PERIOD_MANUALLY
};
enum ENUM_X_XTS_BUFFER_LINES
{
X_XTS_CURRENT_LINE = 0,
X_XTS_NEAREST_LINE = 1,
X_XTS_MEDIEST_LINE = 2,
X_XTS_FAREST_LINE = 3,
};
//
// END Enum Definitions ...
//
//
// START Inputs ...
//
//
input group "XTS Indicator";
//
input group "XTS Current Period";
input ENUM_APPLIED_PRICE xTSCurrentAppliedTo = PRICE_CLOSE; // Current Applied To
//
input group "XTS Nearest Period";
input ENUM_X_PERIOD_METHOD xTSNearestMethod = X_PERIOD_AUTO; // How to Find Nearest Period
input ENUM_TIMEFRAMES xTSNearestPeriod = NULL; // Nearest Time Frame
input ENUM_APPLIED_PRICE xTSNearestAppliedTo = PRICE_CLOSE; // Nearest Applied To
//
input group "XTS Mediest Period";
input ENUM_X_PERIOD_METHOD xTSMediestMethod = X_PERIOD_AUTO; // How to Find Mediest Period
input ENUM_TIMEFRAMES xTSMediestPeriod = NULL; // Mediest Time Frame
input ENUM_APPLIED_PRICE xTSMediestAppliedTo = PRICE_CLOSE; // Mediest Applied To
//
input group "XTS Farest Period";
input ENUM_X_PERIOD_METHOD xTSFarestMethod = X_PERIOD_AUTO; // How to Find Farest Period
input ENUM_TIMEFRAMES xTSFarestPeriod = NULL; // Farest Time Frame
input ENUM_APPLIED_PRICE xTSFarestAppliedTo = PRICE_CLOSE; // Farest Applied To
//
//
// END Inputs ...
//
//
// START Definitions ...
//
int xTSHandler = INVALID_HANDLE;
double xTSCurrentBuffer[];
double xTSNearestBuffer[];
double xTSMediestBuffer[];
double xTSFarestBuffer[];
//
// END Definitions ...
//
//
// START Handler Functions ...
//
//
// Validate Inputs ...
bool XTSValidateInputs()
{
//
bool result = false;
//
result = true;
//
if (!result)
{
//
LogMessage("XTS Indicator Inputs Validation Failed ...");
}
//
return result;
}
//
// Init Indicators ...
bool XTSInitHandlers()
{
//
bool result = false;
//
// Initialize Indicator/Indicator Handlers ...
ResetLastError();
//
// XTS Handler ...
ArraySetAsSeries(xTSCurrentBuffer, true);
ArraySetAsSeries(xTSNearestBuffer, true);
ArraySetAsSeries(xTSMediestBuffer, true);
ArraySetAsSeries(xTSFarestBuffer, true);
xTSHandler = iCustom(
_Symbol,
_Period,
"x-saherelm.xts.oscillator",
//
// Inputs ...
"",
xTSCurrentAppliedTo,
"",
xTSNearestMethod,
xTSNearestPeriod,
xTSNearestAppliedTo,
"",
xTSMediestMethod,
xTSMediestPeriod,
xTSMediestAppliedTo,
"",
xTSFarestMethod,
xTSFarestPeriod,
xTSFarestAppliedTo
//
);
if (xTSHandler == INVALID_HANDLE)
{
//
LogMessage("failed to Initialize XTS Indicator: " + (string)GetLastError());
return result;
}
//
result = true;
//
return result;
}
//
// Release Indicators ...
void XTSReleaseHandlers()
{
IndicatorRelease(xTSHandler);
}
//
// Handle Reading Buffers ...
void XTSReadBuffers(
int xTSItemsPerTick // Number Of Reading Buffer Items Per Tick
)
{
//
// XTS Current ...
CopyBuffer(
xTSHandler,
X_XTS_CURRENT_LINE,
0,
xTSItemsPerTick,
xTSCurrentBuffer);
//
// XTS Nearest ...
CopyBuffer(
xTSHandler,
X_XTS_NEAREST_LINE,
0,
xTSItemsPerTick,
xTSNearestBuffer);
//
// XTS Mediest ...
CopyBuffer(
xTSHandler,
X_XTS_MEDIEST_LINE,
0,
xTSItemsPerTick,
xTSMediestBuffer);
//
// XTS Farest ...
CopyBuffer(
xTSHandler,
X_XTS_FAREST_LINE,
0,
xTSItemsPerTick,
xTSFarestBuffer);
}
//
// END Handler Funcions ...
//
//
// START XTS Custom Functions ...
//
//
// Check all Buffers has valid Size ...
bool XTSIsValidBuffersSize(
int size // the size of buffers which min size for requirements
)
{
//
bool result = false;
//
if (
size <= 0 ||
//
ArraySize(xTSCurrentBuffer) < size
//
)
{
result = false;
}
else
{
result = true;
}
//
return result;
}
//
// END XTS Custom Functions ...
//