Files
MQL4Data/Bkp/Used/14020502/Libraries/x-saherelm.indicator.lib.mq4
2024-01-25 04:05:58 +03:30

351 lines
6.1 KiB
Plaintext

///////////////////////////////////////////////////////
//
// SaherElm IT Center MQL4 Indicator Global Library
// ---------------------------------------------------
// saherelm useful tools and definitions ...
//
//
// Maintainer:
// ------------
// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com)
//
//////////////////////////////////////////////////////
#property library
#property copyright "Copyright 2023, SaherElm IT Center"
#property link "https://www.saherelm.ir"
#property version "1.00"
#property strict
//
// Includes library ...
#include "../Libraries/x-saherelm.lib.mq4"
//
// Includes Models library ...
#include "../Libraries/x-saherelm.models.lib.mq4"
//
// START Global Requirement Functions ...
//
//
double ReadXMABuffer(
const int bar_index,
const int buffer_index,
//
const int marketLen,
//
const double stp,
const double mxm,
//
const int shortCycleMult,
const int mediumCycleMult,
const int longCycleMult
) {
//
string xmaIndicatorName = "x-saherelm.x.xma";
//
double result = iCustom(
_Symbol,
_Period,
xmaIndicatorName,
//
// Inputs ...
marketLen,
stp,
mxm,
shortCycleMult,
mediumCycleMult,
longCycleMult,
MODE_SMA,
//
buffer_index,
bar_index
);
//
return result;
}
//
double ReadXHLBuffer(
const int bar_index,
const int buffer_index,
//
const int marketLen,
//
const int shortCycleMult,
const int mediumCycleMult,
const int longCycleMult
) {
//
string xhlIndicatorName = "x-saherelm.x.hl";
//
double result = iCustom(
_Symbol,
_Period,
xhlIndicatorName,
//
// Inputs ...
marketLen,
shortCycleMult,
mediumCycleMult,
longCycleMult,
MODE_SMA,
//
buffer_index,
bar_index
);
//
return result;
}
//
double ReadADX(
const int bar_index,
const int marketLen,
const int mult
) {
//
double result;
//
int period = marketLen * mult;
//
result = iADX(
_Symbol,
_Period,
period,
PRICE_CLOSE,
MODE_MAIN,
bar_index
);
//
return result;
}
//
static XRState lastXRState;
XRState GetXRange(
const int bar_index,
const int rangeMarketLength
) {
//
XRState result = {};
//
datetime barTime = iTime(
_Symbol,
_Period,
bar_index
);
//
int marketBarIndex = bar_index + rangeMarketLength;
//
// Highest High ...
//
int hhIdx = iHighest(
_Symbol,
_Period,
MODE_HIGH,
marketBarIndex,
bar_index
);
//
double hh = iHigh(
_Symbol,
_Period,
hhIdx
);
//
// Lowest Low ...
//
int llIdx = iLowest(
_Symbol,
_Period,
MODE_LOW,
marketBarIndex,
bar_index
);
//
double ll = iLow(
_Symbol,
_Period,
llIdx
);
//
if (lastXRState.start == 0) {
//
lastXRState.start = barTime;
lastXRState.length = rangeMarketLength;
//
lastXRState.hh = hh;
lastXRState.ll = ll;
//
// Middle ...
double mid = (hh + ll) / 2;
lastXRState.mid = mid;
} else {
//
int startBarIndex = iBarShift(
_Symbol,
_Period,
lastXRState.start
);
//
if (startBarIndex - bar_index >= rangeMarketLength) {
//
lastXRState.start = barTime;
lastXRState.length = rangeMarketLength;
//
lastXRState.hh = hh;
lastXRState.ll = ll;
//
// Middle ...
double mid = (hh + ll) / 2;
lastXRState.mid = mid;
}
}
//
result = lastXRState;
//
return result;
}
//
XTPOWStatee GetXTPowState(
const int bar_index,
const int marketLen
) {
//
XTPOWStatee result = {};
//
//
double powerUp = 0;
double powerDown = 0;
double signal = 0;
// //
// int dailyCount = GetDailyCandleCount();
// double dailyHH = GetMarketHighestHigh(
// bar_index,
// dailyCount
// );
// double dailyLL = GetMarketLowestLow(
// bar_index,
// dailyCount
// );
// double dailyDiff = dailyHH - dailyLL;
// double rate = dailyDiff / 100;
// //
// for (int i = bar_index; i < bar_index + marketLen; i++) {
// //
// XOHCL c = GetCandleModel(i);
// //
// double cRange =
// MathAbs(c.open - c.close)
// // MathAbs(c.high - c.low)
// ;
// bool isBullish = c.open < c.close;
// //
// if (isBullish) {
// powerUp += cRange;
// } else {
// powerDown += cRange;
// }
// }
// //
// powerUp = powerUp / rate;
// powerDown = powerDown / rate;
// //
// double ema = GetMA(
// bar_index,
// marketLen,
// 0,
// MODE_EMA,
// PRICE_WEIGHTED
// );
// //
// double signalAddition = MathMin(powerUp, powerDown);
// signal = (ema / 100) * rate + signalAddition;
//
string indicatorName = "x-saherelm.xtpow";
//
int pUpIndex = 0;
int pDownIndex = 1;
int signalIndex = 2;
//
powerUp = iCustom(
_Symbol,
_Period,
indicatorName,
//
marketLen,
//
pUpIndex,
bar_index
);
//
powerDown = iCustom(
_Symbol,
_Period,
indicatorName,
//
marketLen,
//
pDownIndex,
bar_index
);
//
signal = iCustom(
_Symbol,
_Period,
indicatorName,
//
marketLen,
//
signalIndex,
bar_index
);
//
result.signal = signal;
result.powerUp = powerUp;
result.powerDown = powerDown;
//
return result;
}
//
// END Indicator Reading Data ...
//