This commit is contained in:
2025-09-29 02:40:14 +03:30
parent 0e2138a4a9
commit 57be148292
3 changed files with 207 additions and 83 deletions
+134 -29
View File
@@ -457,7 +457,7 @@ void OnTick()
fima2Signaller.OnTick();
//
// AnalyseMarket(1);
AnalyseMarket(1);
}
//
@@ -611,14 +611,24 @@ void OnSignalTriggered(XSignal &signal)
return;
}
//
// TODO: Fix this ...
return;
//
// Draw Signal on Chart ...
// XCSignalObject *iSignalObj;
// bool has = fima2Signaller.poiDrawer.DrawSignal(
// signal,
// iSignalObj,
// 7 //
// );
XCSignalObject *iSignalObj;
bool has = fima2Signaller.poiDrawer.DrawSignal(
signal,
iSignalObj,
7 //
);
//
if (has)
{
Print("Signal Issued: ", signal.GetObjectID());
}
//
// Try to Execute Signal ...
@@ -626,29 +636,29 @@ void OnSignalTriggered(XSignal &signal)
//
// Draw Signal Vertical Line ...
//
CChartObjectVLine *iObj = new CChartObjectVLine();
// //
// CChartObjectVLine *iObj = new CChartObjectVLine();
//
string iName = signal.GetTag();
color iColor = IsLong(signal.type) ? clrLime : clrRed;
// //
// string iName = signal.GetObjectID();
// color iColor = IsLong(signal.type) ? clrLime : clrRed;
//
bool has = iObj.Create(
fima2Signaller.poiDrawer.ChartIdentification(),
iName,
fima2Signaller.poiDrawer.SubWindowIdentification(),
signal.time //
);
if (has)
{
//
iObj.Width(2);
iObj.Color(iColor);
// //
// bool has = iObj.Create(
// fima2Signaller.poiDrawer.ChartIdentification(),
// iName,
// fima2Signaller.poiDrawer.SubWindowIdentification(),
// signal.time //
// );
// if (has)
// {
// //
// iObj.Width(2);
// iObj.Color(iColor);
//
// eaDraws.Add(iObj);
}
// //
// // eaDraws.Add(iObj);
// }
// //
// // Alert Issued Signal ...
@@ -913,7 +923,8 @@ void AnalyseMarket(int barIndex = 0)
);
//
// HandleSignalLookup(bar);
// XFIMASIgballer2First(bar);
HandleLookupSignal(bar);
//
bar.Clean();
@@ -922,7 +933,7 @@ void AnalyseMarket(int barIndex = 0)
//
// Handle Signal Looking Up ...
// Register it as XFIMA Signaller 2 ...
void HandleSignalLookup(XOHCL &bar)
void XFIMASIgballer2First(XOHCL &bar)
{
//
bool has =
@@ -1805,4 +1816,98 @@ void HandleSignalLookup(XOHCL &bar)
SpecifiedClean(resistances);
}
//
void HandleLookupSignal(XOHCL &bar)
{
//
bool has =
bar.IsValid();
if (!has)
{
return;
}
//
XBoxZone iZone;
XSignal iSignal;
string iName = NULL;
bool isBullish = false;
bool isBearish = false;
int barIndex = bar.Index();
double iPrice = EMPTY_VALUE;
XFIMAConditions fimaConditions;
ENUM_X_PRICE iPriceType = X_PRICE_NONE;
ENUM_X_DIRECTION iDir = X_DIRECTION_NONE;
//
int cIDX = 0;
int pIDX = cIDX + 1;
//
// Check for a Cross ...
//
// fima2Signaller.fimaHelper.Update(barIndex);
has = fima2Signaller.fimaHelper.GetConditions(
fimaConditions,
barIndex,
5 //
);
//
double cSlowMA = fimaConditions.maSlowBuffer[cIDX];
double pSlowMA = fimaConditions.maSlowBuffer[pIDX];
//
double cMAUpper = fimaConditions.maBandUpperBuffer[cIDX];
double cMALower = fimaConditions.maBandLowerBuffer[cIDX];
//
double pMAUpper = fimaConditions.maBandUpperBuffer[pIDX];
double pMALower = fimaConditions.maBandLowerBuffer[pIDX];
//
bool isCrossedOver = cSlowMA > cMALower &&
pSlowMA < pMALower;
//
bool isCrossedUnder = cSlowMA < cMAUpper &&
cSlowMA > pMAUpper;
//
has = isCrossedOver ||
isCrossedUnder;
if (!has)
{
//
isBullish = false;
isBearish = false;
iDir = X_DIRECTION_NONE;
}
//
if (has)
{
//
isBullish = isCrossedOver;
isBearish = isCrossedUnder;
}
//
iDir = (isBullish && !isBearish)
? X_DIRECTION_BULLISH
: (isBearish && !isBullish)
? X_DIRECTION_BEARISH
: X_DIRECTION_NONE;
has = HasDirection(iDir);
if (has)
{
Print("Conditions Detected ...");
}
//
// Cleanup Resources ...
fimaConditions.Clean();
}
//