last works on supporting ...

This commit is contained in:
2024-06-20 00:05:45 +03:30
parent 7bae4c6723
commit 0ef22df67b
11 changed files with 2440 additions and 494 deletions
+597
View File
@@ -1742,3 +1742,600 @@
}
return;
}
//////////////////////////////////////////////////////////////////////
// //
// // Check Signal Has TP and SL ...
// if (signal.tp > 0 && signal.sl > 0)
// {
// //
// // Here we Can Provide Orders based on Signal TP and SL ...
// //
// // Calculate TP/Entry Distance ...
// double tpDistance =
// isLong
// ? signal.tp - signal.entry
// : signal.entry - signal.tp;
// //
// // Calculate Recovery Zone Step ...
// double slDistance =
// isLong
// ? signal.entry - signal.sl
// : signal.sl - signal.entry;
// }
// //
// // Add Zone Based Signals ...
// if (canUseZones)
// {
// //
// // signal.zones.DrawZones();
// //
// // Try to Find a Hot Level based on Signal Direction
// // as Resistance ...
// //
// for (int i = 0; i < signal.zones.CountZones(); i++)
// {
// //
// // Retrieve Indexed Zone ...
// XSCZone *iZone = signal.zones.GetZone(i);
// //
// // Check Zone is Hot Zone or not ...
// bool isHotZone = false;
// for (int j = 0; j < ArraySize(hotLevels); j++)
// {
// //
// isHotZone = (iZone.percent / 100 >= hotLevels[j]);
// if (isHotZone)
// {
// break;
// }
// }
// //
// // Prevent Moving Forward if there isn't Hot Zone ...
// if (!isHotZone)
// {
// continue;
// }
// //
// if (iZone.high > signal.entry && iZone.low > signal.entry)
// {
// //
// // Here we can Use Resistance Zone as SL Recovery for
// // Short Positions ...
// if (!isLong &&
// (signal.sl <= 0
// ? true
// : iZone.high < signal.sl && iZone.low < signal.sl))
// {
// //
// // Opposit Support on Resistance Upper ...
// //
// // rTP = signal.sl <= 0
// // ? iZone.high - (onePointValue * 15)
// // : signal.sl;
// // rSL = signal.entry;
// rType = POSITION_TYPE_BUY;
// rEntry = iZone.high + (onePointValue * 2);
// rMode = X_ORDER_MODE_STOP;
// //
// isSignalPrepared = rSignal.Prepare(
// signal.symbol,
// signal.provider,
// signal.period,
// rType,
// rMode,
// rEntry,
// rVolume,
// rSL,
// rTP //
// );
// if (isSignalPrepared)
// {
// //
// AddRef(
// rSignal,
// signal.supports //
// );
// //
// rSignal.Clean();
// //
// rSL = 0;
// rTP = 0;
// rEntry = 0;
// isSignalPrepared = false;
// }
// //
// // Support Directional on Resistance Lower ...
// //
// // rTP = signal.entry;
// // rSL = signal.sl <= 0
// // ? signal.entry - (onePointValue * 15)
// // : signal.sl;
// rEntry = iZone.low - (onePointValue * 2);
// rVolume = signal.volume * 3;
// rType = POSITION_TYPE_SELL;
// rMode = X_ORDER_MODE_LIMIT;
// //
// isSignalPrepared = rSignal.Prepare(
// signal.symbol,
// signal.provider,
// signal.period,
// rType,
// rMode,
// rEntry,
// rVolume,
// rSL,
// rTP //
// );
// if (isSignalPrepared)
// {
// //
// AddRef(
// rSignal,
// signal.supports //
// );
// //
// rSignal.Clean();
// //
// rSL = 0;
// rTP = 0;
// rEntry = 0;
// isSignalPrepared = false;
// rVolume = signal.volume * 2;
// }
// }
// }
// //
// if (iZone.high < signal.entry && iZone.low < signal.entry)
// {
// //
// }
// }
// }
// //
// if (canUseTrend)
// {
// //
// // Check Ask and Bid Price ...
// //
// XOHCL fHighBar = signal.trend.GetFirstSwingHighBar();
// XOHCL sHighBar = signal.trend.GetSecondSwingHighBar();
// //
// XOHCL fLowBar = signal.trend.GetFirstSwingLowBar();
// XOHCL sLowBar = signal.trend.GetSecondSwingLowBar();
// //
// double twoPoint = onePointValue * 2;
// double fiftyPoint = onePointValue * 15;
// //
// // add resistance ...
// bool canAdd =
// isLong &&
// entryPrice < (sHighBar.high - fiftyPoint);
// if (canAdd)
// {
// //
// rSignal.Clean();
// //
// rEntry = sHighBar.high - fiftyPoint;
// rType = POSITION_TYPE_BUY;
// rMode = X_ORDER_MODE_STOP;
// rVolume = signal.volume * 2;
// //
// isSignalPrepared = rSignal.Prepare(
// signal.symbol,
// signal.provider,
// signal.period,
// rType,
// rMode,
// rEntry,
// rVolume,
// rSL,
// rTP //
// );
// if (isSignalPrepared)
// {
// //
// AddRef(
// rSignal,
// signal.supports //
// );
// //
// rSignal.Clean();
// //
// rSL = 0;
// rTP = 0;
// rEntry = 0;
// isSignalPrepared = false;
// }
// //
// rEntry = sHighBar.high - fiftyPoint;
// rType = POSITION_TYPE_SELL;
// rMode = X_ORDER_MODE_LIMIT;
// rVolume = signal.volume * 3;
// //
// isSignalPrepared = rSignal.Prepare(
// signal.symbol,
// signal.provider,
// signal.period,
// rType,
// rMode,
// rEntry,
// rVolume,
// rSL,
// rTP //
// );
// if (isSignalPrepared)
// {
// //
// AddRef(
// rSignal,
// signal.supports //
// );
// //
// rSignal.Clean();
// //
// rSL = 0;
// rTP = 0;
// rEntry = 0;
// isSignalPrepared = false;
// }
// }
// //
// canAdd =
// isLong &&
// entryPrice > (sLowBar.low + fiftyPoint);
// if (canAdd)
// {
// //
// rSignal.Clean();
// //
// rEntry = (sLowBar.low + fiftyPoint);
// rType = POSITION_TYPE_SELL;
// rMode = X_ORDER_MODE_STOP;
// rVolume = signal.volume * 2;
// //
// isSignalPrepared = rSignal.Prepare(
// signal.symbol,
// signal.provider,
// signal.period,
// rType,
// rMode,
// rEntry,
// rVolume,
// rSL,
// rTP //
// );
// if (isSignalPrepared)
// {
// //
// AddRef(
// rSignal,
// signal.supports //
// );
// //
// rSignal.Clean();
// //
// rSL = 0;
// rTP = 0;
// rEntry = 0;
// isSignalPrepared = false;
// }
// //
// rEntry = (sLowBar.low - fiftyPoint);
// rType = POSITION_TYPE_BUY;
// rMode = X_ORDER_MODE_LIMIT;
// rVolume = signal.volume * 3;
// //
// isSignalPrepared = rSignal.Prepare(
// signal.symbol,
// signal.provider,
// signal.period,
// rType,
// rMode,
// rEntry,
// rVolume,
// rSL,
// rTP //
// );
// if (isSignalPrepared)
// {
// //
// AddRef(
// rSignal,
// signal.supports //
// );
// //
// rSignal.Clean();
// //
// rSL = 0;
// rTP = 0;
// rEntry = 0;
// isSignalPrepared = false;
// }
// }
// //
// // add support ...
// canAdd =
// !isLong &&
// entryPrice > (sLowBar.low + fiftyPoint);
// if (canAdd)
// {
// //
// rSignal.Clean();
// //
// rEntry = sLowBar.low + fiftyPoint;
// rType = POSITION_TYPE_SELL;
// rMode = X_ORDER_MODE_STOP;
// rVolume = signal.volume * 2;
// //
// isSignalPrepared = rSignal.Prepare(
// signal.symbol,
// signal.provider,
// signal.period,
// rType,
// rMode,
// rEntry,
// rVolume,
// rSL,
// rTP //
// );
// if (isSignalPrepared)
// {
// //
// AddRef(
// rSignal,
// signal.supports //
// );
// //
// rSignal.Clean();
// //
// rSL = 0;
// rTP = 0;
// rEntry = 0;
// isSignalPrepared = false;
// }
// //
// rEntry = sLowBar.low + fiftyPoint;
// rType = POSITION_TYPE_BUY;
// rMode = X_ORDER_MODE_LIMIT;
// rVolume = signal.volume * 3;
// //
// isSignalPrepared = rSignal.Prepare(
// signal.symbol,
// signal.provider,
// signal.period,
// rType,
// rMode,
// rEntry,
// rVolume,
// rSL,
// rTP //
// );
// if (isSignalPrepared)
// {
// //
// AddRef(
// rSignal,
// signal.supports //
// );
// //
// rSignal.Clean();
// //
// rSL = 0;
// rTP = 0;
// rEntry = 0;
// isSignalPrepared = false;
// }
// }
// //
// canAdd =
// !isLong &&
// entryPrice < (sHighBar.high - fiftyPoint);
// if (canAdd)
// {
// //
// rSignal.Clean();
// //
// rEntry = (sHighBar.high - fiftyPoint);
// rType = POSITION_TYPE_BUY;
// rMode = X_ORDER_MODE_STOP;
// rVolume = signal.volume * 2;
// //
// isSignalPrepared = rSignal.Prepare(
// signal.symbol,
// signal.provider,
// signal.period,
// rType,
// rMode,
// rEntry,
// rVolume,
// rSL,
// rTP //
// );
// if (isSignalPrepared)
// {
// //
// AddRef(
// rSignal,
// signal.supports //
// );
// //
// rSignal.Clean();
// //
// rSL = 0;
// rTP = 0;
// rEntry = 0;
// isSignalPrepared = false;
// }
// //
// rEntry = (sHighBar.high - fiftyPoint);
// rType = POSITION_TYPE_SELL;
// rMode = X_ORDER_MODE_LIMIT;
// rVolume = signal.volume * 3;
// //
// isSignalPrepared = rSignal.Prepare(
// signal.symbol,
// signal.provider,
// signal.period,
// rType,
// rMode,
// rEntry,
// rVolume,
// rSL,
// rTP //
// );
// if (isSignalPrepared)
// {
// //
// AddRef(
// rSignal,
// signal.supports //
// );
// //
// rSignal.Clean();
// //
// rSL = 0;
// rTP = 0;
// rEntry = 0;
// isSignalPrepared = false;
// }
// }
// }
///////////////////////////////////////////////////////////////
//
// Directional ...
rEntry = signal.entry;
rType = POSITION_TYPE_SELL;
rMode = X_ORDER_MODE_LIMIT;
rVolume = signal.volume * directionalVolumeMultiplier;
//
isSignalPrepared = rSignal.Prepare(
signal.symbol,
XEQMSupportToken,
signal.period,
rType,
rMode,
rEntry,
rVolume,
rSL,
rTP //
);
if (isSignalPrepared)
{
//
AddRef(
rSignal,
signal.supports //
);
//
rSignal.Clean();
//
rSL = 0;
rTP = 0;
rEntry = 0;
isSignalPrepared = false;
}
//
// Directional ...
rEntry = signal.entry;
rType = POSITION_TYPE_SELL;
rMode = X_ORDER_MODE_STOP;
rVolume = signal.volume * directionalVolumeMultiplier;
//
isSignalPrepared = rSignal.Prepare(
signal.symbol,
XEQMSupportToken,
signal.period,
rType,
rMode,
rEntry,
rVolume,
rSL,
rTP //
);
if (isSignalPrepared)
{
//
AddRef(
rSignal,
signal.supports //
);
//
rSignal.Clean();
//
rSL = 0;
rTP = 0;
rEntry = 0;
isSignalPrepared = false;
}