last works on supporting ...
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user