TrailingKVN EA Master MQL5

Author: Copyright © 2019, Vladimir Karputov
2 Views
0 Downloads
0 Favorites
TrailingKVN EA Master MQL5
ÿþ//+------------------------------------------------------------------+

//|                                   TrailingKVN EA Master MQL5.mq5 |

//|                              Copyright © 2019, Vladimir Karputov |

//|                                           http://wmua.ru/slesar/ |

//+------------------------------------------------------------------+

#property copyright "Copyright © 2019, Vladimir Karputov"

#property link      "http://wmua.ru/slesar/"

#property version   "1.00"

//+------------------------------------------------------------------+

//| Include                                                          |

//+------------------------------------------------------------------+

#include <Expert\Expert.mqh>

//--- available signals

#include <Expert\Signal\SignalMACD.mqh>

//--- available trailing

#include <Expert\Trailing\TrailingKVN.mqh>

//--- available money management

#include <Expert\Money\MoneyFixedLot.mqh>

//+------------------------------------------------------------------+

//| Inputs                                                           |

//+------------------------------------------------------------------+

//--- inputs for expert

input string             Expert_Title            ="1";         // Document name

ulong                    Expert_MagicNumber      =2595;        //

bool                     Expert_EveryTick        =false;       //

//--- inputs for main signal

input int                Signal_ThresholdOpen    =10;          // Signal threshold value to open [0...100]

input int                Signal_ThresholdClose   =10;          // Signal threshold value to close [0...100]

input double             Signal_PriceLevel       =0.0;         // Price level to execute a deal

input double             Signal_StopLevel        =50.0;        // Stop Loss level (in points)

input double             Signal_TakeLevel        =50.0;        // Take Profit level (in points)

input int                Signal_Expiration       =4;           // Expiration of pending orders (in bars)

input int                Signal_MACD_PeriodFast  =12;          // MACD(12,24,9,PRICE_CLOSE) Period of fast EMA

input int                Signal_MACD_PeriodSlow  =24;          // MACD(12,24,9,PRICE_CLOSE) Period of slow EMA

input int                Signal_MACD_PeriodSignal=9;           // MACD(12,24,9,PRICE_CLOSE) Period of averaging of difference

input ENUM_APPLIED_PRICE Signal_MACD_Applied     =PRICE_CLOSE; // MACD(12,24,9,PRICE_CLOSE) Prices series

input double             Signal_MACD_Weight      =1.0;         // MACD(12,24,9,PRICE_CLOSE) Weight [0...1.0]

//--- inputs for trailing

input ushort             Trailing_MA_TrailingStop=25;          // Trailing Stop

input ushort             Trailing_MA_TrailingStep=5;           // Trailing Step

//--- inputs for money

input double             Money_FixLot_Percent    =10.0;        // Percent

input double             Money_FixLot_Lots       =0.1;         // Fixed volume

//+------------------------------------------------------------------+

//| Global expert object                                             |

//+------------------------------------------------------------------+

CExpert ExtExpert;

//+------------------------------------------------------------------+

//| Initialization function of the expert                            |

//+------------------------------------------------------------------+

int OnInit()

  {

//--- Initializing expert

   if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))

     {

      //--- failed

      printf(__FUNCTION__+": error initializing expert");

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//--- Creating signal

   CExpertSignal *signal=new CExpertSignal;

   if(signal==NULL)

     {

      //--- failed

      printf(__FUNCTION__+": error creating signal");

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//---

   ExtExpert.InitSignal(signal);

   signal.ThresholdOpen(Signal_ThresholdOpen);

   signal.ThresholdClose(Signal_ThresholdClose);

   signal.PriceLevel(Signal_PriceLevel);

   signal.StopLevel(Signal_StopLevel);

   signal.TakeLevel(Signal_TakeLevel);

   signal.Expiration(Signal_Expiration);

//--- Creating filter CSignalMACD

   CSignalMACD *filter0=new CSignalMACD;

   if(filter0==NULL)

     {

      //--- failed

      printf(__FUNCTION__+": error creating filter0");

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

   signal.AddFilter(filter0);

//--- Set filter parameters

   filter0.PeriodFast(Signal_MACD_PeriodFast);

   filter0.PeriodSlow(Signal_MACD_PeriodSlow);

   filter0.PeriodSignal(Signal_MACD_PeriodSignal);

   filter0.Applied(Signal_MACD_Applied);

   filter0.Weight(Signal_MACD_Weight);

//--- Creation of trailing object

   CTrailingKVN *trailing=new CTrailingKVN;

   if(trailing==NULL)

     {

      //--- failed

      printf(__FUNCTION__+": error creating trailing");

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//--- Add trailing to expert (will be deleted automatically))

   if(!ExtExpert.InitTrailing(trailing))

     {

      //--- failed

      printf(__FUNCTION__+": error initializing trailing");

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//--- Set trailing parameters

   trailing.TrailingStop(Trailing_MA_TrailingStop);

   trailing.TrailingStep(Trailing_MA_TrailingStep);

//--- Creation of money object

   CMoneyFixedLot *money=new CMoneyFixedLot;

   if(money==NULL)

     {

      //--- failed

      printf(__FUNCTION__+": error creating money");

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//--- Add money to expert (will be deleted automatically))

   if(!ExtExpert.InitMoney(money))

     {

      //--- failed

      printf(__FUNCTION__+": error initializing money");

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//--- Set money parameters

   money.Percent(Money_FixLot_Percent);

   money.Lots(Money_FixLot_Lots);

//--- Check all trading objects parameters

   if(!ExtExpert.ValidationSettings())

     {

      //--- failed

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//--- Tuning of all necessary indicators

   if(!ExtExpert.InitIndicators())

     {

      //--- failed

      printf(__FUNCTION__+": error initializing indicators");

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//--- ok

   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| Deinitialization function of the expert                          |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

   ExtExpert.Deinit();

  }

//+------------------------------------------------------------------+

//| "Tick" event handler function                                    |

//+------------------------------------------------------------------+

void OnTick()

  {

   ExtExpert.OnTick();

  }

//+------------------------------------------------------------------+

//| "Trade" event handler function                                   |

//+------------------------------------------------------------------+

void OnTrade()

  {

   ExtExpert.OnTrade();

  }

//+------------------------------------------------------------------+

//| "Timer" event handler function                                   |

//+------------------------------------------------------------------+

void OnTimer()

  {

   ExtExpert.OnTimer();

  }

//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---