last works ...
This commit is contained in:
@@ -1,960 +0,0 @@
|
||||
///////////////////////////////////////////////////////
|
||||
//
|
||||
// SaherElm IT Center MQL5 Helper Class Library
|
||||
// ----------------------------------------------
|
||||
// Name: XSCXCHMAHelper
|
||||
// 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
|
||||
|
||||
//
|
||||
// Imports ...
|
||||
#include "../Classes/x-saherelm.xhelper.class.mq5"
|
||||
|
||||
//
|
||||
// Definitions ...
|
||||
|
||||
//
|
||||
enum ENUM_XCHMA_BUFFERS
|
||||
{
|
||||
//
|
||||
// LC ...
|
||||
XCHMA_LC_FAST_LINE = 0,
|
||||
XCHMA_LC_SLOW_LINE = 1,
|
||||
//
|
||||
// MC ...
|
||||
XCHMA_MC_FAST_LINE = 2,
|
||||
XCHMA_MC_SLOW_LINE = 3,
|
||||
//
|
||||
// SC ...
|
||||
XCHMA_SC_FAST_LINE = 4,
|
||||
XCHMA_SC_SLOW_LINE = 5,
|
||||
//
|
||||
XCHMA_HOT_STATE_LINE = 6,
|
||||
};
|
||||
|
||||
//
|
||||
// Input Models ...
|
||||
struct XCHMAInputs
|
||||
{
|
||||
//
|
||||
// Props ...
|
||||
//
|
||||
// Hot Areas ...
|
||||
bool drawHotAreas; // Draw Hot Areas Symbol
|
||||
uchar hotBullishArrowCode; // Hot Bullish Arrow Code
|
||||
color hotBullishArrowColor; // Hot Bullish Arrow Color
|
||||
uchar hotBearishArrowCode; // Hot Bearish Arrow Code
|
||||
color hotBearishArrowColor; // Hot Bearish Arrow Color
|
||||
|
||||
//
|
||||
// Long Cycle ...
|
||||
// LC Market ...
|
||||
int lcFastLength; // Fast Length
|
||||
int lcSlowLength; // Slow Length
|
||||
ENUM_MA_METHOD lcMethod; // Calculation Method
|
||||
ENUM_APPLIED_PRICE lcAppliedTo; // Applied To
|
||||
// LC Style ...
|
||||
int lcDrawWidth; // Draw Width
|
||||
ENUM_DRAW_TYPE lcDrawType; // Draw Type
|
||||
ENUM_LINE_STYLE lcDrawStyle; // Draw Style
|
||||
color lcFastColor; // Fast Color
|
||||
color lcSlowColor; // Slow Color
|
||||
// LC Drawings ...
|
||||
bool lcDrawFast; // Draw Fast
|
||||
bool lcDrawSlow; // Draw Slow
|
||||
bool lcDrawCrosses; // Draw Cross Lines
|
||||
|
||||
//
|
||||
// Medium Cycle ...
|
||||
// MC Market ...
|
||||
int mcFastLength; // Fast Length
|
||||
int mcSlowLength; // Slow Length
|
||||
ENUM_MA_METHOD mcMethod; // Calculation Method
|
||||
ENUM_APPLIED_PRICE mcAppliedTo; // Applied To
|
||||
// MC Style ...
|
||||
int mcDrawWidth; // Draw Width
|
||||
ENUM_DRAW_TYPE mcDrawType; // Draw Type
|
||||
ENUM_LINE_STYLE mcDrawStyle; // Draw Style
|
||||
color mcFastColor; // Fast Color
|
||||
color mcSlowColor; // Slow Color
|
||||
// MC Drawings ...
|
||||
bool mcDrawFast; // Draw Fast
|
||||
bool mcDrawSlow; // Draw Slow
|
||||
bool mcDrawCrosses; // Draw Cross Lines
|
||||
|
||||
//
|
||||
// Short Cycle ...
|
||||
// SC Market ...
|
||||
int scFastLength; // Fast Length
|
||||
int scSlowLength; // Slow Length
|
||||
ENUM_MA_METHOD scMethod; // Calculation Method
|
||||
ENUM_APPLIED_PRICE scAppliedTo; // Applied To
|
||||
// SC Style ...
|
||||
int scDrawWidth; // Draw Width
|
||||
ENUM_DRAW_TYPE scDrawType; // Draw Type
|
||||
ENUM_LINE_STYLE scDrawStyle; // Draw Style
|
||||
color scFastColor; // Fast Color
|
||||
color scSlowColor; // Slow Color
|
||||
// SC Drawings ...
|
||||
bool scDrawFast; // Draw Fast
|
||||
bool scDrawSlow; // Draw Slow
|
||||
bool scDrawCrosses; // Draw Cross Lines
|
||||
|
||||
//
|
||||
// Constructor(s) ...
|
||||
XCHMAInputs()
|
||||
{
|
||||
//
|
||||
Clean();
|
||||
}
|
||||
|
||||
//
|
||||
// Tools ...
|
||||
|
||||
//
|
||||
// Clean ...
|
||||
void Clean()
|
||||
{
|
||||
//
|
||||
// Hot Areas ...
|
||||
drawHotAreas = false;
|
||||
hotBullishArrowCode = 228;
|
||||
hotBullishArrowColor = CLR_NONE;
|
||||
hotBearishArrowCode = 230;
|
||||
hotBearishArrowColor = CLR_NONE;
|
||||
|
||||
//
|
||||
// Long Cycle ...
|
||||
// LC Market ...
|
||||
lcFastLength = 20;
|
||||
lcSlowLength = 50;
|
||||
lcMethod = MODE_EMA;
|
||||
lcAppliedTo = PRICE_CLOSE;
|
||||
// LC Style ...
|
||||
lcDrawWidth = 1;
|
||||
lcDrawType = DRAW_NONE;
|
||||
lcDrawStyle = STYLE_DOT;
|
||||
lcFastColor = CLR_NONE;
|
||||
lcSlowColor = CLR_NONE;
|
||||
// LC Drawings ...
|
||||
lcDrawFast = false;
|
||||
lcDrawSlow = false;
|
||||
lcDrawCrosses = false;
|
||||
|
||||
//
|
||||
// Medium Cycle ...
|
||||
// MC Market ...
|
||||
mcFastLength = 10;
|
||||
mcSlowLength = 30;
|
||||
mcMethod = MODE_EMA;
|
||||
mcAppliedTo = PRICE_CLOSE;
|
||||
// MC Style ...
|
||||
mcDrawWidth = 1;
|
||||
mcDrawType = DRAW_NONE;
|
||||
mcDrawStyle = STYLE_DOT;
|
||||
mcFastColor = CLR_NONE;
|
||||
mcSlowColor = CLR_NONE;
|
||||
// MC Drawings ...
|
||||
mcDrawFast = false;
|
||||
mcDrawSlow = false;
|
||||
mcDrawCrosses = false;
|
||||
|
||||
//
|
||||
// Short Cycle ...
|
||||
// SC Market ...
|
||||
scFastLength = 7;
|
||||
scSlowLength = 14;
|
||||
scMethod = MODE_EMA;
|
||||
scAppliedTo = PRICE_CLOSE;
|
||||
// SC Style ...
|
||||
scDrawWidth = 1;
|
||||
scDrawType = DRAW_NONE;
|
||||
scDrawStyle = STYLE_SOLID;
|
||||
scFastColor = CLR_NONE;
|
||||
scSlowColor = CLR_NONE;
|
||||
// SC Drawings ...
|
||||
scDrawFast = false;
|
||||
scDrawSlow = false;
|
||||
scDrawCrosses = false;
|
||||
}
|
||||
|
||||
//
|
||||
// Default ...
|
||||
void Default()
|
||||
{
|
||||
//
|
||||
// Hot Areas ...
|
||||
drawHotAreas = false;
|
||||
hotBullishArrowCode = 228;
|
||||
hotBullishArrowColor = CLR_NONE;
|
||||
hotBearishArrowCode = 230;
|
||||
hotBearishArrowColor = CLR_NONE;
|
||||
|
||||
//
|
||||
// Long Cycle ...
|
||||
// LC Market ...
|
||||
lcFastLength = 20;
|
||||
lcSlowLength = 50;
|
||||
lcMethod = MODE_EMA;
|
||||
lcAppliedTo = PRICE_CLOSE;
|
||||
// LC Style ...
|
||||
lcDrawWidth = 1;
|
||||
lcDrawType = DRAW_LINE;
|
||||
lcDrawStyle = STYLE_DOT;
|
||||
lcFastColor = clrAqua;
|
||||
lcSlowColor = clrFuchsia;
|
||||
// LC Drawings ...
|
||||
lcDrawFast = false;
|
||||
lcDrawSlow = false;
|
||||
lcDrawCrosses = false;
|
||||
|
||||
//
|
||||
// Medium Cycle ...
|
||||
// MC Market ...
|
||||
mcFastLength = 10;
|
||||
mcSlowLength = 30;
|
||||
mcMethod = MODE_EMA;
|
||||
mcAppliedTo = PRICE_CLOSE;
|
||||
// MC Style ...
|
||||
mcDrawWidth = 1;
|
||||
mcDrawType = DRAW_LINE;
|
||||
mcDrawStyle = STYLE_DOT;
|
||||
mcFastColor = clrLime;
|
||||
mcSlowColor = clrRed;
|
||||
// MC Drawings ...
|
||||
mcDrawFast = false;
|
||||
mcDrawSlow = false;
|
||||
mcDrawCrosses = false;
|
||||
|
||||
//
|
||||
// Short Cycle ...
|
||||
// SC Market ...
|
||||
scFastLength = 7;
|
||||
scSlowLength = 14;
|
||||
scMethod = MODE_EMA;
|
||||
scAppliedTo = PRICE_CLOSE;
|
||||
// SC Style ...
|
||||
scDrawWidth = 1;
|
||||
scDrawType = DRAW_LINE;
|
||||
scDrawStyle = STYLE_SOLID;
|
||||
scFastColor = clrLightBlue;
|
||||
scSlowColor = clrLightSalmon;
|
||||
// SC Drawings ...
|
||||
scDrawFast = false;
|
||||
scDrawSlow = false;
|
||||
scDrawCrosses = false;
|
||||
}
|
||||
|
||||
//
|
||||
// Validate ...
|
||||
bool IsValid()
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
result =
|
||||
//
|
||||
(lcFastLength >= 4 && lcSlowLength > lcFastLength) &&
|
||||
(mcFastLength >= 4 && mcSlowLength > mcFastLength) &&
|
||||
(scFastLength >= 4 && scSlowLength > scFastLength) &&
|
||||
(lcFastLength > mcFastLength &&
|
||||
mcFastLength > scFastLength)
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Retrieve MAx Length ...
|
||||
int Max()
|
||||
{
|
||||
//
|
||||
int result = 0;
|
||||
|
||||
//
|
||||
result = MathMax(scFastLength, scSlowLength);
|
||||
result = MathMax(result, lcFastLength);
|
||||
result = MathMax(result, lcSlowLength);
|
||||
result = MathMax(result, mcFastLength);
|
||||
result = MathMax(result, mcSlowLength);
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
// Class ...
|
||||
class XSCXCHMAHelper : public XSCBaseHelper
|
||||
{
|
||||
//
|
||||
// Public ...
|
||||
public:
|
||||
//
|
||||
// Props ...
|
||||
|
||||
//
|
||||
// Constructors ...
|
||||
XSCXCHMAHelper() : XSCBaseHelper(_Symbol, _Period)
|
||||
{
|
||||
}
|
||||
|
||||
//
|
||||
// Deconstructor ...
|
||||
~XSCXCHMAHelper() {}
|
||||
|
||||
//
|
||||
// Tools ...
|
||||
bool Init(
|
||||
string symbol, // Trading Symbol
|
||||
ENUM_TIMEFRAMES period, // Trading Period
|
||||
XCHMAInputs &inputs // Inputs
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
mSymbol = symbol;
|
||||
mPeriod = period;
|
||||
|
||||
//
|
||||
result = inputs.IsValid();
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
mInputs = inputs;
|
||||
|
||||
//
|
||||
ArraySetAsSeries(scFastBuffer, true);
|
||||
ArraySetAsSeries(scSlowBuffer, true);
|
||||
ArraySetAsSeries(mcFastBuffer, true);
|
||||
ArraySetAsSeries(mcSlowBuffer, true);
|
||||
ArraySetAsSeries(lcFastBuffer, true);
|
||||
ArraySetAsSeries(lcSlowBuffer, true);
|
||||
ArraySetAsSeries(hotStateBuffer, true);
|
||||
|
||||
//
|
||||
mHandler = iCustom(
|
||||
mSymbol,
|
||||
mPeriod,
|
||||
"x-saherelm.xchma",
|
||||
//
|
||||
// Inputs ...
|
||||
//
|
||||
// Hot Areas ...
|
||||
"",
|
||||
mInputs.drawHotAreas, // Draw Hot Areas Symbol
|
||||
mInputs.hotBullishArrowCode, // Hot Bullish Arrow Code
|
||||
mInputs.hotBullishArrowColor, // Hot Bullish Arrow Color
|
||||
mInputs.hotBearishArrowCode, // Hot Bearish Arrow Code
|
||||
mInputs.hotBearishArrowColor, // Hot Bearish Arrow Color
|
||||
//
|
||||
// Long Cycle ...
|
||||
"",
|
||||
//
|
||||
// LC Market ...
|
||||
"",
|
||||
mInputs.lcFastLength, // Fast Length
|
||||
mInputs.lcSlowLength, // Slow Length
|
||||
mInputs.lcMethod, // Calculation Method
|
||||
mInputs.lcAppliedTo, // Applied To
|
||||
//
|
||||
// LC Style ...
|
||||
"",
|
||||
mInputs.lcDrawWidth, // Draw Width
|
||||
mInputs.lcDrawType, // Draw Type
|
||||
mInputs.lcDrawStyle, // Draw Style
|
||||
mInputs.lcFastColor, // Fast Color
|
||||
mInputs.lcSlowColor, // Slow Color
|
||||
//
|
||||
// LC Drawings ...
|
||||
"",
|
||||
mInputs.lcDrawFast, // Draw Fast
|
||||
mInputs.lcDrawSlow, // Draw Slow
|
||||
mInputs.lcDrawCrosses, // Draw Cross Lines
|
||||
//
|
||||
// Medium Cycle ...
|
||||
"",
|
||||
//
|
||||
// MC Market ...
|
||||
"",
|
||||
mInputs.mcFastLength, // Fast Length
|
||||
mInputs.mcSlowLength, // Slow Length
|
||||
mInputs.mcMethod, // Calculation Method
|
||||
mInputs.mcAppliedTo, // Applied To
|
||||
//
|
||||
// MC Style ...
|
||||
"",
|
||||
mInputs.mcDrawWidth, // Draw Width
|
||||
mInputs.mcDrawType, // Draw Type
|
||||
mInputs.mcDrawStyle, // Draw Style
|
||||
mInputs.mcFastColor, // Fast Color
|
||||
mInputs.mcSlowColor, // Slow Color
|
||||
//
|
||||
// MC Drawings ...
|
||||
"",
|
||||
mInputs.mcDrawFast, // Draw Fast
|
||||
mInputs.mcDrawSlow, // Draw Slow
|
||||
mInputs.mcDrawCrosses, // Draw Cross Lines
|
||||
//
|
||||
// Short Cycle ...
|
||||
"",
|
||||
//
|
||||
// SC Market ...
|
||||
"",
|
||||
mInputs.scFastLength, // Fast Length
|
||||
mInputs.scSlowLength, // Slow Length
|
||||
mInputs.scMethod, // Calculation Method
|
||||
mInputs.scAppliedTo, // Applied To
|
||||
//
|
||||
// SC Style ...
|
||||
"",
|
||||
mInputs.scDrawWidth, // Draw Width
|
||||
mInputs.scDrawType, // Draw Type
|
||||
mInputs.scDrawStyle, // Draw Style
|
||||
mInputs.scFastColor, // Fast Color
|
||||
mInputs.scSlowColor, // Slow Color
|
||||
//
|
||||
// SC Drawings ...
|
||||
"",
|
||||
mInputs.scDrawFast, // Draw Fast
|
||||
mInputs.scDrawSlow, // Draw Slow
|
||||
mInputs.scDrawCrosses // Draw Cross Lines
|
||||
//
|
||||
);
|
||||
result = mHandler != INVALID_HANDLE;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Inputs ...
|
||||
|
||||
//
|
||||
XCHMAInputs GetInputs()
|
||||
{
|
||||
return mInputs;
|
||||
}
|
||||
|
||||
//
|
||||
bool SetInputs(
|
||||
XCHMAInputs &inputs // Configs
|
||||
)
|
||||
{
|
||||
//
|
||||
return Init(
|
||||
mSymbol,
|
||||
mPeriod,
|
||||
inputs
|
||||
//
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// Buffers ...
|
||||
|
||||
//
|
||||
// Short ...
|
||||
|
||||
//
|
||||
double GetSCFast(
|
||||
int barIndex // Bar Index
|
||||
)
|
||||
{
|
||||
//
|
||||
if (barIndex < 0)
|
||||
{
|
||||
barIndex = 0;
|
||||
}
|
||||
|
||||
//
|
||||
Calculate();
|
||||
|
||||
//
|
||||
int count = ArraySize(scFastBuffer);
|
||||
if (barIndex >= count)
|
||||
{
|
||||
barIndex = count - 1;
|
||||
}
|
||||
|
||||
//
|
||||
return scFastBuffer[barIndex];
|
||||
}
|
||||
|
||||
//
|
||||
// Copy Required Items ...
|
||||
int CopySCFast(
|
||||
int start, // Start
|
||||
int count, // Number of Items for read
|
||||
double &buffer[], // Dest Buffer
|
||||
bool forceClean = true // Force To Clean buffer
|
||||
)
|
||||
{
|
||||
//
|
||||
// Update Calculations ...
|
||||
Calculate();
|
||||
|
||||
//
|
||||
// Copy Items ...
|
||||
return Copy(
|
||||
start,
|
||||
count,
|
||||
scFastBuffer,
|
||||
buffer,
|
||||
forceClean
|
||||
//
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
double GetSCSlow(
|
||||
int barIndex // Bar Index
|
||||
)
|
||||
{
|
||||
//
|
||||
if (barIndex < 0)
|
||||
{
|
||||
barIndex = 0;
|
||||
}
|
||||
|
||||
//
|
||||
Calculate();
|
||||
|
||||
//
|
||||
int count = ArraySize(scSlowBuffer);
|
||||
if (barIndex >= count)
|
||||
{
|
||||
barIndex = count - 1;
|
||||
}
|
||||
|
||||
//
|
||||
return scSlowBuffer[barIndex];
|
||||
}
|
||||
|
||||
//
|
||||
// Copy Required Items ...
|
||||
int CopySCSlow(
|
||||
int start, // Start
|
||||
int count, // Number of Items for read
|
||||
double &buffer[], // Dest Buffer
|
||||
bool forceClean = true // Force To Clean buffer
|
||||
)
|
||||
{
|
||||
//
|
||||
// Update Calculations ...
|
||||
Calculate();
|
||||
|
||||
//
|
||||
// Copy Items ...
|
||||
return Copy(
|
||||
start,
|
||||
count,
|
||||
scSlowBuffer,
|
||||
buffer,
|
||||
forceClean
|
||||
//
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// Medium ...
|
||||
|
||||
//
|
||||
double GetMCFast(
|
||||
int barIndex // Bar Index
|
||||
)
|
||||
{
|
||||
//
|
||||
if (barIndex < 0)
|
||||
{
|
||||
barIndex = 0;
|
||||
}
|
||||
|
||||
//
|
||||
Calculate();
|
||||
|
||||
//
|
||||
int count = ArraySize(mcFastBuffer);
|
||||
if (barIndex >= count)
|
||||
{
|
||||
barIndex = count - 1;
|
||||
}
|
||||
|
||||
//
|
||||
return mcFastBuffer[barIndex];
|
||||
}
|
||||
|
||||
//
|
||||
// Copy Required Items ...
|
||||
int CopyMCFast(
|
||||
int start, // Start
|
||||
int count, // Number of Items for read
|
||||
double &buffer[], // Dest Buffer
|
||||
bool forceClean = true // Force To Clean buffer
|
||||
)
|
||||
{
|
||||
//
|
||||
// Update Calculations ...
|
||||
Calculate();
|
||||
|
||||
//
|
||||
// Copy Items ...
|
||||
return Copy(
|
||||
start,
|
||||
count,
|
||||
mcFastBuffer,
|
||||
buffer,
|
||||
forceClean
|
||||
//
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
double GetMCSlow(
|
||||
int barIndex // Bar Index
|
||||
)
|
||||
{
|
||||
//
|
||||
if (barIndex < 0)
|
||||
{
|
||||
barIndex = 0;
|
||||
}
|
||||
|
||||
//
|
||||
Calculate();
|
||||
|
||||
//
|
||||
int count = ArraySize(mcSlowBuffer);
|
||||
if (barIndex >= count)
|
||||
{
|
||||
barIndex = count - 1;
|
||||
}
|
||||
|
||||
//
|
||||
return mcSlowBuffer[barIndex];
|
||||
}
|
||||
|
||||
//
|
||||
// Copy Required Items ...
|
||||
int CopyMCSlow(
|
||||
int start, // Start
|
||||
int count, // Number of Items for read
|
||||
double &buffer[], // Dest Buffer
|
||||
bool forceClean = true // Force To Clean buffer
|
||||
)
|
||||
{
|
||||
//
|
||||
// Update Calculations ...
|
||||
Calculate();
|
||||
|
||||
//
|
||||
// Copy Items ...
|
||||
return Copy(
|
||||
start,
|
||||
count,
|
||||
mcSlowBuffer,
|
||||
buffer,
|
||||
forceClean
|
||||
//
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// Long ...
|
||||
|
||||
//
|
||||
double GetLCFast(
|
||||
int barIndex // Bar Index
|
||||
)
|
||||
{
|
||||
//
|
||||
if (barIndex < 0)
|
||||
{
|
||||
barIndex = 0;
|
||||
}
|
||||
|
||||
//
|
||||
Calculate();
|
||||
|
||||
//
|
||||
int count = ArraySize(lcFastBuffer);
|
||||
if (barIndex >= count)
|
||||
{
|
||||
barIndex = count - 1;
|
||||
}
|
||||
|
||||
//
|
||||
return lcFastBuffer[barIndex];
|
||||
}
|
||||
|
||||
//
|
||||
// Copy Required Items ...
|
||||
int CopyLCFast(
|
||||
int start, // Start
|
||||
int count, // Number of Items for read
|
||||
double &buffer[], // Dest Buffer
|
||||
bool forceClean = true // Force To Clean buffer
|
||||
)
|
||||
{
|
||||
//
|
||||
// Update Calculations ...
|
||||
Calculate();
|
||||
|
||||
//
|
||||
// Copy Items ...
|
||||
return Copy(
|
||||
start,
|
||||
count,
|
||||
lcFastBuffer,
|
||||
buffer,
|
||||
forceClean
|
||||
//
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
double GetLCSlow(
|
||||
int barIndex // Bar Index
|
||||
)
|
||||
{
|
||||
//
|
||||
if (barIndex < 0)
|
||||
{
|
||||
barIndex = 0;
|
||||
}
|
||||
|
||||
//
|
||||
Calculate();
|
||||
|
||||
//
|
||||
int count = ArraySize(lcSlowBuffer);
|
||||
if (barIndex >= count)
|
||||
{
|
||||
barIndex = count - 1;
|
||||
}
|
||||
|
||||
//
|
||||
return lcSlowBuffer[barIndex];
|
||||
}
|
||||
|
||||
//
|
||||
// Copy Required Items ...
|
||||
int CopyLCSlow(
|
||||
int start, // Start
|
||||
int count, // Number of Items for read
|
||||
double &buffer[], // Dest Buffer
|
||||
bool forceClean = true // Force To Clean buffer
|
||||
)
|
||||
{
|
||||
//
|
||||
// Update Calculations ...
|
||||
Calculate();
|
||||
|
||||
//
|
||||
// Copy Items ...
|
||||
return Copy(
|
||||
start,
|
||||
count,
|
||||
lcSlowBuffer,
|
||||
buffer,
|
||||
forceClean
|
||||
//
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
double GetHotState(
|
||||
int barIndex // Bar Index
|
||||
)
|
||||
{
|
||||
//
|
||||
if (barIndex < 0)
|
||||
{
|
||||
barIndex = 0;
|
||||
}
|
||||
|
||||
//
|
||||
Calculate();
|
||||
|
||||
//
|
||||
int count = ArraySize(hotStateBuffer);
|
||||
if (barIndex >= count)
|
||||
{
|
||||
barIndex = count - 1;
|
||||
}
|
||||
|
||||
//
|
||||
return hotStateBuffer[barIndex];
|
||||
}
|
||||
|
||||
//
|
||||
// Copy Required Items ...
|
||||
int CopyHotState(
|
||||
int start, // Start
|
||||
int count, // Number of Items for read
|
||||
double &buffer[], // Dest Buffer
|
||||
bool forceClean = true // Force To Clean buffer
|
||||
)
|
||||
{
|
||||
//
|
||||
// Update Calculations ...
|
||||
Calculate();
|
||||
|
||||
//
|
||||
// Copy Items ...
|
||||
return Copy(
|
||||
start,
|
||||
count,
|
||||
hotStateBuffer,
|
||||
buffer,
|
||||
forceClean
|
||||
//
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// Protected ...
|
||||
protected:
|
||||
//
|
||||
// Private ...
|
||||
private:
|
||||
//
|
||||
// Props ...
|
||||
XCHMAInputs mInputs; // Inputs ...
|
||||
|
||||
//
|
||||
// Buffers ...
|
||||
double scFastBuffer[];
|
||||
double scSlowBuffer[];
|
||||
double mcFastBuffer[];
|
||||
double mcSlowBuffer[];
|
||||
double lcFastBuffer[];
|
||||
double lcSlowBuffer[];
|
||||
double hotStateBuffer[];
|
||||
|
||||
//
|
||||
// Tools ...
|
||||
|
||||
//
|
||||
// Calculate Values Until Now ...
|
||||
void Calculate()
|
||||
{
|
||||
//
|
||||
int totalBars = CountBars();
|
||||
|
||||
//
|
||||
// Short Cycle ...
|
||||
|
||||
//
|
||||
// Fast ...
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
XCHMA_SC_FAST_LINE,
|
||||
0,
|
||||
totalBars,
|
||||
scFastBuffer
|
||||
//
|
||||
);
|
||||
|
||||
//
|
||||
// Slow ...
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
XCHMA_SC_SLOW_LINE,
|
||||
0,
|
||||
totalBars,
|
||||
scSlowBuffer
|
||||
//
|
||||
);
|
||||
|
||||
//
|
||||
// Medium Cycle ...
|
||||
|
||||
//
|
||||
// Fast ...
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
XCHMA_MC_FAST_LINE,
|
||||
0,
|
||||
totalBars,
|
||||
mcFastBuffer
|
||||
//
|
||||
);
|
||||
|
||||
//
|
||||
// Slow ...
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
XCHMA_MC_SLOW_LINE,
|
||||
0,
|
||||
totalBars,
|
||||
mcSlowBuffer
|
||||
//
|
||||
);
|
||||
|
||||
//
|
||||
// Long Cycle ...
|
||||
|
||||
//
|
||||
// Fast ...
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
XCHMA_LC_FAST_LINE,
|
||||
0,
|
||||
totalBars,
|
||||
lcFastBuffer
|
||||
//
|
||||
);
|
||||
|
||||
//
|
||||
// Slow ...
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
XCHMA_LC_SLOW_LINE,
|
||||
0,
|
||||
totalBars,
|
||||
lcSlowBuffer
|
||||
//
|
||||
);
|
||||
|
||||
//
|
||||
// Hot State ...
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
XCHMA_HOT_STATE_LINE,
|
||||
0,
|
||||
totalBars,
|
||||
hotStateBuffer
|
||||
//
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
// Tools ...
|
||||
Reference in New Issue
Block a user