Initial Commit ...
This commit is contained in:
@@ -0,0 +1,262 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 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 ...
|
||||
//
|
||||
Reference in New Issue
Block a user