Sending Orders - BEST and FAST way (OPINION)

 

Hi folks, 

From the last 3 years, for all my EAs I've been using "Ctrade" include structure to open, modify and close trade positions. I'm using it in Future markets, not forex!

#include <Trade/Trade.mqh>
CTrade Trade;

//--- Example

void BuyTrade()
  {
   double lot=1;
   double ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
   double tp=ask+100;
   double sl=ask-50;

   if(PositionsTotal()==0)
        {
         if(!Trade.Buy(lot,Symbol(),ask,sl,tp))
               Print(GetLastError());
        }
  }

Overall, It has been working, except last week that I had some issues, but it looks like it was on the broker side.  

That said, I would like to know your guys opinion, if it is worth continuing to use "Ctrade", or if it is worth using the direct functions of the documentation.

https://www.mql5.com/en/docs/constants/tradingconstants/enum_trade_request_actions

Documentation on MQL5: Constants, Enumerations and Structures / Trade Constants / Trade Operation Types
Documentation on MQL5: Constants, Enumerations and Structures / Trade Constants / Trade Operation Types
  • www.mql5.com
Trade Operation Types - Trade Constants - Constants, Enumerations and Structures - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
 
   double ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
   double tp=ask+100;
   double sl=ask-50;

You buy at the Ask and sell at the Bid. Pending Buy Stop orders become market orders when hit and open at the Ask.

  1. Your buy order's TP/SL (or Sell Stop's/Sell Limit's entry) are triggered when the Bid / OrderClosePrice reaches it. Using Ask±n, makes your SL shorter and your TP longer, by the spread. Don't you want the specified amount used in either direction?

  2. Your sell order's TP/SL (or Buy Stop's/Buy Limit's entry) will be triggered when the Ask / OrderClosePrice reaches it. To trigger close to a specific Bid price, add the average spread.
              MODE_SPREAD (Paul) - MQL4 programming forum - Page 3 #25

  3. The charts show Bid prices only. Turn on the Ask line to see how big the spread is (Tools → Options (control+O) → charts → Show ask line.)
    Most brokers with variable spreads widen considerably at end of day (5 PM ET) ± 30 minutes. My GBPJPY (OANDA) shows average spread = 26 points, but average maximum spread = 134 (your broker will be similar).

 
William Roeder:

You buy at the Ask and sell at the Bid. Pending Buy Stop orders become market orders when hit and open at the Ask.

  1. Your buy order's TP/SL (or Sell Stop's/Sell Limit's entry) are triggered when the Bid / OrderClosePrice reaches it. Using Ask±n, makes your SL shorter and your TP longer, by the spread. Don't you want the specified amount used in either direction?

  2. Your sell order's TP/SL (or Buy Stop's/Buy Limit's entry) will be triggered when the Ask / OrderClosePrice reaches it. To trigger close to a specific Bid price, add the average spread.
              MODE_SPREAD (Paul) - MQL4 programming forum - Page 3 #25

  3. The charts show Bid prices only. Turn on the Ask line to see how big the spread is (Tools → Options (control+O) → charts → Show ask line.)
    Most brokers with variable spreads widen considerably at end of day (5 PM ET) ± 30 minutes. My GBPJPY (OANDA) shows average spread = 26 points, but average maximum spread = 134 (your broker will be similar).


Thanks for the tips William, but in fact I'm trading at future markets. It's very very high liquity market. The spread keeps very low except some fractions of seconds sometimes.

My big doubt really is if the fact that I'm using "Ctrade" from Trade.mqh structure, instead of Trade Operations direct from the main mql5 code can make any kind of diference. I mean, is there any advantage?

Reason: