apply fix for multi signaller signal generating issue ...
This commit is contained in:
@@ -1204,7 +1204,7 @@ struct X121ProviderDescriptor
|
|||||||
XSCX121Provider *provider;
|
XSCX121Provider *provider;
|
||||||
|
|
||||||
//
|
//
|
||||||
XSignal signal;
|
XSignal signals[];
|
||||||
X121MarketConditions conditions;
|
X121MarketConditions conditions;
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -1273,7 +1273,7 @@ struct X121ProviderDescriptor
|
|||||||
void Clean()
|
void Clean()
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
signal.Clean();
|
Clean(signals);
|
||||||
conditions.Clear();
|
conditions.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1302,22 +1302,20 @@ struct X121ProviderDescriptor
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Check Signal ...
|
// Check Signal ...
|
||||||
bool HasSignal(int barIndex = 0)
|
int HasSignal(int barIndex = 0)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
bool result = false;
|
int result = 0;
|
||||||
|
|
||||||
//
|
//
|
||||||
result = inputs.IsValid();
|
if (!inputs.IsValid())
|
||||||
if (!result)
|
|
||||||
{
|
{
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
int signallersCount = ArraySize(this.signallers);
|
int signallersCount = ArraySize(this.signallers);
|
||||||
result = IsValidSize(signallersCount);
|
if (!IsValidSize(signallersCount))
|
||||||
if (!result)
|
|
||||||
{
|
{
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -1328,8 +1326,7 @@ struct X121ProviderDescriptor
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Check Waits Until New Bar ...
|
// Check Waits Until New Bar ...
|
||||||
result = !this.provider.CanIgnoreProcess();
|
if (!this.provider.CanIgnoreProcess())
|
||||||
if (!result)
|
|
||||||
{
|
{
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -1662,392 +1659,433 @@ struct X121ProviderDescriptor
|
|||||||
mProvider = this.signallers[i].GetName();
|
mProvider = this.signallers[i].GetName();
|
||||||
mVolume = this.signallers[i].staticVolumeShort;
|
mVolume = this.signallers[i].staticVolumeShort;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
bool hasLong =
|
|
||||||
//
|
|
||||||
cHasLong
|
|
||||||
//
|
|
||||||
||
|
|
||||||
//
|
|
||||||
sHasLong
|
|
||||||
//
|
|
||||||
||
|
|
||||||
//
|
|
||||||
mHasLong
|
|
||||||
//
|
|
||||||
||
|
|
||||||
//
|
|
||||||
lHasLong
|
|
||||||
//
|
|
||||||
||
|
|
||||||
//
|
|
||||||
hHasLong
|
|
||||||
//
|
|
||||||
;
|
|
||||||
|
|
||||||
//
|
|
||||||
bool hasShort =
|
|
||||||
//
|
|
||||||
cHasShort
|
|
||||||
//
|
|
||||||
||
|
|
||||||
//
|
|
||||||
sHasShort
|
|
||||||
//
|
|
||||||
||
|
|
||||||
//
|
|
||||||
mHasShort
|
|
||||||
//
|
|
||||||
||
|
|
||||||
//
|
|
||||||
lHasShort
|
|
||||||
//
|
|
||||||
||
|
|
||||||
//
|
|
||||||
hHasShort
|
|
||||||
//
|
|
||||||
;
|
|
||||||
|
|
||||||
//
|
|
||||||
result = hasLong || hasShort;
|
|
||||||
if (!result)
|
|
||||||
{
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isScorePassed = hasLong
|
|
||||||
? bullishScore > bearishScore * 2
|
|
||||||
: bearishScore > bullishScore * 2;
|
|
||||||
|
|
||||||
//
|
|
||||||
result =
|
|
||||||
//
|
|
||||||
isScorePassed &&
|
|
||||||
(hasLong
|
|
||||||
? longVerifiers > 1
|
|
||||||
: shortVerifiers > 1)
|
|
||||||
//
|
|
||||||
;
|
|
||||||
if (!result)
|
|
||||||
{
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Try to Normalize SL and TP ...
|
|
||||||
|
|
||||||
//
|
|
||||||
// For Longs ...
|
|
||||||
if (hasLong) {
|
|
||||||
//
|
|
||||||
// Collect all Verifications SLs ...
|
|
||||||
|
|
||||||
//
|
//
|
||||||
double sls[];
|
bool hasLong =
|
||||||
double tps[];
|
|
||||||
|
|
||||||
//
|
|
||||||
// Current Market ...
|
|
||||||
|
|
||||||
//
|
|
||||||
if (cLNSL > 0) {
|
|
||||||
//
|
//
|
||||||
Add(
|
cHasLong
|
||||||
cLNSL,
|
|
||||||
sls //
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
if (cLNTP > 0) {
|
|
||||||
//
|
//
|
||||||
Add(
|
||
|
||||||
cLNTP,
|
|
||||||
tps //
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Short Market ...
|
|
||||||
|
|
||||||
//
|
|
||||||
if (sLNSL > 0) {
|
|
||||||
//
|
//
|
||||||
Add(
|
sHasLong
|
||||||
sLNSL,
|
|
||||||
sls //
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
if (sLNTP > 0) {
|
|
||||||
//
|
//
|
||||||
Add(
|
||
|
||||||
sLNTP,
|
|
||||||
tps //
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Medium Market ...
|
|
||||||
|
|
||||||
//
|
|
||||||
if (mLNSL > 0) {
|
|
||||||
//
|
//
|
||||||
Add(
|
mHasLong
|
||||||
mLNSL,
|
|
||||||
sls //
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
if (mLNTP > 0) {
|
|
||||||
//
|
//
|
||||||
Add(
|
||
|
||||||
mLNTP,
|
|
||||||
tps //
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Long Market ...
|
|
||||||
|
|
||||||
//
|
|
||||||
if (lLNSL > 0) {
|
|
||||||
//
|
//
|
||||||
Add(
|
lHasLong
|
||||||
lLNSL,
|
|
||||||
sls //
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
if (lLNTP > 0) {
|
|
||||||
//
|
//
|
||||||
Add(
|
||
|
||||||
lLNTP,
|
|
||||||
tps //
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Hind Market ...
|
|
||||||
|
|
||||||
//
|
|
||||||
if (hLNSL > 0) {
|
|
||||||
//
|
//
|
||||||
Add(
|
hHasLong
|
||||||
hLNSL,
|
|
||||||
sls //
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
if (hLNTP > 0) {
|
|
||||||
//
|
//
|
||||||
Add(
|
;
|
||||||
hLNTP,
|
|
||||||
tps //
|
//
|
||||||
|
bool hasShort =
|
||||||
|
//
|
||||||
|
cHasShort
|
||||||
|
//
|
||||||
|
||
|
||||||
|
//
|
||||||
|
sHasShort
|
||||||
|
//
|
||||||
|
||
|
||||||
|
//
|
||||||
|
mHasShort
|
||||||
|
//
|
||||||
|
||
|
||||||
|
//
|
||||||
|
lHasShort
|
||||||
|
//
|
||||||
|
||
|
||||||
|
//
|
||||||
|
hHasShort
|
||||||
|
//
|
||||||
|
;
|
||||||
|
|
||||||
|
//
|
||||||
|
if (!(hasLong || hasShort))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
bool isScorePassed = hasLong
|
||||||
|
? bullishScore > bearishScore * 2
|
||||||
|
: bearishScore > bullishScore * 2;
|
||||||
|
|
||||||
|
//
|
||||||
|
bool hasSignal =
|
||||||
|
//
|
||||||
|
isScorePassed &&
|
||||||
|
(hasLong
|
||||||
|
? longVerifiers > 1
|
||||||
|
: shortVerifiers > 1)
|
||||||
|
//
|
||||||
|
;
|
||||||
|
if (!hasSignal)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Try to Normalize SL and TP ...
|
||||||
|
|
||||||
|
//
|
||||||
|
// For Longs ...
|
||||||
|
if (hasLong)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Collect all Verifications SLs ...
|
||||||
|
|
||||||
|
//
|
||||||
|
double sls[];
|
||||||
|
double tps[];
|
||||||
|
|
||||||
|
//
|
||||||
|
// Current Market ...
|
||||||
|
|
||||||
|
//
|
||||||
|
if (cLNSL > 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
cLNSL,
|
||||||
|
sls //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
if (cLNTP > 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
cLNTP,
|
||||||
|
tps //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Short Market ...
|
||||||
|
|
||||||
|
//
|
||||||
|
if (sLNSL > 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
sLNSL,
|
||||||
|
sls //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
if (sLNTP > 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
sLNTP,
|
||||||
|
tps //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Medium Market ...
|
||||||
|
|
||||||
|
//
|
||||||
|
if (mLNSL > 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
mLNSL,
|
||||||
|
sls //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
if (mLNTP > 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
mLNTP,
|
||||||
|
tps //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Long Market ...
|
||||||
|
|
||||||
|
//
|
||||||
|
if (lLNSL > 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
lLNSL,
|
||||||
|
sls //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
if (lLNTP > 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
lLNTP,
|
||||||
|
tps //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Hind Market ...
|
||||||
|
|
||||||
|
//
|
||||||
|
if (hLNSL > 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
hLNSL,
|
||||||
|
sls //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
if (hLNTP > 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
hLNTP,
|
||||||
|
tps //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Now Select Minimum SL ...
|
||||||
|
if (IsValidSize(ArraySize(sls)))
|
||||||
|
{
|
||||||
|
slPrice = GetMin(sls);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Average TP ...
|
||||||
|
if (IsValidSize(ArraySize(tps)))
|
||||||
|
{
|
||||||
|
tpPrice = GetAverage(tps);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// For Shorts ...
|
||||||
|
if (hasShort)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Collect all Verifications SLs ...
|
||||||
|
|
||||||
|
//
|
||||||
|
double sls[];
|
||||||
|
double tps[];
|
||||||
|
|
||||||
|
//
|
||||||
|
// Current Market ...
|
||||||
|
|
||||||
|
//
|
||||||
|
if (cSHSL > 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
cSHSL,
|
||||||
|
sls //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
if (cSHTP > 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
cSHTP,
|
||||||
|
tps //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Short Market ...
|
||||||
|
|
||||||
|
//
|
||||||
|
if (sSHSL > 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
sSHSL,
|
||||||
|
sls //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
if (sSHTP > 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
sSHTP,
|
||||||
|
tps //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Medium Market ...
|
||||||
|
|
||||||
|
//
|
||||||
|
if (mSHSL > 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
mSHSL,
|
||||||
|
sls //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
if (mSHTP > 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
mSHTP,
|
||||||
|
tps //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Long Market ...
|
||||||
|
|
||||||
|
//
|
||||||
|
if (lSHSL > 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
lSHSL,
|
||||||
|
sls //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
if (lSHTP > 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
lSHTP,
|
||||||
|
tps //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Hind Market ...
|
||||||
|
|
||||||
|
//
|
||||||
|
if (hSHSL > 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
hSHSL,
|
||||||
|
sls //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
if (hSHTP > 0)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
hSHTP,
|
||||||
|
tps //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Now Select Minimum SL ...
|
||||||
|
if (IsValidSize(ArraySize(sls)))
|
||||||
|
{
|
||||||
|
slPrice = GetMin(sls);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Average TP ...
|
||||||
|
if (IsValidSize(ArraySize(tps)))
|
||||||
|
{
|
||||||
|
tpPrice = GetAverage(tps);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Generate Signal ...
|
||||||
|
XSignal iSignal;
|
||||||
|
|
||||||
|
//
|
||||||
|
ENUM_POSITION_TYPE mType =
|
||||||
|
hasLong
|
||||||
|
? POSITION_TYPE_BUY
|
||||||
|
: POSITION_TYPE_SELL;
|
||||||
|
|
||||||
|
//
|
||||||
|
double mEntry = GetEntry(
|
||||||
|
this.symbol,
|
||||||
|
mType //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
double mTP = 0;
|
||||||
|
double mSL = 0;
|
||||||
|
CalculateTPSL(
|
||||||
|
mSL,
|
||||||
|
mTP,
|
||||||
|
mType,
|
||||||
|
mEntry,
|
||||||
|
mR2R,
|
||||||
|
slPrice,
|
||||||
|
tpPrice //
|
||||||
|
);
|
||||||
|
if (mSL == 0 && mTP == 0)
|
||||||
|
{
|
||||||
|
Print("Zero TP/SL ...");
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
bool isPrepared = iSignal.Prepare(
|
||||||
|
this.symbol,
|
||||||
|
mProvider,
|
||||||
|
this.period,
|
||||||
|
mType,
|
||||||
|
X_ORDER_MODE_MARKET,
|
||||||
|
mEntry,
|
||||||
|
mVolume,
|
||||||
|
mSL,
|
||||||
|
mTP //
|
||||||
|
);
|
||||||
|
if (!isPrepared)
|
||||||
|
{
|
||||||
|
iSignal.Clean();
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
if (iSignal.IsValid() && isPrepared && hasSignal)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
AddRef(
|
||||||
|
iSignal,
|
||||||
|
this.signals //
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// Now Select Minimum SL ...
|
|
||||||
if (IsValidSize(ArraySize(sls))) {
|
|
||||||
slPrice = GetMin(sls);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Average TP ...
|
|
||||||
if (IsValidSize(ArraySize(tps))) {
|
|
||||||
tpPrice = GetAverage(tps);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// For Shorts ...
|
result = ArraySize(this.signals);
|
||||||
if (hasShort) {
|
|
||||||
//
|
|
||||||
// Collect all Verifications SLs ...
|
|
||||||
|
|
||||||
//
|
|
||||||
double sls[];
|
|
||||||
double tps[];
|
|
||||||
|
|
||||||
//
|
|
||||||
// Current Market ...
|
|
||||||
|
|
||||||
//
|
|
||||||
if (cSHSL > 0) {
|
|
||||||
//
|
|
||||||
Add(
|
|
||||||
cSHSL,
|
|
||||||
sls //
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
if (cSHTP > 0) {
|
|
||||||
//
|
|
||||||
Add(
|
|
||||||
cSHTP,
|
|
||||||
tps //
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Short Market ...
|
|
||||||
|
|
||||||
//
|
|
||||||
if (sSHSL > 0) {
|
|
||||||
//
|
|
||||||
Add(
|
|
||||||
sSHSL,
|
|
||||||
sls //
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
if (sSHTP > 0) {
|
|
||||||
//
|
|
||||||
Add(
|
|
||||||
sSHTP,
|
|
||||||
tps //
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Medium Market ...
|
|
||||||
|
|
||||||
//
|
|
||||||
if (mSHSL > 0) {
|
|
||||||
//
|
|
||||||
Add(
|
|
||||||
mSHSL,
|
|
||||||
sls //
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
if (mSHTP > 0) {
|
|
||||||
//
|
|
||||||
Add(
|
|
||||||
mSHTP,
|
|
||||||
tps //
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Long Market ...
|
|
||||||
|
|
||||||
//
|
|
||||||
if (lSHSL > 0) {
|
|
||||||
//
|
|
||||||
Add(
|
|
||||||
lSHSL,
|
|
||||||
sls //
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
if (lSHTP > 0) {
|
|
||||||
//
|
|
||||||
Add(
|
|
||||||
lSHTP,
|
|
||||||
tps //
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Hind Market ...
|
|
||||||
|
|
||||||
//
|
|
||||||
if (hSHSL > 0) {
|
|
||||||
//
|
|
||||||
Add(
|
|
||||||
hSHSL,
|
|
||||||
sls //
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
if (hSHTP > 0) {
|
|
||||||
//
|
|
||||||
Add(
|
|
||||||
hSHTP,
|
|
||||||
tps //
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Now Select Minimum SL ...
|
|
||||||
if (IsValidSize(ArraySize(sls))) {
|
|
||||||
slPrice = GetMin(sls);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Average TP ...
|
|
||||||
if (IsValidSize(ArraySize(tps))) {
|
|
||||||
tpPrice = GetAverage(tps);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Generate Signal ...
|
|
||||||
this.signal.Clean();
|
|
||||||
|
|
||||||
//
|
|
||||||
ENUM_POSITION_TYPE mType =
|
|
||||||
hasLong
|
|
||||||
? POSITION_TYPE_BUY
|
|
||||||
: POSITION_TYPE_SELL;
|
|
||||||
|
|
||||||
//
|
|
||||||
double mEntry = GetEntry(
|
|
||||||
this.symbol,
|
|
||||||
mType //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
double mTP = 0;
|
|
||||||
double mSL = 0;
|
|
||||||
CalculateTPSL(
|
|
||||||
mSL,
|
|
||||||
mTP,
|
|
||||||
mType,
|
|
||||||
mEntry,
|
|
||||||
mR2R,
|
|
||||||
slPrice,
|
|
||||||
tpPrice //
|
|
||||||
);
|
|
||||||
if (mSL == 0 && mTP == 0)
|
|
||||||
{
|
|
||||||
Print("Zero TP/SL ...");
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
result = this.signal.Prepare(
|
|
||||||
this.symbol,
|
|
||||||
mProvider,
|
|
||||||
this.period,
|
|
||||||
mType,
|
|
||||||
X_ORDER_MODE_MARKET,
|
|
||||||
mEntry,
|
|
||||||
mVolume,
|
|
||||||
mSL,
|
|
||||||
mTP //
|
|
||||||
);
|
|
||||||
if (!result)
|
|
||||||
{
|
|
||||||
this.signal.Clean();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Set Wait Until New Bar ...
|
// Set Wait Until New Bar ...
|
||||||
this.provider.SetWaitsUntilNewBar(true);
|
if (IsValidSize(result))
|
||||||
|
{
|
||||||
|
this.provider.SetWaitsUntilNewBar(true);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -231,17 +231,19 @@ public:
|
|||||||
X121ProviderDescriptor iDescriptor = mDescriptors[i];
|
X121ProviderDescriptor iDescriptor = mDescriptors[i];
|
||||||
|
|
||||||
//
|
//
|
||||||
bool iHasSignal = iDescriptor.HasSignal();
|
int iSignalsCount = iDescriptor.HasSignal();
|
||||||
if (iHasSignal)
|
if (IsValidSize(iSignalsCount))
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
// Here we Can double check Signals by Conditions
|
// Here we Can double check Signals by Conditions
|
||||||
// for Score Base Filtering ...
|
// for Score Base Filtering ...
|
||||||
|
iDescriptor.provider.SetWaitsUntilNewBar(true);
|
||||||
|
|
||||||
//
|
//
|
||||||
AddRef(
|
Copy(
|
||||||
iDescriptor.signal,
|
iDescriptor.signals,
|
||||||
signals
|
signals,
|
||||||
|
false
|
||||||
//
|
//
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -1050,9 +1050,9 @@ void ApplyPreDefineConfigurations(X121ProviderDescriptor &iDescriptor)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
iDescriptor.inputs.ichInputs.showKumo = true; // isX110;
|
iDescriptor.inputs.ichInputs.showKumo = false; // isX110;
|
||||||
iDescriptor.inputs.ichInputs.showKijunSen = true; // isX110;
|
iDescriptor.inputs.ichInputs.showKijunSen = false; // isX110;
|
||||||
iDescriptor.inputs.ichInputs.showTenkanSen = true; // isX110;
|
iDescriptor.inputs.ichInputs.showTenkanSen = false; // isX110;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
Reference in New Issue
Block a user