diff --git a/MQLTestWorkspace/BKPS/Templates/x-121.temp.signals.mq5 b/MQLTestWorkspace/BKPS/Templates/x-121.temp.signals.mq5 new file mode 100644 index 0000000..7dffccc --- /dev/null +++ b/MQLTestWorkspace/BKPS/Templates/x-121.temp.signals.mq5 @@ -0,0 +1,205 @@ +/////////////////////////////////////////////////////// +// +// SaherElm IT Center MQL5 Seriallize Library +// --------------------------------------- +// Name: XSignal +// Description: provides Template Signalling ... +// +// +// Maintainer: +// ------------ +// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com) +// +////////////////////////////////////////////////////// +// +// Global Properties ... +#property library +#property copyright "Copyright 2023, SaherElm IT Center" +#property link "https://www.saherelm.ir" +#property version "1.00" +#property strict + +// +#include "../Libraries/x-saherelm.x121.support.lib.mq5" + +// +bool GetLongSignal( + X121MarketConditions &conditions, // Market Conditions, Result + XSCX121Provider *analyzer // Market Analyzer +) +{ + // + bool result = false; + + // + double entry = GetEntry( + conditions.symbol, + POSITION_TYPE_BUY); + + // + result = + // + false + // + ; + + // + if (result) + { + // + conditions.hasSignal = true; + + // + Add( + "XTMP", + conditions.signal.providers); + + // + conditions.signal.type = POSITION_TYPE_BUY; + conditions.signal.mode = X_ORDER_MODE_MARKET; + + // + conditions.signal.symbol = conditions.symbol; + conditions.signal.symbol = conditions.symbol; + + // + conditions.signal.r2r = 1; + conditions.signal.volume = 0.01; + conditions.signal.ignoreTP = false; + conditions.signal.ignoreSL = false; + conditions.signal.riskAmount = 0.01; + conditions.signal.calculateTP = false; + conditions.signal.useRiskAmountAsVolume = false; + conditions.signal.useSupportAndResistance = false; + + // + Clean( + conditions.signal.supports); + + // + double tp = 0; + double sl = 0; + + // + // TODO: + // Calculate TP and SL ... + + // + conditions.signal.tp = tp; + conditions.signal.sl = sl; + conditions.signal.entry = entry; + } + + // + return result; +} + +// +bool GetShortSignal( + X121MarketConditions &conditions, // Market Conditions, Result + XSCX121Provider *analyzer // Market Analyzer +) +{ + // + bool result = false; + + // + double entry = GetEntry( + conditions.symbol, + POSITION_TYPE_SELL); + + // + result = + // + false + // + ; + + // + if (result) + { + // + conditions.hasSignal = true; + + // + Add( + "XTMP", + conditions.signal.providers); + + // + conditions.signal.type = POSITION_TYPE_BUY; + conditions.signal.mode = X_ORDER_MODE_MARKET; + + // + conditions.signal.symbol = conditions.symbol; + conditions.signal.symbol = conditions.symbol; + + // + conditions.signal.r2r = 1; + conditions.signal.volume = 0.01; + conditions.signal.ignoreTP = false; + conditions.signal.ignoreSL = false; + conditions.signal.riskAmount = 0.01; + conditions.signal.calculateTP = false; + conditions.signal.useRiskAmountAsVolume = false; + conditions.signal.useSupportAndResistance = false; + + // + Clean( + conditions.signal.supports); + + // + double tp = 0; + double sl = 0; + + // + // TODO: + // Calculate TP and SL ... + + // + conditions.signal.tp = tp; + conditions.signal.sl = sl; + conditions.signal.entry = entry; + } + + // + return result; +} + +// +bool ProcessSignal( + X121MarketConditions &conditions, // Market Conditions, Result + XSCX121Provider *analyzer // Market Analyzer +) +{ + // + bool result = false; + + // + X121MarketConditions mConditions = analyzer.GetMarketConditions(0); + + // + bool hasLong = GetLongSignal( + conditions, + analyzer); + if (hasLong) + { + // + conditions = mConditions; + return true; + } + + // + bool hasShort = GetShortSignal( + mConditions, + analyzer); + if (hasShort) + { + // + conditions = mConditions; + return true; + } + + // + return result; +} \ No newline at end of file