last ...
This commit is contained in:
@@ -0,0 +1,68 @@
|
|||||||
|
///////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// SaherElm IT Center XTest MQL5 Expert Advisor
|
||||||
|
// -------------------------------------------------
|
||||||
|
// Name: XSTRCCIEA
|
||||||
|
// Description: an Exper Advisor which used Panels
|
||||||
|
//
|
||||||
|
// Maintainer:
|
||||||
|
// ------------
|
||||||
|
// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com)
|
||||||
|
//
|
||||||
|
//////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Global Properties ...
|
||||||
|
#property copyright "Copyright 2023, SaherElm IT Center"
|
||||||
|
#property link "https://saherelm.ir"
|
||||||
|
#property version "1.00"
|
||||||
|
#property description "SaherElm XSTRCCIEA"
|
||||||
|
#property strict
|
||||||
|
|
||||||
|
//
|
||||||
|
// Imports ...
|
||||||
|
#include "../Classes/x-saherelm.x-alert.class.mq5"
|
||||||
|
#include "../Classes/x-saherelm.x-trade.class.mq5"
|
||||||
|
|
||||||
|
//
|
||||||
|
// Setup Requirements ...
|
||||||
|
#include "../Helpers/x-saherelm.x121.xstr.helper.mq5"
|
||||||
|
|
||||||
|
//
|
||||||
|
#define ShortName "XSTRCCIEA"
|
||||||
|
|
||||||
|
//
|
||||||
|
// Inputs ...
|
||||||
|
|
||||||
|
//
|
||||||
|
// Common ...
|
||||||
|
input group "Common";
|
||||||
|
input long eaMagicNumber = 78692110; // Magic Number
|
||||||
|
input int eaSlippage = 10; // Slippgae
|
||||||
|
input string eaLogSuffix = ""; // Log Suffix
|
||||||
|
|
||||||
|
//
|
||||||
|
// Alert ...
|
||||||
|
// Here we Provider All Requirements for
|
||||||
|
// Configuring Alert Provider ...
|
||||||
|
input group "Alert";
|
||||||
|
input bool eaEnableAlerts = true; // Enable Alerts
|
||||||
|
input bool eaLogAlerts = true; // Log Alerts
|
||||||
|
input bool eaMailAlerts = false; // Mail Alerts
|
||||||
|
input bool eaPushAlerts = false; // Push Alerts
|
||||||
|
input bool eaTerminalAlerts = false; // Terminal Alerts
|
||||||
|
|
||||||
|
//
|
||||||
|
// Time Report ...
|
||||||
|
input group "Reports";
|
||||||
|
input bool eaReportNewMonths = false; // Report New Month
|
||||||
|
input bool eaReportNewWeeks = false; // Report New Weeks
|
||||||
|
input bool eaReportNewDays = true; // Report New Days
|
||||||
|
input bool eaReportNewHours = false; // Report New Hours
|
||||||
|
|
||||||
|
//
|
||||||
|
// Variables, Instances ...
|
||||||
|
XCAlert *eaAlert;
|
||||||
|
XCTrade *eaTrade;
|
||||||
|
|
||||||
|
//
|
||||||
|
XCX121XSTRHelper *strHelper;
|
||||||
@@ -355,6 +355,7 @@ struct X121Conditions
|
|||||||
|
|
||||||
//
|
//
|
||||||
double strBuffer[];
|
double strBuffer[];
|
||||||
|
double vidyaBuffer[];
|
||||||
double strUpBuffer[];
|
double strUpBuffer[];
|
||||||
double strMidBuffer[];
|
double strMidBuffer[];
|
||||||
double strDownBuffer[];
|
double strDownBuffer[];
|
||||||
@@ -777,6 +778,7 @@ struct X121Conditions
|
|||||||
|
|
||||||
//
|
//
|
||||||
Clean(strBuffer);
|
Clean(strBuffer);
|
||||||
|
Clean(vidyaBuffer);
|
||||||
Clean(strUpBuffer);
|
Clean(strUpBuffer);
|
||||||
Clean(strMidBuffer);
|
Clean(strMidBuffer);
|
||||||
Clean(strDownBuffer);
|
Clean(strDownBuffer);
|
||||||
@@ -791,6 +793,7 @@ struct X121Conditions
|
|||||||
|
|
||||||
//
|
//
|
||||||
ArraySetAsSeries(strBuffer, true);
|
ArraySetAsSeries(strBuffer, true);
|
||||||
|
ArraySetAsSeries(vidyaBuffer, true);
|
||||||
ArraySetAsSeries(strUpBuffer, true);
|
ArraySetAsSeries(strUpBuffer, true);
|
||||||
ArraySetAsSeries(strMidBuffer, true);
|
ArraySetAsSeries(strMidBuffer, true);
|
||||||
ArraySetAsSeries(strDownBuffer, true);
|
ArraySetAsSeries(strDownBuffer, true);
|
||||||
@@ -2777,6 +2780,12 @@ class XCX121Helper : public XCBase
|
|||||||
//
|
//
|
||||||
// Buffers ...
|
// Buffers ...
|
||||||
|
|
||||||
|
//
|
||||||
|
Copy(
|
||||||
|
xstrConditions.vidyaBuffer,
|
||||||
|
conditions.vidyaBuffer //
|
||||||
|
);
|
||||||
|
|
||||||
//
|
//
|
||||||
Copy(
|
Copy(
|
||||||
xstrConditions.strBuffer,
|
xstrConditions.strBuffer,
|
||||||
|
|||||||
@@ -0,0 +1,59 @@
|
|||||||
|
///////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// SaherElm IT Center MQL5 Helper Class Library
|
||||||
|
// ----------------------------------------------
|
||||||
|
// Name: XCX121XOCSHelper
|
||||||
|
// 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.x-helper.class.mq5"
|
||||||
|
|
||||||
|
//
|
||||||
|
// Buffers ...
|
||||||
|
enum ENUM_X121_XOSCS_BUFFERS
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// https://www.mql5.com/en/articles/11467 ...
|
||||||
|
X121_XOSCS_XAC_LINE = 0,
|
||||||
|
// https://www.mql5.com/en/articles/10993 ...
|
||||||
|
X121_XOSCS_XAD_LINE = 1,
|
||||||
|
// https://www.mql5.com/en/articles/10715 ...
|
||||||
|
X121_XOSCS_XADX_LINE = 2,
|
||||||
|
X121_XOSCS_XADX_P_LINE = 3,
|
||||||
|
X121_XOSCS_XADX_N_LINE = 4,
|
||||||
|
// https://www.mql5.com/en/articles/10748 ...
|
||||||
|
X121_XOSCS_XATR_LINE = 5,
|
||||||
|
// https://www.mql5.com/en/articles/10592 ...
|
||||||
|
X121_XOSCS_XCCI_LINE = 6,
|
||||||
|
// https://www.mql5.com/en/articles/10528 ...
|
||||||
|
X121_XOSCS_XRSI_LINE = 7,
|
||||||
|
// https://www.mql5.com/en/articles/11037 ...
|
||||||
|
X121_XOSCS_XMFI_LINE = 8,
|
||||||
|
// https://www.mql5.com/en/articles/11425 ...
|
||||||
|
X121_XOSCS_XRVI_LINE = 9,
|
||||||
|
X121_XOSCS_XRVI_S_LINE = 10,
|
||||||
|
// https://www.mql5.com/en/articles/10674 ...
|
||||||
|
X121_XOSCS_XMACD_LINE = 11,
|
||||||
|
X121_XOSCS_XMACD_S_LINE = 12,
|
||||||
|
// https://www.mql5.com/en/articles/10547 ...
|
||||||
|
X121_XOSCS_XMOMENTUM_LINE = 13,
|
||||||
|
// https://www.mql5.com/en/articles/10692 ..
|
||||||
|
X121_XOSCS_XSTOCHASTIC_LINE = 14,
|
||||||
|
X121_XOSCS_XSTOCHASTIC_S_LINE = 15,
|
||||||
|
}
|
||||||
@@ -33,15 +33,17 @@ enum ENUM_X121_XSTR_BUFFERS
|
|||||||
{
|
{
|
||||||
//
|
//
|
||||||
X121_XSTR_LINE = 0,
|
X121_XSTR_LINE = 0,
|
||||||
|
X121_XSTR_COLOR_LINE = 1,
|
||||||
X121_XSTR_UP_LINE = 2,
|
X121_XSTR_UP_LINE = 2,
|
||||||
X121_XSTR_DOWN_LINE = 3,
|
X121_XSTR_DOWN_LINE = 3,
|
||||||
X121_XSTR_HSM_LINE = 4,
|
X121_XSTR_HSM_LINE = 4,
|
||||||
X121_XSTR_LSM_LINE = 5,
|
X121_XSTR_LSM_LINE = 5,
|
||||||
X121_XSTR_MID_LINE = 6,
|
X121_XSTR_MID_LINE = 6,
|
||||||
X121_XSTR_MID_STATE_LINE = 7,
|
X121_XSTR_MID_STATE_LINE = 7,
|
||||||
X121_XSTR_ATR_LINE = 8,
|
X121_XSTR_XVIDYA_LINE = 8,
|
||||||
X121_XSTR_PRICE_LINE = 9,
|
X121_XSTR_ATR_LINE = 9,
|
||||||
X121_XSTR_STATE_LINE = 10,
|
X121_XSTR_PRICE_LINE = 10,
|
||||||
|
X121_XSTR_STATE_LINE = 11,
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -51,13 +53,16 @@ struct X121XSTRInputs
|
|||||||
//
|
//
|
||||||
// Props ...
|
// Props ...
|
||||||
|
|
||||||
int strLength; // Length
|
int strLength; // Length
|
||||||
double strMultiplier; // Multiplier
|
double strMultiplier; // Multiplier
|
||||||
ENUM_MA_METHOD strBoundaryMode; // Boundary Mode
|
int vidyaLength; // Smothing Length
|
||||||
ENUM_APPLIED_PRICE strAppliedTo; // Applied To
|
ENUM_MA_METHOD strBoundaryMode; // Boundary Mode
|
||||||
|
ENUM_APPLIED_PRICE strAppliedTo; // Applied To
|
||||||
|
ENUM_APPLIED_PRICE vidyaAppliedTo; // Smoothing Applied To
|
||||||
|
|
||||||
//
|
//
|
||||||
bool showStr; // Show Str
|
bool showStr; // Show Str
|
||||||
|
bool showVidya; // Show Vidya
|
||||||
bool showStrMid; // Show Str Mid
|
bool showStrMid; // Show Str Mid
|
||||||
bool showStrUpper; // Show Str Upper
|
bool showStrUpper; // Show Str Upper
|
||||||
bool showStrLower; // Show Str Lower
|
bool showStrLower; // Show Str Lower
|
||||||
@@ -82,11 +87,14 @@ struct X121XSTRInputs
|
|||||||
//
|
//
|
||||||
strLength = 0;
|
strLength = 0;
|
||||||
strMultiplier = 0.0;
|
strMultiplier = 0.0;
|
||||||
|
vidyaLength = 0;
|
||||||
strBoundaryMode = MODE_SMA;
|
strBoundaryMode = MODE_SMA;
|
||||||
strAppliedTo = PRICE_MEDIAN;
|
strAppliedTo = PRICE_MEDIAN;
|
||||||
|
vidyaAppliedTo = PRICE_CLOSE;
|
||||||
|
|
||||||
//
|
//
|
||||||
showStr = false;
|
showStr = false;
|
||||||
|
showVidya = false;
|
||||||
showStrMid = false;
|
showStrMid = false;
|
||||||
showStrUpper = false;
|
showStrUpper = false;
|
||||||
showStrLower = false;
|
showStrLower = false;
|
||||||
@@ -103,12 +111,15 @@ struct X121XSTRInputs
|
|||||||
{
|
{
|
||||||
//
|
//
|
||||||
strLength = 14;
|
strLength = 14;
|
||||||
|
vidyaLength = 14;
|
||||||
strMultiplier = 3.0;
|
strMultiplier = 3.0;
|
||||||
strBoundaryMode = MODE_SMA;
|
strBoundaryMode = MODE_SMA;
|
||||||
strAppliedTo = PRICE_CLOSE;
|
strAppliedTo = PRICE_CLOSE;
|
||||||
|
vidyaAppliedTo = PRICE_CLOSE;
|
||||||
|
|
||||||
//
|
//
|
||||||
showStr = true;
|
showStr = true;
|
||||||
|
showVidya = true;
|
||||||
showStrMid = true;
|
showStrMid = true;
|
||||||
showStrUpper = true;
|
showStrUpper = true;
|
||||||
showStrLower = true;
|
showStrLower = true;
|
||||||
@@ -143,7 +154,7 @@ struct X121XSTRInputs
|
|||||||
int result = 0;
|
int result = 0;
|
||||||
|
|
||||||
//
|
//
|
||||||
result = MathMax(1, strLength);
|
result = MathMax(strLength, vidyaLength);
|
||||||
|
|
||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
@@ -164,6 +175,7 @@ struct X121XSTRConditions
|
|||||||
// Buffers ...
|
// Buffers ...
|
||||||
double strBuffer[];
|
double strBuffer[];
|
||||||
double atrBuffer[];
|
double atrBuffer[];
|
||||||
|
double vidyaBuffer[];
|
||||||
double strUpBuffer[];
|
double strUpBuffer[];
|
||||||
double strMidBuffer[];
|
double strMidBuffer[];
|
||||||
double strDownBuffer[];
|
double strDownBuffer[];
|
||||||
@@ -214,6 +226,7 @@ struct X121XSTRConditions
|
|||||||
//
|
//
|
||||||
Clean(strBuffer);
|
Clean(strBuffer);
|
||||||
Clean(atrBuffer);
|
Clean(atrBuffer);
|
||||||
|
Clean(vidyaBuffer);
|
||||||
Clean(strUpBuffer);
|
Clean(strUpBuffer);
|
||||||
Clean(strMidBuffer);
|
Clean(strMidBuffer);
|
||||||
Clean(strDownBuffer);
|
Clean(strDownBuffer);
|
||||||
@@ -226,6 +239,7 @@ struct X121XSTRConditions
|
|||||||
//
|
//
|
||||||
ArraySetAsSeries(strBuffer, true);
|
ArraySetAsSeries(strBuffer, true);
|
||||||
ArraySetAsSeries(atrBuffer, true);
|
ArraySetAsSeries(atrBuffer, true);
|
||||||
|
ArraySetAsSeries(vidyaBuffer, true);
|
||||||
ArraySetAsSeries(strUpBuffer, true);
|
ArraySetAsSeries(strUpBuffer, true);
|
||||||
ArraySetAsSeries(strMidBuffer, true);
|
ArraySetAsSeries(strMidBuffer, true);
|
||||||
ArraySetAsSeries(strDownBuffer, true);
|
ArraySetAsSeries(strDownBuffer, true);
|
||||||
@@ -447,6 +461,7 @@ class XCX121XSTRHelper : public XCBaseHelper
|
|||||||
//
|
//
|
||||||
ArraySetAsSeries(strBuffer, true);
|
ArraySetAsSeries(strBuffer, true);
|
||||||
ArraySetAsSeries(atrBuffer, true);
|
ArraySetAsSeries(atrBuffer, true);
|
||||||
|
ArraySetAsSeries(vidyaBuffer, true);
|
||||||
ArraySetAsSeries(strUpBuffer, true);
|
ArraySetAsSeries(strUpBuffer, true);
|
||||||
ArraySetAsSeries(strMidBuffer, true);
|
ArraySetAsSeries(strMidBuffer, true);
|
||||||
ArraySetAsSeries(strDownBuffer, true);
|
ArraySetAsSeries(strDownBuffer, true);
|
||||||
@@ -471,12 +486,15 @@ class XCX121XSTRHelper : public XCBaseHelper
|
|||||||
"",
|
"",
|
||||||
mInputs.strLength,
|
mInputs.strLength,
|
||||||
mInputs.strMultiplier,
|
mInputs.strMultiplier,
|
||||||
|
mInputs.vidyaLength,
|
||||||
mInputs.strBoundaryMode,
|
mInputs.strBoundaryMode,
|
||||||
mInputs.strAppliedTo,
|
mInputs.strAppliedTo,
|
||||||
|
mInputs.vidyaAppliedTo,
|
||||||
//
|
//
|
||||||
// Presentation ...
|
// Presentation ...
|
||||||
"",
|
"",
|
||||||
mInputs.showStr,
|
mInputs.showStr,
|
||||||
|
mInputs.showVidya,
|
||||||
mInputs.showStrMid,
|
mInputs.showStrMid,
|
||||||
mInputs.showStrUpper,
|
mInputs.showStrUpper,
|
||||||
mInputs.showStrLower,
|
mInputs.showStrLower,
|
||||||
@@ -520,6 +538,58 @@ class XCX121XSTRHelper : public XCBaseHelper
|
|||||||
//
|
//
|
||||||
// Readers ...
|
// Readers ...
|
||||||
|
|
||||||
|
//
|
||||||
|
// Vidya ...
|
||||||
|
|
||||||
|
//
|
||||||
|
double GetVidya(
|
||||||
|
int barIndex // Bar Index
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
if (barIndex < 0)
|
||||||
|
{
|
||||||
|
barIndex = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
Calculate(barIndex);
|
||||||
|
|
||||||
|
//
|
||||||
|
int count = ArraySize(vidyaBuffer);
|
||||||
|
if (barIndex >= count)
|
||||||
|
{
|
||||||
|
barIndex = count - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return vidyaBuffer[barIndex];
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
int CopyVidya(
|
||||||
|
int start, // Start
|
||||||
|
int count, // Number of Items for read
|
||||||
|
double &buffer[], // Dest Buffer
|
||||||
|
bool forceClean = true // Force To Clean buffer
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Update Calculations ...
|
||||||
|
Calculate(start);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Copy Items ...
|
||||||
|
return Copy(
|
||||||
|
0,
|
||||||
|
count,
|
||||||
|
vidyaBuffer,
|
||||||
|
buffer,
|
||||||
|
forceClean
|
||||||
|
//
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// ATR ...
|
// ATR ...
|
||||||
|
|
||||||
@@ -1141,6 +1211,13 @@ class XCX121XSTRHelper : public XCBaseHelper
|
|||||||
//
|
//
|
||||||
// Buffers ...
|
// Buffers ...
|
||||||
|
|
||||||
|
//
|
||||||
|
CopyVidya(
|
||||||
|
zIndex,
|
||||||
|
loopback,
|
||||||
|
conditions.vidyaBuffer //
|
||||||
|
);
|
||||||
|
|
||||||
//
|
//
|
||||||
CopyATR(
|
CopyATR(
|
||||||
zIndex,
|
zIndex,
|
||||||
@@ -1264,6 +1341,7 @@ class XCX121XSTRHelper : public XCBaseHelper
|
|||||||
// Buffers ...
|
// Buffers ...
|
||||||
double strBuffer[];
|
double strBuffer[];
|
||||||
double atrBuffer[];
|
double atrBuffer[];
|
||||||
|
double vidyaBuffer[];
|
||||||
double strUpBuffer[];
|
double strUpBuffer[];
|
||||||
double strMidBuffer[];
|
double strMidBuffer[];
|
||||||
double strDownBuffer[];
|
double strDownBuffer[];
|
||||||
@@ -1286,6 +1364,17 @@ class XCX121XSTRHelper : public XCBaseHelper
|
|||||||
barIndex = 0;
|
barIndex = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// VIDYA ...
|
||||||
|
CopyBuffer(
|
||||||
|
mHandler,
|
||||||
|
X121_XSTR_XVIDYA_LINE,
|
||||||
|
barIndex,
|
||||||
|
maxRequiredBars,
|
||||||
|
vidyaBuffer
|
||||||
|
//
|
||||||
|
);
|
||||||
|
|
||||||
//
|
//
|
||||||
// STR ...
|
// STR ...
|
||||||
CopyBuffer(
|
CopyBuffer(
|
||||||
@@ -1400,6 +1489,12 @@ class XCX121XSTRHelper : public XCBaseHelper
|
|||||||
int maxAllowed = 100 //
|
int maxAllowed = 100 //
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
//
|
||||||
|
CleanupArray(
|
||||||
|
vidyaBuffer,
|
||||||
|
maxAllowed //
|
||||||
|
);
|
||||||
|
|
||||||
//
|
//
|
||||||
CleanupArray(
|
CleanupArray(
|
||||||
strBuffer,
|
strBuffer,
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -35,14 +35,17 @@
|
|||||||
//
|
//
|
||||||
// Market ...
|
// Market ...
|
||||||
input group "Market";
|
input group "Market";
|
||||||
input int strLength = 14; // Length
|
input int strLength = 14; // Length
|
||||||
input double strMultiplier = 3; // Multiplier
|
input double strMultiplier = 3; // Multiplier
|
||||||
input ENUM_MA_METHOD strBoundaryMode = MODE_SMA; // Boundary Mode
|
input int vidyaLength = 14; // Smothing Length
|
||||||
input ENUM_APPLIED_PRICE strAppliedTo = PRICE_MEDIAN; // Applied To
|
input ENUM_MA_METHOD strBoundaryMode = MODE_SMA; // Boundary Mode
|
||||||
|
input ENUM_APPLIED_PRICE strAppliedTo = PRICE_MEDIAN; // Applied To
|
||||||
|
input ENUM_APPLIED_PRICE vidyaAppliedTo = PRICE_CLOSE; // Smoothing Applied To
|
||||||
|
|
||||||
//
|
//
|
||||||
input group "Presentation";
|
input group "Presentation";
|
||||||
input bool showStr = true; // Show Str
|
input bool showStr = true; // Show Str
|
||||||
|
input bool showVidya = true; // Show Vidya
|
||||||
input bool showStrMid = true; // Show Str Mid
|
input bool showStrMid = true; // Show Str Mid
|
||||||
input bool showStrUpper = true; // Show Str Upper
|
input bool showStrUpper = true; // Show Str Upper
|
||||||
input bool showStrLower = true; // Show Str Lower
|
input bool showStrLower = true; // Show Str Lower
|
||||||
@@ -65,8 +68,8 @@ input bool showStrHighMa = true; // Show High Smoothed Buffer
|
|||||||
#property indicator_chart_window
|
#property indicator_chart_window
|
||||||
|
|
||||||
//
|
//
|
||||||
#property indicator_buffers 11
|
#property indicator_buffers 12
|
||||||
#property indicator_plots 6
|
#property indicator_plots 7
|
||||||
|
|
||||||
//
|
//
|
||||||
// STR ...
|
// STR ...
|
||||||
@@ -152,11 +155,24 @@ double strMidColorBuffer[];
|
|||||||
#property indicator_style6 STYLE_SOLID
|
#property indicator_style6 STYLE_SOLID
|
||||||
#property indicator_width6 1
|
#property indicator_width6 1
|
||||||
|
|
||||||
|
//
|
||||||
|
// VIDYA ...
|
||||||
|
#define vidyaBufferIndex 8
|
||||||
|
double vidyaBuffer[];
|
||||||
|
|
||||||
|
//
|
||||||
|
#define vidyaPlotBufferIndex 6
|
||||||
|
#property indicator_label7 "X121 VIDYA"
|
||||||
|
#property indicator_type7 DRAW_LINE
|
||||||
|
#property indicator_color7 clrYellow
|
||||||
|
#property indicator_style7 STYLE_SOLID
|
||||||
|
#property indicator_width7 1
|
||||||
|
|
||||||
//
|
//
|
||||||
// Data Buffers ...
|
// Data Buffers ...
|
||||||
|
|
||||||
//
|
//
|
||||||
int mLastBufferIndex = 7;
|
int mLastBufferIndex = 8;
|
||||||
|
|
||||||
//
|
//
|
||||||
// STR ...
|
// STR ...
|
||||||
@@ -194,6 +210,7 @@ int atrHandler = INVALID_HANDLE;
|
|||||||
// MA Handler ...
|
// MA Handler ...
|
||||||
int lowMaHandler = INVALID_HANDLE;
|
int lowMaHandler = INVALID_HANDLE;
|
||||||
int highMaHandler = INVALID_HANDLE;
|
int highMaHandler = INVALID_HANDLE;
|
||||||
|
int vidyaHandler = INVALID_HANDLE;
|
||||||
|
|
||||||
//
|
//
|
||||||
bool isStrTrendChanged;
|
bool isStrTrendChanged;
|
||||||
@@ -270,6 +287,22 @@ int OnInit()
|
|||||||
return INIT_FAILED;
|
return INIT_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Vidya ...
|
||||||
|
vidyaHandler = iVIDyA(
|
||||||
|
_Symbol,
|
||||||
|
_Period,
|
||||||
|
strLength,
|
||||||
|
vidyaLength,
|
||||||
|
0, // Shift ...
|
||||||
|
vidyaAppliedTo //
|
||||||
|
);
|
||||||
|
isInited = vidyaHandler != INVALID_HANDLE;
|
||||||
|
if (!isInited)
|
||||||
|
{
|
||||||
|
return INIT_FAILED;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// because in some cases we may have more than one input for
|
// because in some cases we may have more than one input for
|
||||||
// calculation and we must prevent any calculation
|
// calculation and we must prevent any calculation
|
||||||
@@ -311,6 +344,7 @@ void OnDeinit(const int reason)
|
|||||||
|
|
||||||
//
|
//
|
||||||
IndicatorRelease(atrHandler);
|
IndicatorRelease(atrHandler);
|
||||||
|
IndicatorRelease(vidyaHandler);
|
||||||
IndicatorRelease(lowMaHandler);
|
IndicatorRelease(lowMaHandler);
|
||||||
IndicatorRelease(highMaHandler);
|
IndicatorRelease(highMaHandler);
|
||||||
}
|
}
|
||||||
@@ -354,6 +388,10 @@ int OnCalculate(
|
|||||||
// ATR ...
|
// ATR ...
|
||||||
int atrCalculatedBars = BarsCalculated(atrHandler);
|
int atrCalculatedBars = BarsCalculated(atrHandler);
|
||||||
|
|
||||||
|
//
|
||||||
|
// VIDYA ...
|
||||||
|
int vidyaCalculatedBars = BarsCalculated(vidyaHandler);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Low Ma ...
|
// Low Ma ...
|
||||||
int lowMaCalculatedBars = BarsCalculated(lowMaHandler);
|
int lowMaCalculatedBars = BarsCalculated(lowMaHandler);
|
||||||
@@ -368,6 +406,9 @@ int OnCalculate(
|
|||||||
// ATR ...
|
// ATR ...
|
||||||
atrCalculatedBars >= 0 &&
|
atrCalculatedBars >= 0 &&
|
||||||
//
|
//
|
||||||
|
// VIDYA ...
|
||||||
|
vidyaCalculatedBars >= 0 &&
|
||||||
|
//
|
||||||
// Low Ma ...
|
// Low Ma ...
|
||||||
lowMaCalculatedBars >= 0 &&
|
lowMaCalculatedBars >= 0 &&
|
||||||
//
|
//
|
||||||
@@ -395,6 +436,10 @@ int OnCalculate(
|
|||||||
// ATR ...
|
// ATR ...
|
||||||
int copiedAtrs = CopyBuffer(atrHandler, 0, 0, rates_total, atrBuffer);
|
int copiedAtrs = CopyBuffer(atrHandler, 0, 0, rates_total, atrBuffer);
|
||||||
|
|
||||||
|
//
|
||||||
|
// VYDIA ...
|
||||||
|
int copiedVidyas = CopyBuffer(vidyaHandler, 0, 0, rates_total, vidyaBuffer);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Low Ma ...
|
// Low Ma ...
|
||||||
int copiedLowMas = CopyBuffer(lowMaHandler, 0, 0, rates_total, strLowMaBuffer);
|
int copiedLowMas = CopyBuffer(lowMaHandler, 0, 0, rates_total, strLowMaBuffer);
|
||||||
@@ -410,6 +455,9 @@ int OnCalculate(
|
|||||||
// ATR ...
|
// ATR ...
|
||||||
copiedAtrs >= 0 &&
|
copiedAtrs >= 0 &&
|
||||||
//
|
//
|
||||||
|
// VIDYA ...
|
||||||
|
copiedVidyas >= 0 &&
|
||||||
|
//
|
||||||
// Low Ma ...
|
// Low Ma ...
|
||||||
copiedLowMas >= 0 &&
|
copiedLowMas >= 0 &&
|
||||||
//
|
//
|
||||||
@@ -522,6 +570,13 @@ void DefineBuffers()
|
|||||||
PlotIndexSetInteger(strHighMaPlotBufferIndex, PLOT_SHOW_DATA, showStrHighMa);
|
PlotIndexSetInteger(strHighMaPlotBufferIndex, PLOT_SHOW_DATA, showStrHighMa);
|
||||||
PlotIndexSetInteger(strHighMaPlotBufferIndex, PLOT_DRAW_TYPE, strHighMaDrawType);
|
PlotIndexSetInteger(strHighMaPlotBufferIndex, PLOT_DRAW_TYPE, strHighMaDrawType);
|
||||||
|
|
||||||
|
//
|
||||||
|
ENUM_DRAW_TYPE vidyaDrawType = showVidya ? DRAW_LINE : DRAW_NONE;
|
||||||
|
SetIndexBuffer(vidyaBufferIndex, vidyaBuffer, INDICATOR_DATA);
|
||||||
|
PlotIndexSetDouble(vidyaPlotBufferIndex, PLOT_EMPTY_VALUE, emptyValue);
|
||||||
|
PlotIndexSetInteger(vidyaPlotBufferIndex, PLOT_SHOW_DATA, showVidya);
|
||||||
|
PlotIndexSetInteger(vidyaPlotBufferIndex, PLOT_DRAW_TYPE, vidyaDrawType);
|
||||||
|
|
||||||
//
|
//
|
||||||
ENUM_DRAW_TYPE strMidDrawType = showStrMid ? DRAW_COLOR_LINE : DRAW_NONE;
|
ENUM_DRAW_TYPE strMidDrawType = showStrMid ? DRAW_COLOR_LINE : DRAW_NONE;
|
||||||
SetIndexBuffer(strMidBufferIndex, strMidBuffer, INDICATOR_DATA);
|
SetIndexBuffer(strMidBufferIndex, strMidBuffer, INDICATOR_DATA);
|
||||||
|
|||||||
Reference in New Issue
Block a user