Idea by: Vladimir Pastushak.
MQL5 code by: Vladimir Karputov.
The EA trades on indicator Moving Average, all the preparatory and trading functions having been implemented as the CMoving trading class in a separate file named Moving.mqh.
Inputs
- magic number - the unique EA identifier;
- Lots - position volume (the position volume above zero or risk size above zero may be specified);
- Risk - risk in percents of free margin per trade (the position volume above zero or the risk size above zero may be specified);
- MA: period - indicator Moving Average: Timeframe;
- MA: averaging period - indicator Moving Average: Averaging period;
- MA: horizontal shift - indicator Moving Average: Horizontal shift;
- MA: smoothing type - indicator Moving Average: Averaging method;
- MA: type of price - indicator Moving Average: Type of prices, on which the indicator is calculated;
- Take Profit - Take Profit (for the case where one position is open);
- Lot multiplier for a series of Positions - increasing the volume of a position for a series of positions;
- Distance from Moving Average - distance from the Moving Average indicator;
- Additive in the presence of the general profit - adding to the indent, if there is general profit.
The EA uses the swing principle, there being a possibility to increase the number of lots; a simple strategy is used for its operation:
- If the price is above the Moving Average indicator at a pre-set Distance from Moving Average, we will open a BUY position;
- If the price moves down from the Moving Average indicator at a pre-set Distance from Moving Average, we will open a SELL position with the same lot;
- If the price has moved up from the BUY position having the highest price at a pre-set Distance from Moving Average, we will open the next BUY position;
- If the price has moved down from the BUY position having the lowest price at a pre-set Distance from Moving Average, we will open the next SELL position;
Class CMoving
| Setting parameters | |
Initialization | Primary initialization - the following parameters are set:
|
GetFlag | It returns the state of the initialization flag. It is used as an auxillary function when calling from the basic EA for checking the status of the internal m_init variable of class CMoving. |
LotsOrRisk | Defining the type of position lots calculations: Either manually (the lots parameter is above zero) or in the percents of free margin per trade (the risk parameter is above zero). |
CreateMA | Creating the Moving Average indicator. |
TakeProfit | Defining the Take Profit parameter. |
Multiplier | Defining the lot increasing parameter. |
DistanceMA | Defining the indent from the Moving Average indicator. |
ProfitPlus | Defining the additional indent at general profit. |
| Main function | |
Processing | Main function, in which all calculations are performed. |
| Class functions with the protected access specifier | |
RefreshRates | Updating quotes for the symbol. |
CheckVolumeValue | Checking for correctness the position volume entered (the check is used when defining the position volume manually). |
IsFillingTypeAllowed | Checking the order filling mode. |
iMAGet | Getting the values of the Moving Average indicator on the bar having the index of index. |
CalculateAllPositions | Getting the information on positions per call:
|
Prices | Getting the reference prices for BUY and SELL positions, considering the pre-set Distance from Moving Average. |
LotCheck | Checking and normalizing the position volume (it is used when defining the position size manually). |
OpenBuy | Opening a BUY position. |
OpenSell | Opening a SELL position. |
PrintResult | Printing out the results of a trade operation for opening a position. |
SetTakeProfit | Setting the Take Profit level for positions or removing all the Take Profit and Stop Loss levels (where the delete_take_profit parameter is equal to "true"). |
CompareDoubles | Comparing two real numbers for being equal. |
AwerageTakeProfit | Calculating and setting the single Take Profit level for a position of a certain type pos_type. |
GBPUSD, H1, "Every tick based on real ticks."
