The library contains basic public methods to manage grids:
public:
GridManager(ENUM_GRID_DIRECTION direction, double grid_initial_lot_size, int grid_gap_points, double grid_profit_percent);
~GridManager() {};
void SetGridMagicNumber(ulong magic);
void SetGridMaxDD(double max_dd_percent);
void SetGridMultiplier(double lot_multiplier);
void Start(void);
void Update(void);
void CloseGrid();
double GridPnL();
int CountPositions();
In above code:
- MaxDD stands for "maximum allowed drawdown". This value is disabled by default but using the Set method will activate it. This is a value in %balance.
- Start method starts a new grid if it is not already running.
- Update checks for new entries and possible exits.
This is a sample code of EA operating based on GridManager Object:
#include <GridManager.mqh>
GridManager *buy_grid;
int OnInit()
{
buy_grid = new GridManager(GRID_BUY, 0.01, 100, 1);
buy_grid.SetGridMagicNumber(100);
buy_grid.SetGridMultiplier(1.5);
buy_grid.SetGridMaxDD(5);
return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason)
{
delete buy_grid;
}
void OnTick(void)
{
bool buy_condition=true;
if(buy_condition)
buy_grid.Start();
buy_grid.Update();
}