831 lines
18 KiB
Plaintext
831 lines
18 KiB
Plaintext
///////////////////////////////////////////////////////
|
|
//
|
|
// SaherElm IT Center MQL5 Helper Class Library
|
|
// ----------------------------------------------
|
|
// Name: XSCXOSCHelper
|
|
// Description: provides all Indicator
|
|
// Helper requirements ...
|
|
//
|
|
//
|
|
// 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
|
|
|
|
//
|
|
// START Definitions ...
|
|
//
|
|
|
|
//
|
|
// Inputs ...
|
|
struct XOSCInputs
|
|
{
|
|
//
|
|
// ATR ...
|
|
int atrLength;
|
|
|
|
//
|
|
// RVI ...
|
|
int rviLength;
|
|
|
|
//
|
|
// BULLPOWER ...
|
|
int bullpLength;
|
|
|
|
//
|
|
// BEARPOWER ...
|
|
int bearpLength;
|
|
|
|
//
|
|
// VOLUME ...
|
|
ENUM_APPLIED_VOLUME volumeAppliedTo;
|
|
|
|
//
|
|
// RSI ...
|
|
int rsiLength;
|
|
ENUM_APPLIED_PRICE rsiAppliedTo;
|
|
|
|
//
|
|
// CCI ...
|
|
int cciLength;
|
|
ENUM_APPLIED_PRICE cciAppliedTo;
|
|
|
|
//
|
|
// MOMENTUM ...
|
|
int momentumLength;
|
|
ENUM_APPLIED_PRICE momentumAppliedTo;
|
|
|
|
//
|
|
// SAR ...
|
|
double sarStep;
|
|
double sarMaximum;
|
|
|
|
//
|
|
// MACD ...
|
|
int macdFastLength;
|
|
int macdSlowLength;
|
|
int macdSignaLength;
|
|
ENUM_APPLIED_PRICE macdAppliedTo;
|
|
|
|
//
|
|
// STOCHASTIC ...
|
|
int stochKLength;
|
|
int stochDLength;
|
|
int stochSlowing;
|
|
ENUM_MA_METHOD stochMaMethod;
|
|
ENUM_STO_PRICE stochMode;
|
|
|
|
//
|
|
// STANDARDDEVIATION ...
|
|
int stddevLength;
|
|
int stddevShift;
|
|
ENUM_MA_METHOD stddevMethod;
|
|
ENUM_APPLIED_PRICE stddevAppliedTo;
|
|
};
|
|
|
|
//
|
|
// Index of Lines ...
|
|
enum ENUM_XOSC_BUFFERS
|
|
{
|
|
//
|
|
// Main Requirements ...
|
|
XOSC_ATR_LINE = 0,
|
|
XOSC_RVI_MAIN_LINE = 1,
|
|
XOSC_RVI_SIGNAL_LINE = 2,
|
|
XOSC_BULLP_LINE = 3,
|
|
XOSC_BEARP_LINE = 4,
|
|
XOSC_VOLUME_LINE = 5,
|
|
XOSC_RSI_LINE = 6,
|
|
XOSC_CCI_LINE = 7,
|
|
XOSC_MOMENTUM_LINE = 8,
|
|
XOSC_SAR_LINE = 9,
|
|
XOSC_MACD_MAIN_LINE = 10,
|
|
XOSC_MACD_SIGNAL_LINE = 11,
|
|
XOSC_STOCH_MAIN_LINE = 12,
|
|
XOSC_STOCH_SIGNAL_LINE = 13,
|
|
XOSC_STDDEV_LINE = 14,
|
|
};
|
|
|
|
//
|
|
// Retrieve Info Model ...
|
|
struct XOSCInfo
|
|
{
|
|
//
|
|
// Symbol ...
|
|
string symbol;
|
|
|
|
//
|
|
// Period ...
|
|
ENUM_TIMEFRAMES period;
|
|
|
|
//
|
|
// Bar Time ...
|
|
datetime barTime;
|
|
|
|
//
|
|
// Bar Index ...
|
|
int barIndex;
|
|
|
|
//
|
|
// Values ...
|
|
double atr;
|
|
double rviMain;
|
|
double rviSignal;
|
|
double bullPower;
|
|
double bearPower;
|
|
double volume;
|
|
double rsi;
|
|
double cci;
|
|
double momentum;
|
|
double sar;
|
|
double macdMain;
|
|
double macdSignal;
|
|
double stochMain;
|
|
double stochSignal;
|
|
double stddev;
|
|
|
|
//
|
|
double atrs[];
|
|
double rviMains[];
|
|
double rviSignals[];
|
|
double bullPs[];
|
|
double bearPs[];
|
|
double volumes[];
|
|
double rsis[];
|
|
double ccis[];
|
|
double momentums[];
|
|
double sars[];
|
|
double macdMains[];
|
|
double macdSignals[];
|
|
double stochMains[];
|
|
double stochSignals[];
|
|
double stddevs[];
|
|
|
|
//
|
|
// Conditions ...
|
|
// TODO: Implement it Later ...
|
|
};
|
|
|
|
//
|
|
// END Definitions ...
|
|
//
|
|
|
|
//
|
|
// START Import and Inclused requirements ...
|
|
//
|
|
|
|
//
|
|
// Includes ...
|
|
#include "../Libraries/x-saherelm.common.lib.mq5"
|
|
#include "../Classes/x-saherelm.xhelper.class.mq5"
|
|
|
|
//
|
|
// END Import and Inclused requirements ...
|
|
//
|
|
|
|
//
|
|
// START Overrides ...
|
|
//
|
|
|
|
//
|
|
// END Overrides ...
|
|
//
|
|
|
|
//
|
|
// a Class for Helping Indicators Requirements ...
|
|
class XSCXOSCHelper : public XSCBaseHelper
|
|
{
|
|
//
|
|
// Public ...
|
|
public:
|
|
//
|
|
// Buffers ...
|
|
double atrBuffer[];
|
|
double rviMainBuffer[];
|
|
double rviSignalBuffer[];
|
|
double bullPBuffer[];
|
|
double bearPBuffer[];
|
|
double volumeBuffer[];
|
|
double rsiBuffer[];
|
|
double cciBuffer[];
|
|
double momentumBuffer[];
|
|
double sarBuffer[];
|
|
double macdMainBuffer[];
|
|
double macdSignalBuffer[];
|
|
double stochMainBuffer[];
|
|
double stochSignalBuffer[];
|
|
double stddevBuffer[];
|
|
|
|
//
|
|
// Constructor ...
|
|
void XSCXOSCHelper(
|
|
string symbol, // Trading Symbol
|
|
ENUM_TIMEFRAMES period // Trading Time Frame
|
|
) : XSCBaseHelper(symbol, period)
|
|
{
|
|
PrepareTag();
|
|
}
|
|
|
|
//
|
|
// Deconstructor ...
|
|
void ~XSCXOSCHelper()
|
|
{
|
|
}
|
|
|
|
//
|
|
// START Properties ...
|
|
//
|
|
|
|
//
|
|
// END Properties ...
|
|
//
|
|
|
|
//
|
|
// START Provided Functions ...
|
|
//
|
|
|
|
//
|
|
// Prepare Tag ...
|
|
virtual void PrepareTag()
|
|
{
|
|
mTag = "XOSC" + GetTagPrefix();
|
|
}
|
|
|
|
//
|
|
virtual int GetMaxLength()
|
|
{
|
|
//
|
|
int result = -1;
|
|
|
|
//
|
|
result = MathMax(mAtrLength, mRviLength);
|
|
result = MathMax(result, mBullpLength);
|
|
result = MathMax(result, mBearpLength);
|
|
result = MathMax(result, mRsiLength);
|
|
result = MathMax(result, mCciLength);
|
|
result = MathMax(result, mMomentumLength);
|
|
result = MathMax(result, mMacdFastLength);
|
|
result = MathMax(result, mMacdSlowLength);
|
|
result = MathMax(result, mMacdSignaLength);
|
|
result = MathMax(result, mStochKLength);
|
|
result = MathMax(result, mStochDLength);
|
|
result = MathMax(result, mStochSlowing);
|
|
result = MathMax(result, mStddevLength);
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Initial Indicator Handler ...
|
|
bool Init()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
// Validate Args ...
|
|
result =
|
|
//
|
|
mAtrLength >= 2 &&
|
|
mRviLength >= 2 &&
|
|
mBullpLength >= 2 &&
|
|
mBearpLength >= 2 &&
|
|
mRsiLength >= 2 &&
|
|
mCciLength >= 2 &&
|
|
mMomentumLength >= 2 &&
|
|
mSarStep > 0 &&
|
|
mSarStep < mSarMaximum &&
|
|
mMacdFastLength >= 2 &&
|
|
mMacdSlowLength > mMacdFastLength &&
|
|
mMacdSignaLength >= 2 &&
|
|
mStochKLength >= 2 &&
|
|
mStochDLength >= 2 &&
|
|
mStochSlowing >= 2 &&
|
|
mStddevLength >= 2 &&
|
|
mStddevShift >= 0
|
|
//
|
|
;
|
|
if (!result)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
//
|
|
// Initialize Handler ...
|
|
mHandler = iCustom(
|
|
//
|
|
mSymbol,
|
|
mPeriod,
|
|
"x-saherelm.x121.xosc",
|
|
//
|
|
// Inputs ...
|
|
//
|
|
// ATR ...
|
|
"",
|
|
mAtrLength,
|
|
//
|
|
// RVI ...
|
|
"",
|
|
mRviLength,
|
|
//
|
|
// BULLPOWER ...
|
|
"",
|
|
mBullpLength,
|
|
//
|
|
// BEARPOWER ...
|
|
"",
|
|
mBearpLength,
|
|
//
|
|
// VOLUME ...
|
|
"",
|
|
mVolumeAppliedTo,
|
|
//
|
|
// RSI ...
|
|
"",
|
|
mRsiLength,
|
|
mRsiAppliedTo,
|
|
//
|
|
// CCI ...
|
|
"",
|
|
mCciLength,
|
|
mCciAppliedTo,
|
|
//
|
|
// STANDARDDEVIATION ...
|
|
"",
|
|
mStddevLength,
|
|
mStddevShift,
|
|
mStddevMethod,
|
|
mStddevAppliedTo,
|
|
//
|
|
// MOMENTUM ...
|
|
"",
|
|
mMomentumLength,
|
|
mMomentumAppliedTo,
|
|
//
|
|
// SAR ...
|
|
"",
|
|
mSarStep,
|
|
mSarMaximum,
|
|
//
|
|
// MACD ...
|
|
"",
|
|
mMacdFastLength,
|
|
mMacdSlowLength,
|
|
mMacdSignaLength,
|
|
mMacdAppliedTo,
|
|
//
|
|
// STOCHASTIC ...
|
|
"",
|
|
mStochKLength,
|
|
mStochDLength,
|
|
mStochSlowing,
|
|
mStochMaMethod,
|
|
mStochMode
|
|
//
|
|
);
|
|
result = mHandler != INVALID_HANDLE;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve Current Config ...
|
|
XOSCInputs GetConfig()
|
|
{
|
|
//
|
|
XOSCInputs result;
|
|
|
|
//
|
|
result.atrLength = mAtrLength;
|
|
result.rviLength = mRviLength;
|
|
result.bullpLength = mBullpLength;
|
|
result.bearpLength = mBearpLength;
|
|
result.volumeAppliedTo = mVolumeAppliedTo;
|
|
result.rsiLength = mRsiLength;
|
|
result.rsiAppliedTo = mRsiAppliedTo;
|
|
result.cciLength = mCciLength;
|
|
result.cciAppliedTo = mCciAppliedTo;
|
|
result.momentumLength = mMomentumLength;
|
|
result.momentumAppliedTo = mMomentumAppliedTo;
|
|
result.sarStep = mSarStep;
|
|
result.sarMaximum = mSarMaximum;
|
|
result.macdFastLength = mMacdFastLength;
|
|
result.macdSlowLength = mMacdSlowLength;
|
|
result.macdSignaLength = mMacdSignaLength;
|
|
result.macdAppliedTo = mMacdAppliedTo;
|
|
result.stochKLength = mStochKLength;
|
|
result.stochDLength = mStochDLength;
|
|
result.stochSlowing = mStochSlowing;
|
|
result.stochMaMethod = mStochMaMethod;
|
|
result.stochMode = mStochMode;
|
|
result.stddevLength = mStddevLength;
|
|
result.stddevShift = mStddevShift;
|
|
result.stddevMethod = mStddevMethod;
|
|
result.stddevAppliedTo = mStddevAppliedTo;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Set Config ...
|
|
bool SetConfig(XOSCInputs &config)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
mAtrLength = config.atrLength;
|
|
mRviLength = config.rviLength;
|
|
mBullpLength = config.bullpLength;
|
|
mBearpLength = config.bearpLength;
|
|
mVolumeAppliedTo = config.volumeAppliedTo;
|
|
mRsiLength = config.rsiLength;
|
|
mRsiAppliedTo = config.rsiAppliedTo;
|
|
mCciLength = config.cciLength;
|
|
mCciAppliedTo = config.cciAppliedTo;
|
|
mMomentumLength = config.momentumLength;
|
|
mMomentumAppliedTo = config.momentumAppliedTo;
|
|
mSarStep = config.sarStep;
|
|
mSarMaximum = config.sarMaximum;
|
|
mMacdFastLength = config.macdFastLength;
|
|
mMacdSlowLength = config.macdSlowLength;
|
|
mMacdSignaLength = config.macdSignaLength;
|
|
mMacdAppliedTo = config.macdAppliedTo;
|
|
mStochKLength = config.stochKLength;
|
|
mStochDLength = config.stochDLength;
|
|
mStochSlowing = config.stochSlowing;
|
|
mStochMaMethod = config.stochMaMethod;
|
|
mStochMode = config.stochMode;
|
|
mStddevLength = config.stddevLength;
|
|
mStddevShift = config.stddevShift;
|
|
mStddevMethod = config.stddevMethod;
|
|
mStddevAppliedTo = config.stddevAppliedTo;
|
|
|
|
//
|
|
result = Init();
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Reading Buffers based on Given Bar Index ...
|
|
virtual void Calculate(
|
|
int barIndex // Given Bar Index
|
|
)
|
|
{
|
|
//
|
|
// ATR ...
|
|
ArraySetAsSeries(atrBuffer, true);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XOSC_ATR_LINE,
|
|
barIndex,
|
|
mLoopbackBars,
|
|
atrBuffer);
|
|
|
|
//
|
|
// RVI ...
|
|
|
|
//
|
|
// MAIN ...
|
|
ArraySetAsSeries(rviMainBuffer, true);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XOSC_RVI_MAIN_LINE,
|
|
barIndex,
|
|
mLoopbackBars,
|
|
rviMainBuffer);
|
|
|
|
//
|
|
// SIGNAL ...
|
|
ArraySetAsSeries(rviSignalBuffer, true);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XOSC_RVI_SIGNAL_LINE,
|
|
barIndex,
|
|
mLoopbackBars,
|
|
rviSignalBuffer);
|
|
|
|
//
|
|
// BULLPOWER ...
|
|
ArraySetAsSeries(bullPBuffer, true);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XOSC_BULLP_LINE,
|
|
barIndex,
|
|
mLoopbackBars,
|
|
bullPBuffer);
|
|
|
|
//
|
|
// BEARPOWER ...
|
|
ArraySetAsSeries(bearPBuffer, true);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XOSC_BEARP_LINE,
|
|
barIndex,
|
|
mLoopbackBars,
|
|
bearPBuffer);
|
|
|
|
//
|
|
// VOLUME ...
|
|
ArraySetAsSeries(volumeBuffer, true);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XOSC_BEARP_LINE,
|
|
barIndex,
|
|
mLoopbackBars,
|
|
volumeBuffer);
|
|
|
|
//
|
|
// RSI ...
|
|
ArraySetAsSeries(rsiBuffer, true);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XOSC_VOLUME_LINE,
|
|
barIndex,
|
|
mLoopbackBars,
|
|
rsiBuffer);
|
|
|
|
//
|
|
// CCI ...
|
|
ArraySetAsSeries(cciBuffer, true);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XOSC_CCI_LINE,
|
|
barIndex,
|
|
mLoopbackBars,
|
|
cciBuffer);
|
|
|
|
//
|
|
// MOMENTUM ...
|
|
ArraySetAsSeries(momentumBuffer, true);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XOSC_MOMENTUM_LINE,
|
|
barIndex,
|
|
mLoopbackBars,
|
|
momentumBuffer);
|
|
|
|
//
|
|
// SAR ...
|
|
ArraySetAsSeries(sarBuffer, true);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XOSC_SAR_LINE,
|
|
barIndex,
|
|
mLoopbackBars,
|
|
sarBuffer);
|
|
|
|
//
|
|
// MACD ...
|
|
|
|
//
|
|
// MAIN ...
|
|
ArraySetAsSeries(macdMainBuffer, true);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XOSC_MACD_MAIN_LINE,
|
|
barIndex,
|
|
mLoopbackBars,
|
|
macdMainBuffer);
|
|
|
|
//
|
|
// SIGNAL ...
|
|
ArraySetAsSeries(macdSignalBuffer, true);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XOSC_MACD_SIGNAL_LINE,
|
|
barIndex,
|
|
mLoopbackBars,
|
|
macdSignalBuffer);
|
|
|
|
//
|
|
// STOCHASTIC ...
|
|
|
|
//
|
|
// MAIN ...
|
|
ArraySetAsSeries(stochMainBuffer, true);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XOSC_STOCH_MAIN_LINE,
|
|
barIndex,
|
|
mLoopbackBars,
|
|
stochMainBuffer);
|
|
|
|
//
|
|
// SIGNAL ...
|
|
ArraySetAsSeries(stochSignalBuffer, true);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XOSC_STOCH_SIGNAL_LINE,
|
|
barIndex,
|
|
mLoopbackBars,
|
|
stochSignalBuffer);
|
|
|
|
//
|
|
// STANDARDDEVIATION ...
|
|
ArraySetAsSeries(stddevBuffer, true);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XOSC_STDDEV_LINE,
|
|
barIndex,
|
|
mLoopbackBars,
|
|
stddevBuffer);
|
|
}
|
|
|
|
//
|
|
// Retrieve Info at Specific Bar Index ...
|
|
XOSCInfo GetInfo(
|
|
int barIndex // Given Bar Index
|
|
)
|
|
{
|
|
//
|
|
XOSCInfo result;
|
|
|
|
//
|
|
if (barIndex < 0)
|
|
{
|
|
barIndex = 0;
|
|
}
|
|
|
|
//
|
|
// Do Calculations ...
|
|
Calculate(barIndex);
|
|
|
|
//
|
|
// Generate Candle Time ...
|
|
datetime barTime = GetCandleTime(
|
|
mSymbol,
|
|
mPeriod,
|
|
barIndex);
|
|
|
|
//
|
|
// Fill Result ...
|
|
result.symbol = mSymbol;
|
|
result.period = mPeriod;
|
|
result.barTime = barTime;
|
|
result.barIndex = barIndex;
|
|
|
|
//
|
|
result.atr = atrBuffer[barIndex];
|
|
result.rviMain = rviMainBuffer[barIndex];
|
|
result.rviSignal = rviSignalBuffer[barIndex];
|
|
result.bullPower = bullPBuffer[barIndex];
|
|
result.bearPower = bearPBuffer[barIndex];
|
|
result.volume = volumeBuffer[barIndex];
|
|
result.rsi = rsiBuffer[barIndex];
|
|
result.cci = cciBuffer[barIndex];
|
|
result.momentum = momentumBuffer[barIndex];
|
|
result.sar = sarBuffer[barIndex];
|
|
result.macdMain = macdMainBuffer[barIndex];
|
|
result.macdSignal = macdMainBuffer[barIndex];
|
|
result.stochMain = stochMainBuffer[barIndex];
|
|
result.stochSignal = stochSignalBuffer[barIndex];
|
|
result.stddev = stddevBuffer[barIndex];
|
|
|
|
//
|
|
Copy(
|
|
atrBuffer,
|
|
result.atrs);
|
|
Copy(
|
|
rviMainBuffer,
|
|
result.rviMains);
|
|
Copy(
|
|
rviSignalBuffer,
|
|
result.rviSignals);
|
|
Copy(
|
|
bullPBuffer,
|
|
result.bullPs);
|
|
Copy(
|
|
bearPBuffer,
|
|
result.bearPs);
|
|
Copy(
|
|
volumeBuffer,
|
|
result.volumes);
|
|
Copy(
|
|
rsiBuffer,
|
|
result.rsis);
|
|
Copy(
|
|
cciBuffer,
|
|
result.ccis);
|
|
Copy(
|
|
momentumBuffer,
|
|
result.momentums);
|
|
Copy(
|
|
sarBuffer,
|
|
result.sars);
|
|
Copy(
|
|
macdMainBuffer,
|
|
result.macdMains);
|
|
Copy(
|
|
macdSignalBuffer,
|
|
result.macdSignals);
|
|
Copy(
|
|
stochMainBuffer,
|
|
result.stochMains);
|
|
Copy(
|
|
stochSignalBuffer,
|
|
result.stochSignals);
|
|
Copy(
|
|
stddevBuffer,
|
|
result.stddevs);
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// END Provided Functions ...
|
|
//
|
|
|
|
//
|
|
// Protected ...
|
|
protected:
|
|
//
|
|
// Private ...
|
|
private:
|
|
//
|
|
// Indicator Properties ...
|
|
//
|
|
// ATR ...
|
|
int mAtrLength;
|
|
|
|
//
|
|
// RVI ...
|
|
int mRviLength;
|
|
|
|
//
|
|
// BULLPOWER ...
|
|
int mBullpLength;
|
|
|
|
//
|
|
// BEARPOWER ...
|
|
int mBearpLength;
|
|
|
|
//
|
|
// VOLUME ...
|
|
ENUM_APPLIED_VOLUME mVolumeAppliedTo;
|
|
|
|
//
|
|
// RSI ...
|
|
int mRsiLength;
|
|
ENUM_APPLIED_PRICE mRsiAppliedTo;
|
|
|
|
//
|
|
// CCI ...
|
|
int mCciLength;
|
|
ENUM_APPLIED_PRICE mCciAppliedTo;
|
|
|
|
//
|
|
// MOMENTUM ...
|
|
int mMomentumLength;
|
|
ENUM_APPLIED_PRICE mMomentumAppliedTo;
|
|
|
|
//
|
|
// SAR ...
|
|
double mSarStep;
|
|
double mSarMaximum;
|
|
|
|
//
|
|
// MACD ...
|
|
int mMacdFastLength;
|
|
int mMacdSlowLength;
|
|
int mMacdSignaLength;
|
|
ENUM_APPLIED_PRICE mMacdAppliedTo;
|
|
|
|
//
|
|
// STOCHASTIC ...
|
|
int mStochKLength;
|
|
int mStochDLength;
|
|
int mStochSlowing;
|
|
ENUM_MA_METHOD mStochMaMethod;
|
|
ENUM_STO_PRICE mStochMode;
|
|
|
|
//
|
|
// STANDARDDEVIATION ...
|
|
int mStddevLength;
|
|
int mStddevShift;
|
|
ENUM_MA_METHOD mStddevMethod;
|
|
ENUM_APPLIED_PRICE mStddevAppliedTo;
|
|
};
|
|
|
|
//
|
|
// START Usefull Functions ...
|
|
//
|
|
|
|
//
|
|
// END Usefull Functions ...
|
|
//
|