MQL5 wizard has no OrderSend() but still opening a trade. How does it work

 

i have some experience in MQL4 and still learning MQL5 language. I understand most basic code conversion MQL4 to MQL5.

Recently i learn that there is a MQL5 Wizard to create an EA automatically. Tried to make it create a simple EA to open buy if RSI>80 and sell if RSI<20. It works but i have no idea how it open a new trade because it has no OrderOpen Ctrade or OrderSend() Trade Operation Types. It only shows ExtExpert.OnTick();. Currently i only know these 2 methods opening a new trade, still figuring out which one i'm going to explore. Ctrade seems more simple but i feel like it skips many important things but i'll see the difference later.

So the question is: How this code works by opening a BUY and SELL trade? You may also give me an article about it.

#include <Expert\Expert.mqh>
//--- available signals
#include <Expert\Signal\SignalRSI.mqh>
//--- available trailing
#include <Expert\Trailing\TrailingFixedPips.mqh>
//--- available money management
#include <Expert\Money\MoneyFixedLot.mqh>
//+------------------------------------------------------------------+
//| Inputs                                                           |
//+------------------------------------------------------------------+
//--- inputs for expert
input string             Expert_Title                  ="MQL5_WizardTest"; // Document name
ulong                    Expert_MagicNumber            =32435;             //
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_RSI_PeriodRSI          =8;                 // Relative Strength Index(8,...) Period of calculation
input ENUM_APPLIED_PRICE Signal_RSI_Applied            =PRICE_CLOSE;       // Relative Strength Index(8,...) Prices series
input double             Signal_RSI_Weight             =1.0;               // Relative Strength Index(8,...) Weight [0...1.0]
//--- inputs for trailing
input int                Trailing_FixedPips_StopLevel  =30;                // Stop Loss trailing level (in points)
input int                Trailing_FixedPips_ProfitLevel=50;                // Take Profit trailing level (in points)
//--- 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 CSignalRSI
   CSignalRSI *filter0=new CSignalRSI;
   if(filter0==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating filter0");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
   signal.AddFilter(filter0);
//--- Set filter parameters
   filter0.PeriodRSI(Signal_RSI_PeriodRSI);
   filter0.Applied(Signal_RSI_Applied);
   filter0.Weight(Signal_RSI_Weight);
//--- Creation of trailing object
   CTrailingFixedPips *trailing=new CTrailingFixedPips;
   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.StopLevel(Trailing_FixedPips_StopLevel);
   trailing.ProfitLevel(Trailing_FixedPips_ProfitLevel);
//--- 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();
  }
//+------------------------------------------------------------------+
Documentation on MQL5: Standard Library / Trade Classes / CTrade / OrderOpen
Documentation on MQL5: Standard Library / Trade Classes / CTrade / OrderOpen
  • www.mql5.com
OrderOpen(const string,ENUM_ORDER_TYPE,double,double,double,double,double,ENUM_ORDER_TYPE_TIME,datetime,const string) - CTrade - Trade Classes - Standard Library - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
Files:
 
Abdul Arief Bogie Ardianto:

i have some experience in MQL4 and still learning MQL5 language. I understand most basic code conversion MQL4 to MQL5.

Recently i learn that there is a MQL5 Wizard to create an EA automatically. Tried to make it create a simple EA to open buy if RSI>80 and sell if RSI<20. It works but i have no idea how it open a new trade because it has no OrderOpen Ctrade or OrderSend() Trade Operation Types. It only shows ExtExpert.OnTick();. Currently i only know these 2 methods opening a new trade, still figuring out which one i'm going to explore. Ctrade seems more simple but i feel like it skips many important things but i'll see the difference later.

So the question is: How this code works by opening a BUY and SELL trade? You may also give me an article about it.

You can see and study it in the Expert.mqh file

 
Roberto Jacobs #:

You can see and study it in the Expert.mqh file

ah thanks found it. i also find this useful doc: CExpert

one more. is it faster using this CExpert or either Ctrade/OrderSend when we talk about excecution speed and resource spent?

Documentation on MQL5: Standard Library / Strategy Modules / Base classes for Expert Advisors / CExpert
Documentation on MQL5: Standard Library / Strategy Modules / Base classes for Expert Advisors / CExpert
  • www.mql5.com
CExpert - Base classes for Expert Advisors - Strategy Modules - Standard Library - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
 
Your topic has been moved to the section: Expert Advisors and Automated Trading
Please consider which section is most appropriate — https://www.mql5.com/en/forum/172166/page6#comment_49114893