242 lines
4.8 KiB
Plaintext
242 lines
4.8 KiB
Plaintext
///////////////////////////////////////////////////////
|
|
//
|
|
// SaherElm IT Center MQL5 X12 Draw Library
|
|
// ------------------------------------------
|
|
// Name: X121Draw
|
|
// Description: provides Draw 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
|
|
|
|
//
|
|
#include "../Libraries/x-saherelm.draw.lib.mq5"
|
|
#include "../Libraries/x-saherelm.common.lib.mq5"
|
|
#include "../Libraries/x-saherelm.models.lib.mq5"
|
|
|
|
//
|
|
// START Draw Functions ...
|
|
//
|
|
|
|
//
|
|
// Draw Signal ...
|
|
void DrawSignal(const ulong ticket, XSignal &signal)
|
|
{
|
|
//
|
|
bool isLong = IsLong(signal.type);
|
|
|
|
//
|
|
string prefix = (string)ticket + "_" + ToString(signal.period);
|
|
|
|
//
|
|
// Retrieve Time ...
|
|
datetime time = iTime(
|
|
signal.symbol,
|
|
signal.period,
|
|
0);
|
|
|
|
//
|
|
// Retrieve 3 Time ...
|
|
datetime time3 = iTime(
|
|
signal.symbol,
|
|
signal.period,
|
|
3);
|
|
|
|
//
|
|
color posColor = isLong
|
|
? clrSpringGreen
|
|
: clrTomato;
|
|
color tpColor = clrSpringGreen;
|
|
color slColor = clrTomato;
|
|
color entryColor = clrGold;
|
|
|
|
//
|
|
ENUM_LINE_STYLE vLineStyle = STYLE_DOT;
|
|
ENUM_LINE_STYLE tpLineStyle = STYLE_SOLID;
|
|
ENUM_LINE_STYLE slLineStyle = STYLE_SOLID;
|
|
ENUM_LINE_STYLE entryLineStyle = STYLE_SOLID;
|
|
|
|
//
|
|
int lineWidth = 2;
|
|
|
|
//
|
|
long chartID = ChartID();
|
|
|
|
//
|
|
// Vertical Line ...
|
|
string vlName = prefix + "_" + (string)time;
|
|
|
|
//
|
|
DrawVerticalLine(
|
|
chartID,
|
|
vlName,
|
|
0,
|
|
time,
|
|
posColor,
|
|
vLineStyle,
|
|
lineWidth);
|
|
|
|
//
|
|
// TP ...
|
|
double profit = (MathAbs(signal.tp - signal.entry)) * signal.volume;
|
|
string tpName = prefix + "_TP_" + (string)profit;
|
|
|
|
//
|
|
DrawTrendLine(
|
|
chartID,
|
|
tpName,
|
|
0,
|
|
time3,
|
|
signal.tp,
|
|
time,
|
|
signal.tp,
|
|
tpColor,
|
|
tpLineStyle,
|
|
lineWidth);
|
|
|
|
//
|
|
// SL ...
|
|
double lost = (MathAbs(signal.sl - signal.entry)) * signal.volume;
|
|
string slName = prefix + "_SL_" + (string)lost;
|
|
|
|
//
|
|
DrawTrendLine(
|
|
chartID,
|
|
slName,
|
|
0,
|
|
time3,
|
|
signal.sl,
|
|
time,
|
|
signal.sl,
|
|
slColor,
|
|
slLineStyle,
|
|
lineWidth);
|
|
|
|
//
|
|
// ENTRY ...
|
|
string entryName = prefix + "_ENTRY_" + (string)lost;
|
|
|
|
//
|
|
DrawTrendLine(
|
|
chartID,
|
|
entryName,
|
|
0,
|
|
time3,
|
|
signal.entry,
|
|
time,
|
|
signal.entry,
|
|
entryColor,
|
|
entryLineStyle,
|
|
lineWidth);
|
|
}
|
|
|
|
//
|
|
// Draw Support and Resistance ...
|
|
void DrawSupportResistance(
|
|
int bar_index,
|
|
XOHCLSupRes &data,
|
|
string prefix = "",
|
|
color supportColor = clrOrange,
|
|
color resistanceColor = clrOrange)
|
|
{
|
|
//
|
|
datetime barTime = GetCandleTime(
|
|
_Symbol,
|
|
_Period,
|
|
bar_index);
|
|
|
|
//
|
|
datetime prevBarTime = GetCandleTime(
|
|
_Symbol,
|
|
_Period,
|
|
bar_index + 5);
|
|
|
|
//
|
|
long chID = ChartID();
|
|
int subWindiw = 0;
|
|
int lineWidth = 1;
|
|
|
|
//
|
|
string mPrefix = prefix + "_" + (string)barTime + "_";
|
|
|
|
//
|
|
// SUPPORTS ...
|
|
|
|
//
|
|
int supCount = ArraySize(data.sup);
|
|
if (supCount > 0)
|
|
{
|
|
//
|
|
for (int i = 0; i < supCount; i++)
|
|
{
|
|
//
|
|
double iSup = data.sup[i];
|
|
|
|
//
|
|
string supTlName = mPrefix + "SUP[" + (string)(i + 1) + "]_(" + (string)iSup + ")";
|
|
|
|
//
|
|
// Draw Support ...
|
|
DrawTrendLine(
|
|
chID,
|
|
supTlName,
|
|
subWindiw,
|
|
prevBarTime,
|
|
iSup,
|
|
barTime,
|
|
iSup,
|
|
supportColor,
|
|
STYLE_DOT,
|
|
lineWidth,
|
|
true);
|
|
}
|
|
}
|
|
|
|
//
|
|
// RESISTANCES ...
|
|
|
|
//
|
|
int resCount = ArraySize(data.res);
|
|
if (resCount > 0)
|
|
{
|
|
//
|
|
for (int i = 0; i < resCount; i++)
|
|
{
|
|
//
|
|
double iRes = data.res[i];
|
|
|
|
//
|
|
string resTlName = mPrefix + "RES[" + (string)(i + 1) + "]_(" + (string)iRes + ")";
|
|
|
|
//
|
|
// Draw Support ...
|
|
DrawTrendLine(
|
|
chID,
|
|
resTlName,
|
|
subWindiw,
|
|
prevBarTime,
|
|
iRes,
|
|
barTime,
|
|
iRes,
|
|
resistanceColor,
|
|
STYLE_DOT,
|
|
lineWidth,
|
|
true);
|
|
}
|
|
}
|
|
}
|
|
|
|
//
|
|
// END Draw Functions ...
|
|
//
|