mirror of
https://github.com/rithsila/MT5-EA-Sniper-Strategy.git
synced 2026-08-18 21:28:13 +00:00
96 lines
2.9 KiB
Plaintext
96 lines
2.9 KiB
Plaintext
/*
|
|
SignalBase.mqh
|
|
|
|
Copyright 2013-2020, Orchard Forex
|
|
https://www.orchardforex.com
|
|
|
|
*/
|
|
|
|
#include "CommonBase.mqh"
|
|
//#include "IndicatorBase.mqh"
|
|
|
|
//// New
|
|
//// This is to maintain compatibility and allow sub classes to still
|
|
//// use mEntrySignal= or mExitSignal=
|
|
//// mEntrySignal and mExitSignal are effectively deprecated now
|
|
#define mEntrySignal mSignalValues[OFX_ENTRY_SIGNAL] // Deprecated
|
|
#define mExitSignal mSignalValues[OFX_EXIT_SIGNAL] // Deprecated
|
|
|
|
|
|
//// New
|
|
enum ENUM_OFX_SIGNAL_TYPE
|
|
{
|
|
OFX_ENTRY_SIGNAL,
|
|
OFX_EXIT_SIGNAL
|
|
};
|
|
|
|
enum ENUM_OFX_SIGNAL_DIRECTION
|
|
{
|
|
OFX_SIGNAL_NONE = 0,
|
|
OFX_SIGNAL_BUY = 1,
|
|
OFX_SIGNAL_SELL = 2,
|
|
OFX_SIGNAL_BOTH = 3,
|
|
OFX_SIGNAL_ALL = 4
|
|
};
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
class CSignalBase : public CCommonBase
|
|
{
|
|
|
|
private:
|
|
|
|
protected: // member variables
|
|
|
|
//// Replaced
|
|
ENUM_OFX_SIGNAL_DIRECTION mSignalValues[2];
|
|
double mMaxRiskPerTrade;
|
|
////ENUM_OFX_SIGNAL_DIRECTION mEntrySignal;
|
|
////ENUM_OFX_SIGNAL_DIRECTION mExitSignal;
|
|
|
|
public: // constructors
|
|
|
|
CSignalBase() : CCommonBase()
|
|
{ Init(); }
|
|
CSignalBase(string symbol, ENUM_TIMEFRAMES timeframe) : CCommonBase(symbol, timeframe)
|
|
{ Init(); }
|
|
~CSignalBase() { }
|
|
|
|
int Init();
|
|
|
|
public:
|
|
|
|
virtual void UpdateSignal() { return; }
|
|
//// Changed - maintain backward compatibility
|
|
virtual ENUM_OFX_SIGNAL_DIRECTION EntrySignal() { return(mSignalValues[OFX_ENTRY_SIGNAL]); }
|
|
virtual ENUM_OFX_SIGNAL_DIRECTION ExitSignal() { return(mSignalValues[OFX_EXIT_SIGNAL]); }
|
|
//// New, and shows my lack of planning
|
|
virtual void SetSignal(ENUM_OFX_SIGNAL_TYPE type,
|
|
ENUM_OFX_SIGNAL_DIRECTION value)
|
|
{ mSignalValues[type] = value; }
|
|
virtual void SetMaxRiskPerTrade(double maxRiskPerTrade) { mMaxRiskPerTrade = maxRiskPerTrade;}
|
|
|
|
virtual ENUM_OFX_SIGNAL_DIRECTION GetSignal(ENUM_OFX_SIGNAL_TYPE type)
|
|
{ return(mSignalValues[type]); }
|
|
|
|
};
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
int CSignalBase::Init()
|
|
{
|
|
|
|
if(InitResult()!=INIT_SUCCEEDED)
|
|
return(InitResult());
|
|
|
|
//// Replaced
|
|
ArrayInitialize(mSignalValues, OFX_SIGNAL_NONE);
|
|
////mEntrySignal = OFX_SIGNAL_NONE;
|
|
////mExitSignal = OFX_SIGNAL_NONE;
|
|
|
|
return(INIT_SUCCEEDED);
|
|
|
|
}
|