68 lines
1.8 KiB
MQL5
68 lines
1.8 KiB
MQL5
|
// TestStrategy.mqh
|
||
|
// A simple strategy for testing the EA framework. Generates frequent signals.
|
||
|
|
||
|
#property copyright "2025, Windsurf Engineering"
|
||
|
#property link "https://www.windsurf.ai"
|
||
|
|
||
|
#include "..\IStrategy.mqh"
|
||
|
|
||
|
class CTestStrategy : public IStrategy
|
||
|
{
|
||
|
private:
|
||
|
string m_symbol;
|
||
|
double m_last_tick;
|
||
|
|
||
|
public:
|
||
|
CTestStrategy(string symbol);
|
||
|
~CTestStrategy() {};
|
||
|
|
||
|
// --- IStrategy interface methods
|
||
|
virtual void Refresh();
|
||
|
virtual SignalType CheckSignal();
|
||
|
virtual string Name() { return "TestStrategy"; }
|
||
|
};
|
||
|
|
||
|
//+------------------------------------------------------------------+
|
||
|
//| Constructor |
|
||
|
//+------------------------------------------------------------------+
|
||
|
CTestStrategy::CTestStrategy(string symbol)
|
||
|
{
|
||
|
m_symbol = symbol;
|
||
|
m_last_tick = 0;
|
||
|
}
|
||
|
|
||
|
//+------------------------------------------------------------------+
|
||
|
//| Refresh |
|
||
|
//+------------------------------------------------------------------+
|
||
|
void CTestStrategy::Refresh()
|
||
|
{
|
||
|
// Nothing to refresh for this simple strategy
|
||
|
}
|
||
|
|
||
|
//+------------------------------------------------------------------+
|
||
|
//| CheckSignal |
|
||
|
//+------------------------------------------------------------------+
|
||
|
SignalType CTestStrategy::CheckSignal()
|
||
|
{
|
||
|
double current_bid = SymbolInfoDouble(m_symbol, SYMBOL_BID);
|
||
|
|
||
|
if(m_last_tick == 0)
|
||
|
{
|
||
|
m_last_tick = current_bid;
|
||
|
return SIGNAL_NONE;
|
||
|
}
|
||
|
|
||
|
SignalType signal = SIGNAL_NONE;
|
||
|
if(current_bid > m_last_tick)
|
||
|
{
|
||
|
signal = SIGNAL_BUY;
|
||
|
}
|
||
|
else if(current_bid < m_last_tick)
|
||
|
{
|
||
|
signal = SIGNAL_SELL;
|
||
|
}
|
||
|
|
||
|
m_last_tick = current_bid;
|
||
|
return signal;
|
||
|
}
|