iStochastic iMFI Multicurrency

Author: Copyright © 2019, Vladimir Karputov
0 Views
0 Downloads
0 Favorites
iStochastic iMFI Multicurrency
ÿþ//+------------------------------------------------------------------+

//|                               iStochastic iMFI Multicurrency.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 "TradingEngine31.mqh"

#include <Arrays\ArrayObj.mqh>

CArrayObj      m_array_obj;                  // CArrayObj object

//--- input parameters

input string   Symbol_0                      = "EURUSD";    // Symbol 0:

input ushort   Symbol_0_InpStopLoss          = 15;          // Symbol 0: Stop Loss, in pips (1.00045-1.00055=1 pips)

input ushort   Symbol_0_InpTakeProfit        = 46;          // Symbol 0: Take Profit, in pips (1.00045-1.00055=1 pips)

input ushort   Symbol_0_InpTrailingFrequency = 10;          // Symbol 0: Trailing, in seconds (< "10" -> only on a new bar)

input ushort   Symbol_0_InpSignalsFrequency  = 9;           // Symbol 0: Search signals, in seconds (< "10" -> only on a new bar)

input ushort   Symbol_0_InpTrailingStop      = 25;          // Symbol 0: Trailing Stop (min distance from price to Stop Loss, in pips

input ushort   Symbol_0_InpTrailingStep      = 5;           // Symbol 0: Trailing Step, in pips (1.00045-1.00055=1 pips)

input ENUM_LOT_OR_RISK Symbol_0_InpLotOrRisk = risk;        // Symbol 0: Money management: Lot OR Risk

input double   Symbol_0_InpVolumeLotOrRisk   = 3.0;         // Symbol 0: The value for "Money management"

input ulong    Symbol_0_InpDeviation         = 10;          // Symbol 0: Deviation, in points (1.00045-1.00055=10 points)

//--- Stochastic

input int               Symbol_0_Inp_STO_Kperiod      = 5;           // Symbol 0: Stochastic: K-period (number of bars for calculations)

input int               Symbol_0_Inp_STO_Dperiod      = 3;           // Symbol 0: Stochastic: D-period (period of first smoothing)

input int               Symbol_0_Inp_STO_slowing      = 3;           // Symbol 0: Stochastic: final smoothing

input ENUM_MA_METHOD    Symbol_0_Inp_STO_ma_method    = MODE_SMA;    // Symbol 0: Stochastic: type of smoothing

input ENUM_STO_PRICE    Symbol_0_Inp_STO_price_field  = STO_LOWHIGH; // Symbol 0: Stochastic: stochastic calculation method

input double            Symbol_0_Inp_STO_Level_UP     = 80;          // Symbol 0: Stochastic Level UP

input double            Symbol_0_Inp_STO_Level_DOWN   = 20;          // Symbol 0: Stochastic Level DOWN

//--- MFI

input int                  Symbol_0_Inp_MFI_ma_period       = 14;          // Symbol 0: MFI: averaging period

input ENUM_APPLIED_VOLUME  Symbol_0_Inp_MFI_applied_volume  = VOLUME_TICK; // Symbol 0: MFI: volume type for calculation

input double               Symbol_0_Inp_MFI_Level_UP        = 80;          // Symbol 0: MFI Level UP

input double               Symbol_0_Inp_MFI_Level_DOWN      = 20;          // Symbol 0: MFI Level DOWN

//---

input bool     Symbol_0_InpOnlyOne           = false;       // Symbol 0: Only one positions

input bool     Symbol_0_InpReverse           = false;       // Symbol 0: Reverse

input bool     Symbol_0_InpCloseOpposite     = false;       // Symbol 0: Close opposite

input bool     Symbol_0_InpPrintLog          = false;       // Symbol 0: Print log

input ulong    Symbol_0_InpMagic             = 933325482;   // Symbol 0: Magic number

//---

input string   Symbol_1                      = "USDJPY";    // Symbol 1:

input ushort   Symbol_1_InpStopLoss          = 15;          // Symbol 1: Stop Loss, in pips (1.00045-1.00055=1 pips)

input ushort   Symbol_1_InpTakeProfit        = 46;          // Symbol 1: Take Profit, in pips (1.00045-1.00055=1 pips)

input ushort   Symbol_1_InpTrailingFrequency = 10;          // Symbol 1: Trailing, in seconds (< "10" -> only on a new bar)

input ushort   Symbol_1_InpSignalsFrequency  = 9;           // Symbol 1: Search signals, in seconds (< "10" -> only on a new bar)

input ushort   Symbol_1_InpTrailingStop      = 25;          // Symbol 1: Trailing Stop (min distance from price to Stop Loss, in pips

input ushort   Symbol_1_InpTrailingStep      = 5;           // Symbol 1: Trailing Step, in pips (1.00045-1.00055=1 pips)

input ENUM_LOT_OR_RISK Symbol_1_InpLotOrRisk = risk;        // Symbol 1: Money management: Lot OR Risk

input double   Symbol_1_InpVolumeLotOrRisk   = 3.0;         // Symbol 1: The value for "Money management"

input ulong    Symbol_1_InpDeviation         = 10;          // Symbol 1: Deviation, in points (1.00045-1.00055=10 points)

//--- Stochastic

input int               Symbol_1_Inp_STO_Kperiod      = 5;           // Symbol 1: Stochastic: K-period (number of bars for calculations)

input int               Symbol_1_Inp_STO_Dperiod      = 3;           // Symbol 1: Stochastic: D-period (period of first smoothing)

input int               Symbol_1_Inp_STO_slowing      = 3;           // Symbol 1: Stochastic: final smoothing

input ENUM_MA_METHOD    Symbol_1_Inp_STO_ma_method    = MODE_SMA;    // Symbol 1: Stochastic: type of smoothing

input ENUM_STO_PRICE    Symbol_1_Inp_STO_price_field  = STO_LOWHIGH; // Symbol 1: Stochastic: stochastic calculation method

input double            Symbol_1_Inp_STO_Level_UP     = 80;          // Symbol 1: Stochastic Level UP

input double            Symbol_1_Inp_STO_Level_DOWN   = 20;          // Symbol 1: Stochastic Level DOWN

//--- MFI

input int                  Symbol_1_Inp_MFI_ma_period       = 14;          // Symbol 1: MFI: averaging period

input ENUM_APPLIED_VOLUME  Symbol_1_Inp_MFI_applied_volume  = VOLUME_TICK; // Symbol 1: MFI: volume type for calculation

input double               Symbol_1_Inp_MFI_Level_UP        = 80;          // Symbol 1: MFI Level UP

input double               Symbol_1_Inp_MFI_Level_DOWN      = 20;          // Symbol 1: MFI Level DOWN

//---

input bool     Symbol_1_InpOnlyOne           = false;       // Symbol 1: Only one positions

input bool     Symbol_1_InpReverse           = false;       // Symbol 1: Reverse

input bool     Symbol_1_InpCloseOpposite     = false;       // Symbol 1: Close opposite

input bool     Symbol_1_InpPrintLog          = false;       // Symbol 1: Print log

input ulong    Symbol_1_InpMagic             = 933325482;   // Symbol 1: Magic number

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

//| Expert initialization function                                   |

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

int OnInit()

  {

//---

   CTradingEngine31 *multi_0=new CTradingEngine31;

   if(multi_0==NULL)

     {

      Print("Object CTradingEngine31 create error");

      return(INIT_FAILED);

     }

   m_array_obj.Add(multi_0);

   int init=multi_0.OnInit(Symbol_0,

                           Symbol_0_InpStopLoss,

                           Symbol_0_InpTakeProfit,

                           Symbol_0_InpTrailingFrequency,

                           Symbol_0_InpSignalsFrequency,

                           Symbol_0_InpTrailingStop,

                           Symbol_0_InpTrailingStep,

                           Symbol_0_InpLotOrRisk,

                           Symbol_0_InpVolumeLotOrRisk,

                           Symbol_0_InpDeviation,

                           Symbol_0_Inp_STO_Kperiod,

                           Symbol_0_Inp_STO_Dperiod,

                           Symbol_0_Inp_STO_slowing,

                           Symbol_0_Inp_STO_ma_method,

                           Symbol_0_Inp_STO_price_field,

                           Symbol_0_Inp_STO_Level_UP,

                           Symbol_0_Inp_STO_Level_DOWN,

                           Symbol_0_Inp_MFI_ma_period,

                           Symbol_0_Inp_MFI_applied_volume,

                           Symbol_0_Inp_MFI_Level_UP,

                           Symbol_0_Inp_MFI_Level_DOWN,

                           Symbol_0_InpOnlyOne,

                           Symbol_0_InpReverse,

                           Symbol_0_InpCloseOpposite,

                           Symbol_0_InpPrintLog,

                           Symbol_0_InpMagic

                          );

   if(init!=INIT_SUCCEEDED)

      return(init);

//---

   CTradingEngine31 *multi_1=new CTradingEngine31;

   if(multi_1==NULL)

     {

      Print("Object CTradingEngine31 create error");

      return(INIT_FAILED);

     }

   m_array_obj.Add(multi_1);

   init=multi_1.OnInit(Symbol_1,

                       Symbol_1_InpStopLoss,

                       Symbol_1_InpTakeProfit,

                       Symbol_1_InpTrailingFrequency,

                       Symbol_1_InpSignalsFrequency,

                       Symbol_1_InpTrailingStop,

                       Symbol_1_InpTrailingStep,

                       Symbol_1_InpLotOrRisk,

                       Symbol_1_InpVolumeLotOrRisk,

                       Symbol_1_InpDeviation,

                       Symbol_1_Inp_STO_Kperiod,

                       Symbol_1_Inp_STO_Dperiod,

                       Symbol_1_Inp_STO_slowing,

                       Symbol_1_Inp_STO_ma_method,

                       Symbol_1_Inp_STO_price_field,

                       Symbol_1_Inp_STO_Level_UP,

                       Symbol_1_Inp_STO_Level_DOWN,

                       Symbol_1_Inp_MFI_ma_period,

                       Symbol_1_Inp_MFI_applied_volume,

                       Symbol_1_Inp_MFI_Level_UP,

                       Symbol_1_Inp_MFI_Level_DOWN,

                       Symbol_1_InpOnlyOne,

                       Symbol_1_InpReverse,

                       Symbol_1_InpCloseOpposite,

                       Symbol_1_InpPrintLog,

                       Symbol_1_InpMagic

                      );

   if(init!=INIT_SUCCEEDED)

      return(init);

//---

   return(INIT_SUCCEEDED);

  }

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

//| Expert deinitialization function                                 |

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

void OnDeinit(const int reason)

  {

//---

   for(int i=0; i<m_array_obj.Total(); i++)

     {

      CTradingEngine31 *multi=m_array_obj.At(i);

      if(multi==NULL)

        {

         //--- Error reading from array

         Print("Object CMultiGrid create error");

         return;

        }

      multi.OnDeinit(reason);

     }

  }

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

//| Expert tick function                                             |

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

void OnTick()

  {

//---

   for(int i=0; i<m_array_obj.Total(); i++)

     {

      CTradingEngine31 *multi=m_array_obj.At(i);

      if(multi==NULL)

        {

         //--- Error reading from array

         Print("Object CMultiGrid create error");

         return;

        }

      multi.OnTick();

     }

  }

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

//| TradeTransaction function                                        |

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

void OnTradeTransaction(const MqlTradeTransaction &trans,

                        const MqlTradeRequest &request,

                        const MqlTradeResult &result)

  {

//---

   for(int i=0; i<m_array_obj.Total(); i++)

     {

      CTradingEngine31 *multi=m_array_obj.At(i);

      if(multi==NULL)

        {

         //--- Error reading from array

         Print("Object CMultiiMATrend create error");

         return;

        }

      multi.OnTradeTransaction(trans,request,result);

     }

  }

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

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