192 lines
4.3 KiB
Plaintext
192 lines
4.3 KiB
Plaintext
//
|
|
// Check Conditions For Signal ...
|
|
bool HasSignal(
|
|
XSignal &signal //
|
|
) override
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
signal.Clean();
|
|
|
|
//
|
|
double sl = 0;
|
|
double tp = 0;
|
|
double risk = 0;
|
|
double entry = 0;
|
|
double reward = 0;
|
|
double r2r = R2R();
|
|
ENUM_POSITION_TYPE type;
|
|
ENUM_X_ORDER_MODES mode = X_ORDER_MODE_MARKET;
|
|
|
|
//
|
|
// Check Signalling Direction ...
|
|
result = mSignallingDirection != X_SIGNALLING_NONE;
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Check Conditions Exists ...
|
|
result = HasRequirements();
|
|
if (!result)
|
|
{
|
|
//
|
|
// Prepare Conditions ...
|
|
result = PrepareRequirements();
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
}
|
|
|
|
//
|
|
// Implement Signalling Conditions ...
|
|
XOHCL cBar;
|
|
result = cBar.Init(
|
|
mSymbol,
|
|
mPeriod,
|
|
1 //
|
|
);
|
|
|
|
//
|
|
// Check Analyzing Period Contains a Trend or not ...
|
|
|
|
//
|
|
// Detecting Trend ...
|
|
bool isInBullishTrend = false;
|
|
bool isInBearishTrend = false;
|
|
|
|
//
|
|
isInBullishTrend = bar.HasBullishTrend(
|
|
highSwingBars,
|
|
lowSwingBars //
|
|
);
|
|
if (!isInBullishTrend)
|
|
{
|
|
//
|
|
isInBearishTrend = bar.HasBearishTrend(
|
|
highSwingBars,
|
|
lowSwingBars //
|
|
);
|
|
}
|
|
|
|
//
|
|
// Only Looks For Signals if aTrend Detected ...
|
|
result = isInBullishTrend || isInBearishTrend;
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// Here We have to Decide Trend or Reversal Act ...
|
|
|
|
//
|
|
// Check Trend Direction Signal ...
|
|
if (mSignallingDirection == X_SIGNALLING_BOTH_DIRECTIONS ||
|
|
mSignallingDirection == X_SIGNALLING_TREND_DIRECTION)
|
|
{
|
|
//
|
|
if (isInBullishTrend)
|
|
{
|
|
//
|
|
// Find Long Signals ...
|
|
// since we are in Bullish Trend and
|
|
// we must do Trend Trading ...
|
|
|
|
//
|
|
result =
|
|
//
|
|
false
|
|
//
|
|
;
|
|
}
|
|
else if (isInBearishTrend)
|
|
{
|
|
//
|
|
// Find Short Signals ...
|
|
// since we are in Bearish Trend and
|
|
// we must do Trend Trading ...
|
|
|
|
//
|
|
result =
|
|
//
|
|
false
|
|
//
|
|
;
|
|
}
|
|
}
|
|
|
|
//
|
|
// Check Trend Reversal Direction Signal ...
|
|
if (!result &&
|
|
(mSignallingDirection == X_SIGNALLING_BOTH_DIRECTIONS ||
|
|
mSignallingDirection == X_SIGNALIING_TREND_REVERSAL_DIRECTION))
|
|
{
|
|
//
|
|
if (isInBullishTrend)
|
|
{
|
|
//
|
|
// Find Short Signals ...
|
|
// since we are in Bullish Trend and
|
|
// we must do Trend Reversal Trading ...
|
|
|
|
//
|
|
result =
|
|
//
|
|
false
|
|
//
|
|
;
|
|
}
|
|
else if (isInBearishTrend)
|
|
{
|
|
//
|
|
// Find Long Signals ...
|
|
// since we are in Bearish Trend and
|
|
// we must do Trend Reversal Trading ...
|
|
|
|
//
|
|
result =
|
|
//
|
|
false
|
|
//
|
|
;
|
|
}
|
|
}
|
|
|
|
//
|
|
// Make Sure Signal Exists ...
|
|
if (!result)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
CalculateTPSLBtPrice(
|
|
sl,
|
|
tp,
|
|
type,
|
|
entry,
|
|
r2r //
|
|
);
|
|
|
|
//
|
|
result = signal.Prepare(
|
|
mSymbol,
|
|
GetTag(),
|
|
mPeriod,
|
|
type,
|
|
mode,
|
|
entry,
|
|
mVolume,
|
|
sl,
|
|
tp //
|
|
);
|
|
|
|
//
|
|
return result;
|
|
}
|