MQL5_Wizard_MACD_Parabolic_SAR

Author: Copyright © 2017, Vladimir Karputov
0 Views
0 Downloads
0 Favorites
MQL5_Wizard_MACD_Parabolic_SAR
ÿþ//+------------------------------------------------------------------+

//|                               MQL5 Wizard MACD Parabolic SAR.mq5 |

//|                              Copyright © 2017, Vladimir Karputov |

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

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

#property copyright "Copyright © 2017, Vladimir Karputov"

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

#property version   "1.00"

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

//| Include                                                          |

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

#include <Expert\Expert.mqh>

//--- available signals

#include <Expert\Signal\SignalMACD.mqh>

#include <Expert\Signal\SignalSAR.mqh>

//--- available trailing

#include <Expert\Trailing\TrailingNone.mqh>

//--- available money management

#include <Expert\Money\MoneyFixedLot.mqh>

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

//| Inputs                                                           |

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

//--- inputs for expert

input string             Expert_Title            ="MQL5 Wizard MACD"; // Document name

ulong                    Expert_MagicNumber      =756;                // 

bool                     Expert_EveryTick        =false;              // 

//--- inputs for main signal

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

input int                Signal_ThresholdClose   =100;                // 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        =115.0;              // Take Profit level (in points)

input int                Signal_Expiration       =5;                  // 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      =0.9;                // MACD(12,24,9,PRICE_CLOSE) Weight [0...1.0]

input double             Signal_SAR_Step         =0.02;               // Parabolic SAR(0.02,0.2) Speed increment

input double             Signal_SAR_Maximum      =0.2;                // Parabolic SAR(0.02,0.2) Maximum rate

input double             Signal_SAR_Weight       =0.1;                // Parabolic SAR(0.02,0.2) Weight [0...1.0]

//--- inputs for money

input double             Money_FixLot_Percent    =10.0;               // Percent

input double             Money_FixLot_Lots       =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);

//--- Creating filter CSignalSAR

   CSignalSAR *filter1=new CSignalSAR;

   if(filter1==NULL)

     {

      //--- failed

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

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

   signal.AddFilter(filter1);

//--- Set filter parameters

   filter1.Step(Signal_SAR_Step);

   filter1.Maximum(Signal_SAR_Maximum);

   filter1.Weight(Signal_SAR_Weight);

//--- Creation of trailing object

   CTrailingNone *trailing=new CTrailingNone;

   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

//--- 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 ---