prepare workspace by eu5, add some scripts and node modules on Documents folder, extends compile script and also node module to automate usefull most commonly used compilation tasks and also create required npm scripts and vscode debug lunch tasks based on them ...

This commit is contained in:
2024-01-31 15:02:23 -08:00
parent b612162136
commit 732b6bba35
45 changed files with 3813 additions and 49 deletions
@@ -0,0 +1,607 @@
/////////////////////////////////////////////////////////////////////////////
//
// SaherElm IT Center MQL5 XAMA 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 ...
//
//
// XAMA Indicator States ...
enum ENUM_X_XAMA_STATES
{
X_XAMA_BULLISH = 1,
X_XAMA_BEARISH = -1,
X_XAMA_NEUTURAL = 0,
};
//
// XAMA Indicator Buffer Lines ...
enum ENUM_X_XAMA_BUFFER_LINES
{
X_XAMA_MA_LINE = 0,
X_XAMA_MC_COLOR_LINE = 1,
X_XAMA_STATE_LINE = 2,
};
//
// END Enum Definitions ...
//
//
// START Inputs ...
//
// input group "XAMA Indicator";
//
// input int xAMALength = 18; // Market Length
// input int xAMAFastEMA = 2; // Fast EMA Period
// input int xAMASlowEMA = 30; // Slow EMA Period
// input int xAMAShift = 0; // Shift
// input ENUM_APPLIED_PRICE xAMAAppliedTo = PRICE_CLOSE; // Applied To
//
// Configurations ...
int xAMALength = 18; // Market Length
int xAMAFastEMA = 2; // Fast EMA Period
int xAMASlowEMA = 30; // Slow EMA Period
int xAMAShift = 0; // Shift
ENUM_APPLIED_PRICE xAMAAppliedTo = PRICE_CLOSE; // Applied To
//
// END Inputs ...
//
//
// START Definitions ...
//
int xAMAHandler = INVALID_HANDLE;
double xAMAMaBuffer[];
double xAMAStateBuffer[];
//
// END Definitions ...
//
//
// START Handler Functions ...
//
//
// Validate Inputs ...
bool XAMAValidateInputs()
{
//
bool result = false;
//
result =
xAMALength > 2 &&
xAMAFastEMA < xAMALength &&
xAMAFastEMA < xAMASlowEMA &&
xAMAShift >= 0;
//
if (!result)
{
//
LogMessage("XAMA Indicator Inputs Validation Failed ...");
}
//
return result;
}
//
// Init Indicators ...
bool XAMAInitHandlers()
{
//
bool result = false;
//
// Initialize Indicator/Indicator Handlers ...
ResetLastError();
//
// XAMA Handler ...
ArraySetAsSeries(xAMAMaBuffer, true);
ArraySetAsSeries(xAMAStateBuffer, true);
xAMAHandler = iCustom(
_Symbol,
_Period,
"x-saherelm.xama.indicator",
//
// Inputs ...
xAMALength,
xAMAFastEMA,
xAMASlowEMA,
xAMAShift,
xAMAAppliedTo
//
);
if (xAMAHandler == INVALID_HANDLE)
{
//
LogMessage("failed to Initialize XAMA Indicator: " + (string)GetLastError());
return result;
}
//
result = true;
//
return result;
}
//
// Release Indicators ...
void XAMAReleaseHandlers()
{
IndicatorRelease(xAMAHandler);
}
//
// Handle Reading Buffers ...
void XAMAReadBuffers(
int xAMAItemsPerTick // Number Of Reading Buffer Items Per Tick
)
{
//
// XAMA Ma Buffer ...
CopyBuffer(
xAMAHandler,
X_XAMA_MA_LINE,
0,
xAMAItemsPerTick,
xAMAMaBuffer);
//
// XAMA State Buffer ...
CopyBuffer(
xAMAHandler,
X_XAMA_STATE_LINE,
0,
xAMAItemsPerTick,
xAMAStateBuffer);
}
//
// END Handler Funcions ...
//
//
// START XAMA Custom Functions ...
//
//
// Check SC is Peak ...
bool XAMAIsPeak(
int bar_index, // Specified Index ...
int length = 10 // Specified Length ...
)
{
//
bool result = false;
//
if (
length <= 0 ||
bar_index <= 0 ||
!XAMAIsValidBuffersSize(bar_index + length + 1))
{
return result;
}
//
// Must Decreasing ...
bool isIncreasing = IsIncreasing(
bar_index + length,
bar_index,
xAMAMaBuffer
//
);
//
return result;
}
//
// Check SC is Vale ...
bool XAMAIsVale(
int bar_index, // Specified Index ...
int length = 10 // Specified Length ...
)
{
//
bool result = false;
//
if (
length <= 0 ||
bar_index <= 0 ||
!XAMAIsValidBuffersSize(bar_index + length + 1))
{
return result;
}
//
result = IsDecreasing(
bar_index + length,
bar_index,
xAMAMaBuffer
//
);
//
return result;
}
//
// Check TM Crossed Up ...
bool XAMAIsStartBullish(
int bar_index // Specified Index ...
)
{
//
bool result = false;
//
if (
bar_index <= 0 ||
!XAMAIsValidBuffersSize(bar_index + 2))
{
return result;
}
//
result =
//
xAMAStateBuffer[bar_index] == X_XAMA_BULLISH &&
xAMAStateBuffer[bar_index + 1] != X_XAMA_BULLISH
//
;
//
return result;
}
//
// Check TM Crossed Up After Neutural State ...
bool XAMAIsStartBullishAfterNeutural(
int bar_index // Specified Index ...
)
{
//
bool result = false;
//
if (
bar_index <= 0 ||
!XAMAIsValidBuffersSize(bar_index + 2))
{
return result;
}
//
result =
//
xAMAStateBuffer[bar_index] == X_XAMA_BULLISH &&
xAMAStateBuffer[bar_index + 1] == X_XAMA_NEUTURAL
//
;
//
return result;
}
//
// Check TM In Up State ...
bool XAMAIsBullish(
int bar_index // Specified Index ...
)
{
//
bool result = false;
//
if (
bar_index <= 0 ||
!XAMAIsValidBuffersSize(bar_index + 1))
{
return result;
}
//
result =
//
xAMAStateBuffer[bar_index] == X_XAMA_BULLISH
//
;
//
return result;
}
//
// Check TM Ends Up State ...
bool XAMAIsEndBullish(
int bar_index // Specified Index ...
)
{
//
bool result = false;
//
if (
bar_index <= 0 ||
!XAMAIsValidBuffersSize(bar_index + 2))
{
return result;
}
//
result =
//
xAMAStateBuffer[bar_index] != X_XAMA_BULLISH &&
xAMAStateBuffer[bar_index + 1] == X_XAMA_BULLISH
//
;
//
return result;
}
//
// Check TM Ends Up State By Neutural ...
bool XAMAIsEndBullishByNeutural(
int bar_index // Specified Index ...
)
{
//
bool result = false;
//
if (
bar_index <= 0 ||
!XAMAIsValidBuffersSize(bar_index + 2))
{
return result;
}
//
result =
//
xAMAStateBuffer[bar_index] == X_XAMA_NEUTURAL &&
xAMAStateBuffer[bar_index + 1] == X_XAMA_BULLISH
//
;
//
return result;
}
//
// Check TM Crossed Down ...
bool XAMAIsStartBearish(
int bar_index // Specified Index ...
)
{
//
bool result = false;
//
if (
bar_index <= 0 ||
!XAMAIsValidBuffersSize(bar_index + 2))
{
return result;
}
//
result =
//
xAMAStateBuffer[bar_index] == X_XAMA_BEARISH &&
xAMAStateBuffer[bar_index + 1] != X_XAMA_BEARISH
//
;
//
return result;
}
//
// Check TM Crossed Down After Neutural State ...
bool XAMAIsStartBearishAfterNeutural(
int bar_index // Specified Index ...
)
{
//
bool result = false;
//
if (
bar_index <= 0 ||
!XAMAIsValidBuffersSize(bar_index + 2))
{
return result;
}
//
result =
//
xAMAStateBuffer[bar_index] == X_XAMA_BEARISH &&
xAMAStateBuffer[bar_index + 1] == X_XAMA_NEUTURAL
//
;
//
return result;
}
//
// Check TM In Down State ...
bool XAMAIsBearish(
int bar_index // Specified Index ...
)
{
//
bool result = false;
//
if (
bar_index <= 0 ||
!XAMAIsValidBuffersSize(bar_index + 1))
{
return result;
}
//
result =
//
xAMAStateBuffer[bar_index] == X_XAMA_BEARISH
//
;
//
return result;
}
//
// Check TM Ends Down State ...
bool XAMAIsEndBearish(
int bar_index // Specified Index ...
)
{
//
bool result = false;
//
if (
bar_index <= 0 ||
!XAMAIsValidBuffersSize(bar_index + 2))
{
return result;
}
//
result =
//
xAMAStateBuffer[bar_index] != X_XAMA_BEARISH &&
xAMAStateBuffer[bar_index + 1] == X_XAMA_BEARISH
//
;
//
return result;
}
//
// Check TM Ends Down State By Neutural ...
bool XAMAIsEndBearishByNeutural(
int bar_index // Specified Index ...
)
{
//
bool result = false;
//
if (
bar_index <= 0 ||
!XAMAIsValidBuffersSize(bar_index + 2))
{
return result;
}
//
result =
//
xAMAStateBuffer[bar_index] == X_XAMA_NEUTURAL &&
xAMAStateBuffer[bar_index + 1] == X_XAMA_BEARISH
//
;
//
return result;
}
//
// Check TM In Neutural State ...
bool XAMAIsNeutural(
int bar_index // Specified Index ...
)
{
//
bool result = false;
//
if (
bar_index <= 0 ||
!XAMAIsValidBuffersSize(bar_index + 1))
{
return result;
}
//
result =
//
xAMAStateBuffer[bar_index] == X_XAMA_NEUTURAL
//
;
//
return result;
}
//
// Check all Buffers has valid Size ...
bool XAMAIsValidBuffersSize(
int size // the size of buffers which min size for requirements
)
{
//
bool result = false;
//
if (
size <= 0 ||
//
ArraySize(xAMAMaBuffer) < size
//
)
{
result = false;
}
else
{
result = true;
}
//
return result;
}
//
// END XAMA Custom Functions ...
//