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