last ...
This commit is contained in:
@@ -0,0 +1,260 @@
|
|||||||
|
|
||||||
|
//
|
||||||
|
// Here we are Capture Conditions and Check Signals ...
|
||||||
|
// The Signals Must be Unique for each providers ...
|
||||||
|
bool ProcessSignals(X121MarketConditions &conditions)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
X121MarketConditions mConditions = GetMarketConditions(1);
|
||||||
|
|
||||||
|
//
|
||||||
|
// BUY ...
|
||||||
|
|
||||||
|
//
|
||||||
|
Clean(mConditions.signal);
|
||||||
|
bool hasLongSignal = HasLongSignal(mConditions);
|
||||||
|
if (hasLongSignal)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
NotifyOnSignalEvent(
|
||||||
|
mConditions.signal);
|
||||||
|
NotifyOnSignalConditionsEvent(mConditions);
|
||||||
|
mWaitUntilNewCandle = true;
|
||||||
|
|
||||||
|
//
|
||||||
|
conditions = mConditions;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// SELL ...
|
||||||
|
|
||||||
|
//
|
||||||
|
Clean(mConditions.signal);
|
||||||
|
bool hasShortignal = HasShortSignal(mConditions);
|
||||||
|
if (hasShortignal)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
NotifyOnSignalEvent(
|
||||||
|
mConditions.signal);
|
||||||
|
NotifyOnSignalConditionsEvent(mConditions);
|
||||||
|
mWaitUntilNewCandle = true;
|
||||||
|
|
||||||
|
//
|
||||||
|
conditions = mConditions;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Check has Long Signal on Each Strategies ...
|
||||||
|
bool HasLongSignal(X121MarketConditions &conditions)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
//
|
||||||
|
double entry = GetEntry(
|
||||||
|
mSymbol,
|
||||||
|
POSITION_TYPE_BUY);
|
||||||
|
|
||||||
|
//
|
||||||
|
XOHCL c1 = GetCandle(
|
||||||
|
mSymbol,
|
||||||
|
mPeriod,
|
||||||
|
1);
|
||||||
|
|
||||||
|
//
|
||||||
|
double pivots[];
|
||||||
|
FillPivotPoints(pivots);
|
||||||
|
XOHCLSupRes supRes = ExtractSupportAndResistance(
|
||||||
|
1,
|
||||||
|
pivots,
|
||||||
|
15);
|
||||||
|
X121MarketConditions mConditions = GetMarketConditions(1);
|
||||||
|
|
||||||
|
//
|
||||||
|
mXPVHelper.Calculate(1);
|
||||||
|
|
||||||
|
//
|
||||||
|
Clean(mConditions.signal);
|
||||||
|
|
||||||
|
//
|
||||||
|
// XPVF Signal Provider ...
|
||||||
|
bool xPVFSignal = false;
|
||||||
|
if (!mDisableXPVFLong)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
xPVFSignal =
|
||||||
|
//
|
||||||
|
mConditions.xpvInfo.isNewPeak &&
|
||||||
|
mXPVHelper.peaksBuffer[0] < mXPVHelper.peaksBuffer[1] &&
|
||||||
|
mXPVHelper.valesBuffer[0] == mXPVHelper.valesBuffer[1]
|
||||||
|
//
|
||||||
|
;
|
||||||
|
|
||||||
|
//
|
||||||
|
if (xPVFSignal)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
ToString(XPVF),
|
||||||
|
mConditions.signal.providers);
|
||||||
|
|
||||||
|
//
|
||||||
|
mConditions.signal.r2r = 1.5;
|
||||||
|
mConditions.signal.riskAmount = 0.005;
|
||||||
|
mConditions.signal.mode = X_ORDER_MODE_MARKET;
|
||||||
|
mConditions.signal.entry = entry;
|
||||||
|
mConditions.signal.sl = 0; // mXCHEHelper.longExit2[1];
|
||||||
|
mConditions.signal.tp = 0;
|
||||||
|
|
||||||
|
//
|
||||||
|
// mConditions.signal.calculateTP = true;
|
||||||
|
// mConditions.signal.useRiskAmountAsVolume = false;
|
||||||
|
// mConditions.signal.useSupportAndResistance = true;
|
||||||
|
|
||||||
|
//
|
||||||
|
// mDisableXPVFLong = true;
|
||||||
|
// mDisableXPVFShort = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
result =
|
||||||
|
//
|
||||||
|
xPVFSignal
|
||||||
|
//
|
||||||
|
;
|
||||||
|
|
||||||
|
//
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
conditions = mConditions;
|
||||||
|
|
||||||
|
//
|
||||||
|
conditions.supportResistances = supRes;
|
||||||
|
conditions.momentumStep = mLastMomentumStep;
|
||||||
|
|
||||||
|
//
|
||||||
|
conditions.signal.symbol = mSymbol;
|
||||||
|
conditions.signal.period = mPeriod;
|
||||||
|
conditions.signal.type = POSITION_TYPE_BUY;
|
||||||
|
|
||||||
|
//
|
||||||
|
conditions.hasSignal = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Check has Short Signal on Each Strategies ...
|
||||||
|
bool HasShortSignal(X121MarketConditions &conditions)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
//
|
||||||
|
double entry = GetEntry(
|
||||||
|
mSymbol,
|
||||||
|
POSITION_TYPE_SELL);
|
||||||
|
|
||||||
|
//
|
||||||
|
XOHCL c1 = GetCandle(
|
||||||
|
mSymbol,
|
||||||
|
mPeriod,
|
||||||
|
1);
|
||||||
|
|
||||||
|
//
|
||||||
|
double pivots[];
|
||||||
|
FillPivotPoints(pivots);
|
||||||
|
XOHCLSupRes supRes = ExtractSupportAndResistance(
|
||||||
|
1,
|
||||||
|
pivots,
|
||||||
|
15);
|
||||||
|
|
||||||
|
//
|
||||||
|
X121MarketConditions mConditions = GetMarketConditions(1);
|
||||||
|
|
||||||
|
//
|
||||||
|
mXPVHelper.Calculate(1);
|
||||||
|
|
||||||
|
//
|
||||||
|
Clean(mConditions.signal);
|
||||||
|
|
||||||
|
//
|
||||||
|
// XPVF Signal Provider ...
|
||||||
|
bool xPVFSignal = false;
|
||||||
|
if (!mDisableXPVFShort)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
xPVFSignal =
|
||||||
|
//
|
||||||
|
mConditions.xpvInfo.isNewVale &&
|
||||||
|
mXPVHelper.valesBuffer[0] > mXPVHelper.valesBuffer[1] &&
|
||||||
|
mXPVHelper.peaksBuffer[0] == mXPVHelper.peaksBuffer[1]
|
||||||
|
//
|
||||||
|
;
|
||||||
|
|
||||||
|
//
|
||||||
|
if (xPVFSignal)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
ToString(XPVF),
|
||||||
|
mConditions.signal.providers);
|
||||||
|
|
||||||
|
//
|
||||||
|
mConditions.signal.r2r = 1.5;
|
||||||
|
mConditions.signal.riskAmount = 0.005;
|
||||||
|
mConditions.signal.mode = X_ORDER_MODE_STOP;
|
||||||
|
mConditions.signal.entry = entry;
|
||||||
|
mConditions.signal.sl = 0;
|
||||||
|
mConditions.signal.tp = mXPVHelper.valesBuffer[1];
|
||||||
|
|
||||||
|
//
|
||||||
|
mConditions.signal.calculateTP = true;
|
||||||
|
mConditions.signal.useRiskAmountAsVolume = false;
|
||||||
|
mConditions.signal.useSupportAndResistance = true;
|
||||||
|
|
||||||
|
//
|
||||||
|
// mDisableXPVFShort = true;
|
||||||
|
// mDisableXPVFLong = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
result =
|
||||||
|
//
|
||||||
|
xPVFSignal
|
||||||
|
//
|
||||||
|
;
|
||||||
|
|
||||||
|
//
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
conditions = mConditions;
|
||||||
|
|
||||||
|
//
|
||||||
|
conditions.supportResistances = supRes;
|
||||||
|
conditions.momentumStep = mLastMomentumStep;
|
||||||
|
|
||||||
|
//
|
||||||
|
conditions.signal.symbol = mSymbol;
|
||||||
|
conditions.signal.period = mPeriod;
|
||||||
|
conditions.signal.type = POSITION_TYPE_SELL;
|
||||||
|
|
||||||
|
//
|
||||||
|
conditions.hasSignal = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user