last ...
This commit is contained in:
@@ -0,0 +1,314 @@
|
||||
|
||||
//
|
||||
// Prepare Signal ...
|
||||
void PrepareConditionsSignal(X121MarketConditions &conditions)
|
||||
{
|
||||
//
|
||||
if (!conditions.hasSignal)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
bool isLong = IsLong(conditions.signal.type);
|
||||
|
||||
//
|
||||
// Check Calculate TP ...
|
||||
if (
|
||||
conditions.signal.sl > 0 &&
|
||||
conditions.signal.tp <= 0 &&
|
||||
conditions.signal.r2r > 0 &&
|
||||
conditions.signal.entry > 0)
|
||||
{
|
||||
//
|
||||
double riskPrice = MathAbs(conditions.signal.entry - conditions.signal.sl);
|
||||
double riskPoint = PriceToPoint(
|
||||
conditions.signal.symbol,
|
||||
riskPrice);
|
||||
double rewardPoint = riskPoint * conditions.signal.r2r;
|
||||
double rewardPrice = PointToPrice(
|
||||
conditions.signal.symbol,
|
||||
rewardPoint);
|
||||
|
||||
//
|
||||
double tp =
|
||||
isLong
|
||||
? conditions.signal.entry + rewardPrice
|
||||
: conditions.signal.entry - rewardPrice;
|
||||
|
||||
//
|
||||
conditions.signal.tp = tp;
|
||||
}
|
||||
|
||||
//
|
||||
PrepareSignal(conditions.signal);
|
||||
|
||||
//
|
||||
conditions.signal.supportAndResistance = conditions.supportResistances;
|
||||
}
|
||||
|
||||
//
|
||||
// TODO: Delete This ...
|
||||
void DrawConditionsSignalOnChart(X121MarketConditions &conditions)
|
||||
{
|
||||
//
|
||||
ulong mTicket = MathRand() * 100000;
|
||||
|
||||
//
|
||||
DrawSignal(
|
||||
mTicket,
|
||||
conditions.signal);
|
||||
|
||||
//
|
||||
DrawSupportResistance(
|
||||
0,
|
||||
conditions.supportResistances,
|
||||
conditions.signal.providers[0]);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Catch Trend Changes ...
|
||||
if (ArraySize(trendStateBuffer) > 1)
|
||||
{
|
||||
//
|
||||
bool isChanged =
|
||||
trendStateBuffer[0] != trendStateBuffer[1] &&
|
||||
trendStateBuffer[0] != EMPTY_VALUE;
|
||||
if (isChanged)
|
||||
{
|
||||
//
|
||||
double to = trendBuffer[0];
|
||||
double from = trendBuffer[1];
|
||||
ENUM_XMAN_STATES state = (ENUM_XMAN_STATES)(int)trendStateBuffer[0];
|
||||
datetime at = iTime(
|
||||
mSymbol,
|
||||
mPeriod,
|
||||
barIndex);
|
||||
|
||||
//
|
||||
XValueChanged lastChange;
|
||||
bool hasLastChange = GetLastItem(
|
||||
lastChange,
|
||||
trendChanges);
|
||||
bool canAdd =
|
||||
!hasLastChange
|
||||
? true
|
||||
: lastChange.at < at;
|
||||
|
||||
//
|
||||
if (canAdd)
|
||||
{
|
||||
//
|
||||
// Here also we Free Trend Changes Sizes if
|
||||
// its More than 500 ...
|
||||
if (ArraySize(trendChanges) >= 500)
|
||||
{
|
||||
//
|
||||
// Retrieve Last Change model and add theme
|
||||
// again ...
|
||||
|
||||
//
|
||||
Clean(trendChanges);
|
||||
|
||||
//
|
||||
if (hasLastChange)
|
||||
{
|
||||
//
|
||||
Add(
|
||||
lastChange,
|
||||
trendChanges);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
XValueChanged model;
|
||||
|
||||
//
|
||||
model.to = to;
|
||||
model.from = from;
|
||||
model.at = at;
|
||||
|
||||
//
|
||||
Add(
|
||||
model,
|
||||
trendChanges);
|
||||
|
||||
// //
|
||||
// LogMessage(
|
||||
// "Trend Changed On: " + ToString(trendChangeddOn) +
|
||||
// "\n state: " + EnumToString(state) +
|
||||
// "\n from: " + ToString(lastTrend) +
|
||||
// "\n to: " + ToString(trend) +
|
||||
// "\n"
|
||||
// //
|
||||
// );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
Copy(
|
||||
trendChanges,
|
||||
result.trendChanges);
|
||||
ArraySetAsSeries(
|
||||
result.trendChanges,
|
||||
true);
|
||||
|
||||
//
|
||||
// Catch Peaks Changes ...
|
||||
if (ArraySize(peaksBuffer) > 1)
|
||||
{
|
||||
//
|
||||
bool isPeakChanged =
|
||||
peaksBuffer[0] != peaksBuffer[1] &&
|
||||
peaksBuffer[0] != EMPTY_VALUE;
|
||||
if (isPeakChanged)
|
||||
{
|
||||
//
|
||||
double peak = peaksBuffer[0];
|
||||
double lastPeak = peaksBuffer[1];
|
||||
|
||||
//
|
||||
datetime at = iTime(
|
||||
mSymbol,
|
||||
mPeriod,
|
||||
barIndex);
|
||||
|
||||
//
|
||||
XValueChanged lastChange;
|
||||
bool hasLastChange = GetLastItem(
|
||||
lastChange,
|
||||
peakChanges);
|
||||
bool canAdd =
|
||||
!hasLastChange
|
||||
? true
|
||||
: lastChange.at < at;
|
||||
|
||||
//
|
||||
if (canAdd)
|
||||
{
|
||||
//
|
||||
// Here also we Free Trend Changes Sizes if
|
||||
// its More than 500 ...
|
||||
if (ArraySize(peakChanges) >= 500)
|
||||
{
|
||||
//
|
||||
// Retrieve Last Change model and add theme
|
||||
// again ...
|
||||
|
||||
//
|
||||
Clean(peakChanges);
|
||||
|
||||
//
|
||||
if (hasLastChange)
|
||||
{
|
||||
//
|
||||
Add(
|
||||
lastChange,
|
||||
peakChanges);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
XValueChanged model;
|
||||
|
||||
//
|
||||
model.to = peak;
|
||||
model.from = lastPeak;
|
||||
model.at = at;
|
||||
|
||||
//
|
||||
Add(
|
||||
model,
|
||||
peakChanges);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
Copy(
|
||||
peakChanges,
|
||||
result.peakChanges);
|
||||
ArraySetAsSeries(
|
||||
result.peakChanges,
|
||||
true);
|
||||
|
||||
//
|
||||
// Catch Vales Changes ...
|
||||
if (ArraySize(valesBuffer) > 1)
|
||||
{
|
||||
//
|
||||
bool isChanged =
|
||||
valesBuffer[0] != valesBuffer[1] &&
|
||||
valesBuffer[0] != EMPTY_VALUE;
|
||||
if (isChanged)
|
||||
{
|
||||
//
|
||||
double peak = peaksBuffer[0];
|
||||
double lastPeak = peaksBuffer[1];
|
||||
|
||||
//
|
||||
datetime at = iTime(
|
||||
mSymbol,
|
||||
mPeriod,
|
||||
barIndex);
|
||||
|
||||
//
|
||||
XValueChanged lastChange;
|
||||
bool hasLastChange = GetLastItem(
|
||||
lastChange,
|
||||
peakChanges);
|
||||
bool canAdd =
|
||||
!hasLastChange
|
||||
? true
|
||||
: lastChange.at < at;
|
||||
|
||||
//
|
||||
if (canAdd)
|
||||
{
|
||||
//
|
||||
// Here also we Free Trend Changes Sizes if
|
||||
// its More than 500 ...
|
||||
if (ArraySize(peakChanges) >= 500)
|
||||
{
|
||||
//
|
||||
// Retrieve Last Change model and add theme
|
||||
// again ...
|
||||
|
||||
//
|
||||
Clean(peakChanges);
|
||||
|
||||
//
|
||||
if (hasLastChange)
|
||||
{
|
||||
//
|
||||
Add(
|
||||
lastChange,
|
||||
peakChanges);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
XValueChanged model;
|
||||
|
||||
//
|
||||
model.to = peak;
|
||||
model.from = lastPeak;
|
||||
model.at = at;
|
||||
|
||||
//
|
||||
Add(
|
||||
model,
|
||||
peakChanges);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
Copy(
|
||||
peakChanges,
|
||||
result.peakChanges);
|
||||
ArraySetAsSeries(
|
||||
result.peakChanges,
|
||||
true);
|
||||
Reference in New Issue
Block a user