1081 lines
23 KiB
Plaintext
1081 lines
23 KiB
Plaintext
///////////////////////////////////////////////////////
|
|
//
|
|
// SaherElm IT Center MQL5 Helper Class Library
|
|
// ----------------------------------------------
|
|
// Name: XSCXCHICHHelper
|
|
// 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"
|
|
|
|
//
|
|
// Ichimoku Lines Calculator Mode ...
|
|
enum ENUM_X_ICHIMOKU_CALCULATION_MODE
|
|
{
|
|
//
|
|
X_XICH_HH_LL_MODE = 1, // Highest High and Lowest Low
|
|
X_XICH_HO_LC_MODE = 2, // Highest Open and Lowest Close
|
|
};
|
|
|
|
//
|
|
enum ENUM_XCHICH_BUFFERS
|
|
{
|
|
//
|
|
// Current ...
|
|
XCHICH_C_TK_LINE = 0,
|
|
XCHICH_C_KJ_LINE = 1,
|
|
XCHICH_C_CH_LINE = 2,
|
|
XCHICH_C_SSA_LINE = 3,
|
|
XCHICH_C_SSB_LINE = 4,
|
|
//
|
|
// Short ...
|
|
XCHICH_S_TK_LINE = 5,
|
|
XCHICH_S_KJ_LINE = 6,
|
|
XCHICH_S_CH_LINE = 7,
|
|
XCHICH_S_SSA_LINE = 8,
|
|
XCHICH_S_SSB_LINE = 9,
|
|
//
|
|
// Medium ...
|
|
XCHICH_M_TK_LINE = 10,
|
|
XCHICH_M_KJ_LINE = 11,
|
|
XCHICH_M_CH_LINE = 12,
|
|
XCHICH_M_SSA_LINE = 13,
|
|
XCHICH_M_SSB_LINE = 14,
|
|
//
|
|
// Long ...
|
|
XCHICH_L_TK_LINE = 15,
|
|
XCHICH_L_KJ_LINE = 16,
|
|
XCHICH_L_CH_LINE = 17,
|
|
XCHICH_L_SSA_LINE = 18,
|
|
XCHICH_L_SSB_LINE = 19,
|
|
//
|
|
// Hind ...
|
|
XCHICH_H_TK_LINE = 20,
|
|
XCHICH_H_KJ_LINE = 21,
|
|
XCHICH_H_CH_LINE = 22,
|
|
XCHICH_H_SSA_LINE = 23,
|
|
XCHICH_H_SSB_LINE = 24,
|
|
};
|
|
|
|
//
|
|
// Input Models ...
|
|
struct XCHICHInputs
|
|
{
|
|
//
|
|
// Props ...
|
|
|
|
//
|
|
// Market ...
|
|
|
|
//
|
|
// TENKANSEN ...
|
|
|
|
//
|
|
// Tenkan Sen ...
|
|
int tenkanSenLength; // Length
|
|
ENUM_X_ICHIMOKU_CALCULATION_MODE tenkanSenMode; // Calculation Mode
|
|
|
|
//
|
|
// KIJUNSEN ...
|
|
|
|
//
|
|
// Kijun Sen ...
|
|
int kijunSenLength; // Length
|
|
ENUM_X_ICHIMOKU_CALCULATION_MODE kijunSenMode; // Calculation Mode
|
|
|
|
//
|
|
// SENKOUSPANB ...
|
|
|
|
//
|
|
// Senkou Span B ...
|
|
int senkouSpanBLength; // Length
|
|
ENUM_X_ICHIMOKU_CALCULATION_MODE senkouSpanBMode; // Calculation Mode
|
|
|
|
//
|
|
// CHIKOUSPAN ...
|
|
|
|
//
|
|
// Chikou Span ...
|
|
ENUM_APPLIED_PRICE chikuoSpanAppliedTo; // Price Type
|
|
|
|
//
|
|
// Cycles ...
|
|
|
|
//
|
|
// Short ...
|
|
ENUM_X_PERIOD_METHOD scMethod; // How to Find Period
|
|
ENUM_TIMEFRAMES scPeriod; // Time Period
|
|
|
|
//
|
|
// Medium ...
|
|
ENUM_X_PERIOD_METHOD mcMethod; // How to Find Period
|
|
ENUM_TIMEFRAMES mcPeriod; // Time Period
|
|
|
|
//
|
|
// Long ...
|
|
ENUM_X_PERIOD_METHOD lcMethod; // How to Find Period
|
|
ENUM_TIMEFRAMES lcPeriod; // Time Period
|
|
|
|
//
|
|
// Hind ...
|
|
ENUM_X_PERIOD_METHOD hcMethod; // How to Find Period
|
|
ENUM_TIMEFRAMES hcPeriod; // Time Period
|
|
|
|
//
|
|
// Presentation ...
|
|
|
|
//
|
|
// All Cycles ...
|
|
bool showTenkanSen; // Show Tenkan Sen
|
|
bool showKijunSen; // Show Kijun Sen
|
|
bool showChikouSpan; // Show Chikou Span
|
|
bool showSenkouSpanA; // Show Senkou Span A
|
|
bool showSenkouSpanB; // Show Senkou Span B
|
|
bool showKumo; // Show Kumo
|
|
|
|
//
|
|
// Current ...
|
|
bool showCTenkanSen; // Show Tenkan Sen
|
|
bool showCKijunSen; // Show Kijun Sen
|
|
bool showCChikouSpan; // Show Chikou Span
|
|
bool showCSenkouSpanA; // Show Senkou Span A
|
|
bool showCSenkouSpanB; // Show Senkou Span B
|
|
bool showCKumo; // Show Kumo
|
|
bool shiftCKumo; // Shift Kumo to Future
|
|
|
|
//
|
|
// Short ...
|
|
bool showSTenkanSen; // Show Tenkan Sen
|
|
bool showSKijunSen; // Show Kijun Sen
|
|
bool showSChikouSpan; // Show Chikou Span
|
|
bool showSSenkouSpanA; // Show Senkou Span A
|
|
bool showSSenkouSpanB; // Show Senkou Span B
|
|
bool showSKumo; // Show Kumo
|
|
bool shiftSKumo; // Shift Kumo to Future
|
|
|
|
//
|
|
// Medium ...
|
|
bool showMTenkanSen; // Show Tenkan Sen
|
|
bool showMKijunSen; // Show Kijun Sen
|
|
bool showMChikouSpan; // Show Chikou Span
|
|
bool showMSenkouSpanA; // Show Senkou Span A
|
|
bool showMSenkouSpanB; // Show Senkou Span B
|
|
bool showMKumo; // Show Kumo
|
|
bool shiftMKumo; // Shift Kumo to Future
|
|
|
|
//
|
|
// Long ...
|
|
bool showLTenkanSen; // Show Tenkan Sen
|
|
bool showLKijunSen; // Show Kijun Sen
|
|
bool showLChikouSpan; // Show Chikou Span
|
|
bool showLSenkouSpanA; // Show Senkou Span A
|
|
bool showLSenkouSpanB; // Show Senkou Span B
|
|
bool showLKumo; // Show Kumo
|
|
bool shiftLKumo; // Shift Kumo to Future
|
|
|
|
//
|
|
// Hind ...
|
|
bool showHTenkanSen; // Show Tenkan Sen
|
|
bool showHKijunSen; // Show Kijun Sen
|
|
bool showHChikouSpan; // Show Chikou Span
|
|
bool showHSenkouSpanA; // Show Senkou Span A
|
|
bool showHSenkouSpanB; // Show Senkou Span B
|
|
bool showHKumo; // Show Kumo
|
|
bool shiftHKumo; // Shift Kumo to Future
|
|
|
|
//
|
|
// Constructor(s) ...
|
|
XCHICHInputs()
|
|
{
|
|
//
|
|
Clean();
|
|
}
|
|
|
|
//
|
|
// Tools ...
|
|
|
|
//
|
|
// Clean ...
|
|
void Clean()
|
|
{
|
|
//
|
|
kijunSenLength = 0;
|
|
tenkanSenLength = 0;
|
|
senkouSpanBLength = 0;
|
|
kijunSenMode = X_XICH_HH_LL_MODE;
|
|
tenkanSenMode = X_XICH_HH_LL_MODE;
|
|
chikuoSpanAppliedTo = PRICE_CLOSE;
|
|
senkouSpanBMode = X_XICH_HH_LL_MODE;
|
|
|
|
//
|
|
scMethod = X_PERIOD_AUTO;
|
|
scPeriod = NULL;
|
|
mcMethod = X_PERIOD_AUTO;
|
|
mcPeriod = NULL;
|
|
lcMethod = X_PERIOD_AUTO;
|
|
lcPeriod = NULL;
|
|
hcMethod = X_PERIOD_AUTO;
|
|
hcPeriod = NULL;
|
|
|
|
//
|
|
showTenkanSen = false;
|
|
showKijunSen = false;
|
|
showChikouSpan = false;
|
|
showSenkouSpanA = false;
|
|
showSenkouSpanB = false;
|
|
showKumo = false;
|
|
|
|
//
|
|
showCTenkanSen = false;
|
|
showCKijunSen = false;
|
|
showCChikouSpan = false;
|
|
showCSenkouSpanA = false;
|
|
showCSenkouSpanB = false;
|
|
showCKumo = false;
|
|
shiftCKumo = true;
|
|
|
|
//
|
|
showSTenkanSen = false;
|
|
showSKijunSen = false;
|
|
showSChikouSpan = false;
|
|
showSSenkouSpanA = false;
|
|
showSSenkouSpanB = false;
|
|
showSKumo = false;
|
|
shiftSKumo = true;
|
|
|
|
//
|
|
showMTenkanSen = false;
|
|
showMKijunSen = false;
|
|
showMChikouSpan = false;
|
|
showMSenkouSpanA = false;
|
|
showMSenkouSpanB = false;
|
|
showMKumo = false;
|
|
shiftMKumo = true;
|
|
|
|
//
|
|
showLTenkanSen = false;
|
|
showLKijunSen = false;
|
|
showLChikouSpan = false;
|
|
showLSenkouSpanA = false;
|
|
showLSenkouSpanB = false;
|
|
showLKumo = false;
|
|
shiftLKumo = true;
|
|
|
|
//
|
|
showHTenkanSen = false;
|
|
showHKijunSen = false;
|
|
showHChikouSpan = false;
|
|
showHSenkouSpanA = false;
|
|
showHSenkouSpanB = false;
|
|
showHKumo = false;
|
|
shiftHKumo = true;
|
|
}
|
|
|
|
//
|
|
// Default ...
|
|
void Default()
|
|
{
|
|
//
|
|
kijunSenLength = 26;
|
|
tenkanSenLength = 9;
|
|
senkouSpanBLength = 52;
|
|
kijunSenMode = X_XICH_HH_LL_MODE;
|
|
tenkanSenMode = X_XICH_HH_LL_MODE;
|
|
chikuoSpanAppliedTo = PRICE_CLOSE;
|
|
senkouSpanBMode = X_XICH_HH_LL_MODE;
|
|
|
|
//
|
|
scMethod = X_PERIOD_AUTO;
|
|
scPeriod = NULL;
|
|
mcMethod = X_PERIOD_AUTO;
|
|
mcPeriod = NULL;
|
|
lcMethod = X_PERIOD_AUTO;
|
|
lcPeriod = NULL;
|
|
hcMethod = X_PERIOD_AUTO;
|
|
hcPeriod = NULL;
|
|
|
|
//
|
|
showTenkanSen = true;
|
|
showKijunSen = true;
|
|
showChikouSpan = true;
|
|
showSenkouSpanA = true;
|
|
showSenkouSpanB = true;
|
|
showKumo = true;
|
|
|
|
//
|
|
showCTenkanSen = true;
|
|
showCKijunSen = true;
|
|
showCChikouSpan = true;
|
|
showCSenkouSpanA = true;
|
|
showCSenkouSpanB = true;
|
|
showCKumo = true;
|
|
shiftCKumo = true;
|
|
|
|
//
|
|
showSTenkanSen = true;
|
|
showSKijunSen = true;
|
|
showSChikouSpan = true;
|
|
showSSenkouSpanA = true;
|
|
showSSenkouSpanB = true;
|
|
showSKumo = true;
|
|
shiftSKumo = true;
|
|
|
|
//
|
|
showMTenkanSen = true;
|
|
showMKijunSen = true;
|
|
showMChikouSpan = true;
|
|
showMSenkouSpanA = true;
|
|
showMSenkouSpanB = true;
|
|
showMKumo = true;
|
|
shiftMKumo = true;
|
|
|
|
//
|
|
showLTenkanSen = true;
|
|
showLKijunSen = true;
|
|
showLChikouSpan = true;
|
|
showLSenkouSpanA = true;
|
|
showLSenkouSpanB = true;
|
|
showLKumo = true;
|
|
shiftLKumo = true;
|
|
|
|
//
|
|
showHTenkanSen = true;
|
|
showHKijunSen = true;
|
|
showHChikouSpan = true;
|
|
showHSenkouSpanA = true;
|
|
showHSenkouSpanB = true;
|
|
showHKumo = true;
|
|
shiftHKumo = true;
|
|
}
|
|
|
|
//
|
|
// Validate ...
|
|
bool IsValid()
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
result =
|
|
//
|
|
(tenkanSenLength > 2 &&
|
|
kijunSenLength > tenkanSenLength &&
|
|
senkouSpanBLength > kijunSenLength)
|
|
//
|
|
&&
|
|
//
|
|
(IsValid(scMethod, scPeriod) &&
|
|
IsValid(mcMethod, mcPeriod) &&
|
|
IsValid(lcMethod, lcPeriod) &&
|
|
IsValid(hcMethod, hcPeriod))
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Retrieve MAx Length ...
|
|
int Max()
|
|
{
|
|
//
|
|
int result = 0;
|
|
|
|
//
|
|
result = MathMax(tenkanSenLength, kijunSenLength);
|
|
result = MathMax(result, senkouSpanBLength);
|
|
|
|
//
|
|
return result;
|
|
}
|
|
};
|
|
|
|
//
|
|
// Define Conditions ...
|
|
struct XCHICHConditions
|
|
{
|
|
//
|
|
// Common ...
|
|
string symbol;
|
|
ENUM_TIMEFRAMES period;
|
|
datetime time;
|
|
|
|
//
|
|
// Buffers ...
|
|
|
|
//
|
|
// Current ...
|
|
double cTK[];
|
|
double cKJ[];
|
|
double cChik[];
|
|
double cSSA[];
|
|
double cSSB[];
|
|
|
|
//
|
|
// Short ...
|
|
double sTK[];
|
|
double sKJ[];
|
|
double sChik[];
|
|
double sSSA[];
|
|
double sSSB[];
|
|
|
|
//
|
|
// Medium ...
|
|
double mTK[];
|
|
double mKJ[];
|
|
double mChik[];
|
|
double mSSA[];
|
|
double mSSB[];
|
|
|
|
//
|
|
// Long ...
|
|
double lTK[];
|
|
double lKJ[];
|
|
double lChik[];
|
|
double lSSA[];
|
|
double lSSB[];
|
|
|
|
//
|
|
// Hind ...
|
|
double hTK[];
|
|
double hKJ[];
|
|
double hChik[];
|
|
double hSSA[];
|
|
double hSSB[];
|
|
|
|
//
|
|
void Clean()
|
|
{
|
|
//
|
|
// Buffers ...
|
|
Clean(cTK);
|
|
Clean(cKJ);
|
|
Clean(cChik);
|
|
Clean(cSSA);
|
|
Clean(cSSB);
|
|
Clean(sTK);
|
|
Clean(sKJ);
|
|
Clean(sChik);
|
|
Clean(sSSA);
|
|
Clean(sSSB);
|
|
Clean(mTK);
|
|
Clean(mKJ);
|
|
Clean(mChik);
|
|
Clean(mSSA);
|
|
Clean(mSSB);
|
|
Clean(lTK);
|
|
Clean(lKJ);
|
|
Clean(lChik);
|
|
Clean(lSSA);
|
|
Clean(lSSB);
|
|
Clean(hTK);
|
|
Clean(hKJ);
|
|
Clean(hChik);
|
|
Clean(hSSA);
|
|
Clean(hSSB);
|
|
|
|
//
|
|
ArraySetAsSeries(cTK, true);
|
|
ArraySetAsSeries(cKJ, true);
|
|
ArraySetAsSeries(cChik, true);
|
|
ArraySetAsSeries(cSSA, true);
|
|
ArraySetAsSeries(cSSB, true);
|
|
ArraySetAsSeries(sTK, true);
|
|
ArraySetAsSeries(sKJ, true);
|
|
ArraySetAsSeries(sChik, true);
|
|
ArraySetAsSeries(sSSA, true);
|
|
ArraySetAsSeries(sSSB, true);
|
|
ArraySetAsSeries(mTK, true);
|
|
ArraySetAsSeries(mKJ, true);
|
|
ArraySetAsSeries(mChik, true);
|
|
ArraySetAsSeries(mSSA, true);
|
|
ArraySetAsSeries(mSSB, true);
|
|
ArraySetAsSeries(lTK, true);
|
|
ArraySetAsSeries(lKJ, true);
|
|
ArraySetAsSeries(lChik, true);
|
|
ArraySetAsSeries(lSSA, true);
|
|
ArraySetAsSeries(lSSB, true);
|
|
ArraySetAsSeries(hTK, true);
|
|
ArraySetAsSeries(hKJ, true);
|
|
ArraySetAsSeries(hChik, true);
|
|
ArraySetAsSeries(hSSA, true);
|
|
ArraySetAsSeries(hSSB, true);
|
|
}
|
|
|
|
//
|
|
void GenerateScore(
|
|
double &bullishScore,
|
|
double &bearishScore //
|
|
)
|
|
{
|
|
//
|
|
bullishScore = 0;
|
|
bearishScore = 0;
|
|
}
|
|
|
|
//
|
|
string GenerateSummary(
|
|
bool onlyCommons = false,
|
|
bool onlyConditions = false,
|
|
bool includeScores = true,
|
|
bool ignoreFalseConditions = true,
|
|
string separator = "\n" //
|
|
)
|
|
{
|
|
//
|
|
string result = NULL;
|
|
|
|
//
|
|
double bullishScore = 0;
|
|
double bearishScore = 0;
|
|
GenerateScore(
|
|
bullishScore,
|
|
bearishScore //
|
|
);
|
|
|
|
//
|
|
string scoresStr =
|
|
//
|
|
"Scores: " + separator +
|
|
"---------------" + separator +
|
|
"Bullish: " + ToString(bullishScore) + separator +
|
|
"Bearish: " + ToString(bearishScore) + separator +
|
|
""
|
|
//
|
|
;
|
|
|
|
//
|
|
string commonStr = GenerateSpecifiedCommonSummary(
|
|
this,
|
|
separator,
|
|
includeScores //
|
|
);
|
|
|
|
//
|
|
string conditionsStr =
|
|
//
|
|
// Current ...
|
|
//
|
|
// Short ...
|
|
//
|
|
// Medium ...
|
|
//
|
|
// Long ...
|
|
//
|
|
// Hind ...
|
|
//
|
|
""
|
|
//
|
|
;
|
|
|
|
//
|
|
result =
|
|
//
|
|
"[" + GetTag() + "]" + separator +
|
|
(onlyConditions
|
|
? ""
|
|
: commonStr) +
|
|
(!includeScores
|
|
? ""
|
|
: scoresStr) +
|
|
" " + separator +
|
|
(onlyCommons
|
|
? ""
|
|
: conditionsStr) +
|
|
""
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
string GetTag()
|
|
{
|
|
return "XCHICH";
|
|
}
|
|
};
|
|
|
|
//
|
|
// Class ...
|
|
class XSCXCHICHHelper : public XSCBaseHelper
|
|
{
|
|
//
|
|
// Public ...
|
|
public:
|
|
//
|
|
// Props ...
|
|
|
|
//
|
|
// Constructors ...
|
|
XSCXCHICHHelper() : XSCBaseHelper(_Symbol, _Period)
|
|
{
|
|
}
|
|
|
|
//
|
|
// Deconstructor ...
|
|
~XSCXCHICHHelper()
|
|
{
|
|
//
|
|
Clean(cTKBuffer);
|
|
Clean(cKJBuffer);
|
|
Clean(cChikBuffer);
|
|
Clean(cSSABuffer);
|
|
Clean(cSSBBuffer);
|
|
Clean(sTKBuffer);
|
|
Clean(sKJBuffer);
|
|
Clean(sChikBuffer);
|
|
Clean(sSSABuffer);
|
|
Clean(sSSBBuffer);
|
|
Clean(mTKBuffer);
|
|
Clean(mKJBuffer);
|
|
Clean(mChikBuffer);
|
|
Clean(mSSABuffer);
|
|
Clean(mSSBBuffer);
|
|
Clean(lTKBuffer);
|
|
Clean(lKJBuffer);
|
|
Clean(lChikBuffer);
|
|
Clean(lSSABuffer);
|
|
Clean(lSSBBuffer);
|
|
Clean(hTKBuffer);
|
|
Clean(hKJBuffer);
|
|
Clean(hChikBuffer);
|
|
Clean(hSSABuffer);
|
|
Clean(hSSBBuffer);
|
|
}
|
|
|
|
//
|
|
// Tools ...
|
|
bool Init(
|
|
string symbol, // Trading Symbol
|
|
ENUM_TIMEFRAMES period, // Trading Period
|
|
XCHICHInputs &inputs // Inputs
|
|
)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
mSymbol = symbol;
|
|
mPeriod = period;
|
|
|
|
//
|
|
result = inputs.IsValid();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
mInputs = inputs;
|
|
|
|
//
|
|
ArraySetAsSeries(cTKBuffer, true);
|
|
ArraySetAsSeries(cKJBuffer, true);
|
|
ArraySetAsSeries(cChikBuffer, true);
|
|
ArraySetAsSeries(cSSABuffer, true);
|
|
ArraySetAsSeries(cSSBBuffer, true);
|
|
ArraySetAsSeries(sTKBuffer, true);
|
|
ArraySetAsSeries(sKJBuffer, true);
|
|
ArraySetAsSeries(sChikBuffer, true);
|
|
ArraySetAsSeries(sSSABuffer, true);
|
|
ArraySetAsSeries(sSSBBuffer, true);
|
|
ArraySetAsSeries(mTKBuffer, true);
|
|
ArraySetAsSeries(mKJBuffer, true);
|
|
ArraySetAsSeries(mChikBuffer, true);
|
|
ArraySetAsSeries(mSSABuffer, true);
|
|
ArraySetAsSeries(mSSBBuffer, true);
|
|
ArraySetAsSeries(lTKBuffer, true);
|
|
ArraySetAsSeries(lKJBuffer, true);
|
|
ArraySetAsSeries(lChikBuffer, true);
|
|
ArraySetAsSeries(lSSABuffer, true);
|
|
ArraySetAsSeries(lSSBBuffer, true);
|
|
ArraySetAsSeries(hTKBuffer, true);
|
|
ArraySetAsSeries(hKJBuffer, true);
|
|
ArraySetAsSeries(hChikBuffer, true);
|
|
ArraySetAsSeries(hSSABuffer, true);
|
|
ArraySetAsSeries(hSSBBuffer, true);
|
|
|
|
//
|
|
mHandler = iCustom(
|
|
mSymbol,
|
|
mPeriod,
|
|
"x-saherelm.xchich",
|
|
//
|
|
// Inputs ...
|
|
//
|
|
// Market ...
|
|
"",
|
|
//
|
|
// TENKANSEN ...
|
|
"",
|
|
mInputs.tenkanSenLength, // Length
|
|
mInputs.tenkanSenMode, // Calculation Mode
|
|
//
|
|
// KIJUNSEN ...
|
|
"",
|
|
mInputs.kijunSenLength, // Length
|
|
mInputs.kijunSenMode, // Calculation Mode
|
|
//
|
|
// SENKOUSPANB ...
|
|
"",
|
|
mInputs.senkouSpanBLength, // Length
|
|
mInputs.senkouSpanBMode, // Calculation Mode
|
|
//
|
|
// CHIKOUSPAN ...
|
|
"",
|
|
mInputs.chikuoSpanAppliedTo, // Price Type
|
|
//
|
|
// Cycles ...
|
|
"",
|
|
//
|
|
// Short ...
|
|
"",
|
|
mInputs.scMethod,
|
|
mInputs.scPeriod,
|
|
//
|
|
// Medium ...
|
|
"",
|
|
mInputs.mcMethod,
|
|
mInputs.mcPeriod,
|
|
//
|
|
// Long ...
|
|
"",
|
|
mInputs.lcMethod,
|
|
mInputs.lcPeriod,
|
|
//
|
|
// Hind ...
|
|
"",
|
|
mInputs.hcMethod,
|
|
mInputs.hcPeriod,
|
|
//
|
|
// Presentation ...
|
|
"",
|
|
//
|
|
// All Cycles ...
|
|
"",
|
|
mInputs.showTenkanSen, // Show Tenkan Sen
|
|
mInputs.showKijunSen, // Show Kijun Sen
|
|
mInputs.showChikouSpan, // Show Chikou Span
|
|
mInputs.showSenkouSpanA, // Show Senkou Span A
|
|
mInputs.showSenkouSpanB, // Show Senkou Span B
|
|
mInputs.showKumo, // Show Kumo
|
|
//
|
|
// Current ...
|
|
"",
|
|
|
|
//
|
|
);
|
|
result = mHandler != INVALID_HANDLE;
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Protected ...
|
|
protected:
|
|
//
|
|
// Private ...
|
|
private:
|
|
//
|
|
// Props ...
|
|
XCHICHInputs mInputs; // Inputs ...
|
|
|
|
//
|
|
// Buffers ...
|
|
|
|
//
|
|
// Current ...
|
|
double cTKBuffer[];
|
|
double cKJBuffer[];
|
|
double cChikBuffer[];
|
|
double cSSABuffer[];
|
|
double cSSBBuffer[];
|
|
|
|
//
|
|
// Short ...
|
|
double sTKBuffer[];
|
|
double sKJBuffer[];
|
|
double sChikBuffer[];
|
|
double sSSABuffer[];
|
|
double sSSBBuffer[];
|
|
|
|
//
|
|
// Medium ...
|
|
double mTKBuffer[];
|
|
double mKJBuffer[];
|
|
double mChikBuffer[];
|
|
double mSSABuffer[];
|
|
double mSSBBuffer[];
|
|
|
|
//
|
|
// Long ...
|
|
double lTKBuffer[];
|
|
double lKJBuffer[];
|
|
double lChikBuffer[];
|
|
double lSSABuffer[];
|
|
double lSSBBuffer[];
|
|
|
|
//
|
|
// Hind ...
|
|
double hTKBuffer[];
|
|
double hKJBuffer[];
|
|
double hChikBuffer[];
|
|
double hSSABuffer[];
|
|
double hSSBBuffer[];
|
|
|
|
//
|
|
// Tools ...
|
|
|
|
//
|
|
// Calculate Values Until Now ...
|
|
void Calculate()
|
|
{
|
|
//
|
|
int totalBars = CountBars();
|
|
if (totalBars > 1000)
|
|
{
|
|
totalBars = 1000;
|
|
}
|
|
|
|
//
|
|
// Current ...
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_C_TK_LINE,
|
|
0,
|
|
totalBars,
|
|
cTKBuffer
|
|
//
|
|
);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_C_KJ_LINE,
|
|
0,
|
|
totalBars,
|
|
cKJBuffer
|
|
//
|
|
);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_C_CH_LINE,
|
|
0,
|
|
totalBars,
|
|
cChikBuffer
|
|
//
|
|
);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_C_SSA_LINE,
|
|
0,
|
|
totalBars,
|
|
cSSABuffer
|
|
//
|
|
);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_C_SSB_LINE,
|
|
0,
|
|
totalBars,
|
|
cSSBBuffer
|
|
//
|
|
);
|
|
|
|
//
|
|
// Short ...
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_S_TK_LINE,
|
|
0,
|
|
totalBars,
|
|
sTKBuffer
|
|
//
|
|
);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_S_KJ_LINE,
|
|
0,
|
|
totalBars,
|
|
sKJBuffer
|
|
//
|
|
);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_S_CH_LINE,
|
|
0,
|
|
totalBars,
|
|
sChikBuffer
|
|
//
|
|
);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_S_SSA_LINE,
|
|
0,
|
|
totalBars,
|
|
sSSABuffer
|
|
//
|
|
);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_S_SSB_LINE,
|
|
0,
|
|
totalBars,
|
|
sSSBBuffer
|
|
//
|
|
);
|
|
|
|
//
|
|
// Medium ...
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_M_TK_LINE,
|
|
0,
|
|
totalBars,
|
|
mTKBuffer
|
|
//
|
|
);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_M_KJ_LINE,
|
|
0,
|
|
totalBars,
|
|
mKJBuffer
|
|
//
|
|
);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_M_CH_LINE,
|
|
0,
|
|
totalBars,
|
|
mChikBuffer
|
|
//
|
|
);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_M_SSA_LINE,
|
|
0,
|
|
totalBars,
|
|
mSSABuffer
|
|
//
|
|
);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_M_SSB_LINE,
|
|
0,
|
|
totalBars,
|
|
mSSBBuffer
|
|
//
|
|
);
|
|
|
|
//
|
|
// Long ...
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_L_TK_LINE,
|
|
0,
|
|
totalBars,
|
|
lTKBuffer
|
|
//
|
|
);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_L_KJ_LINE,
|
|
0,
|
|
totalBars,
|
|
lKJBuffer
|
|
//
|
|
);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_L_CH_LINE,
|
|
0,
|
|
totalBars,
|
|
lChikBuffer
|
|
//
|
|
);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_L_SSA_LINE,
|
|
0,
|
|
totalBars,
|
|
lSSABuffer
|
|
//
|
|
);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_L_SSB_LINE,
|
|
0,
|
|
totalBars,
|
|
lSSBBuffer
|
|
//
|
|
);
|
|
|
|
//
|
|
// Hind ...
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_H_TK_LINE,
|
|
0,
|
|
totalBars,
|
|
hTKBuffer
|
|
//
|
|
);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_H_KJ_LINE,
|
|
0,
|
|
totalBars,
|
|
hKJBuffer
|
|
//
|
|
);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_H_CH_LINE,
|
|
0,
|
|
totalBars,
|
|
hChikBuffer
|
|
//
|
|
);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_H_SSA_LINE,
|
|
0,
|
|
totalBars,
|
|
hSSABuffer
|
|
//
|
|
);
|
|
CopyBuffer(
|
|
mHandler,
|
|
XCHICH_H_SSB_LINE,
|
|
0,
|
|
totalBars,
|
|
hSSBBuffer
|
|
//
|
|
);
|
|
};
|
|
};
|
|
|
|
// |