![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
La solución propuesta no ha dado nada más hasta ahora. Por lo tanto, no podría sugerirlo mejor.
Si ahora se pone la solución delante de la CCI, se sincroniza.
#include <Trade\Trade.mqh>
¿Me das un pequeño ejemplo? Cuando se conectan las clases - la suya y la de SB:
#include <Trade\Trade.mqh>
Entrando en el tema)
Tomado de aquí
Entrando en el tema)
Tomado de aquí
Acabo de cambiar las líneas...
¿Puedo poner un pequeño ejemplo? Al enchufar las clases - las tuyas y las de SB:
#include <Trade\Trade.mqh>
Me estoy metiendo en el tema).
Sí, me olvidé de ese matiz. Sin embargo, esta restricción ya no existe allí...
Si reordena las inlusiones, no jurará, por supuesto. Pero el efecto será nulo: la SB no se sincronizará.
Por desgracia, no veo una solución bonita. Hasta ahora
// Это сделает СБ синхронизированным и не потребует каких-либо изменений в экспертах.
#ifdef OrderSend
#undef OrderSend
#define CTrade CTradeBase
#include <Trade\Trade.mqh>
#undef CTrade
class CTrade : public CTradeBase
{
virtual bool OrderSend(const MqlTradeRequest &request,MqlTradeResult &result)
{
bool res;
string action="";
string fmt ="";
//--- action
if(m_async_mode)
res=::OrderSendAsync(request,result);
else
res=ORDERSEND::OrderSendSync(request,result); // единственное отличие от стандарта
//--- check
if(res)
{
if(m_log_level>LOG_LEVEL_ERRORS)
PrintFormat(__FUNCTION__+": %s [%s]",FormatRequest(action,request),FormatRequestResult(fmt,request,result));
}
else
{
if(m_log_level>LOG_LEVEL_NO)
PrintFormat(__FUNCTION__+": %s [%s]",FormatRequest(action,request),FormatRequestResult(fmt,request,result));
}
//--- return the result
return(res);
}
};
// Эта строчка позволяет сделать все OrderSend корректными.
#define OrderSend ORDERSEND::OrderSendSync
#else
#include <Trade\Trade.mqh>
#endif
Culpa mía, por exceso de confianza, no lo comprobé.
Sí, lo había olvidado. Sin embargo, esta restricción ya no existe allí...
Si reordena las inlusiones, por supuesto, no jurará. Pero el efecto será nulo: la SB no se sincronizará.
Por desgracia, no veo una solución bonita. Hasta ahora
// Это сделает СБ синхронизированным и не потребует каких-либо изменений в экспертах.
...
Bueno, es decir, para conectar su clase, y Trade\Trade.mqh ya se tire hacia arriba.
¿Y si se requiere heredar de Trade\Trade.mqh ? ¿Cómo?
Bueno, es decir, para conectar su clase, y Trade\Trade.mqh se sacará.
La herencia funcionará como antes. Pero será mejor que aclare su pregunta.
Es decir, hacer de CTrade una clase base en la primera línea de su código:
¿Cómo debería ser en este caso? En lugar de #include <Trade\Trade.mqh>, ¿debe insertar el código sugerido?
Hereda este código de CTrade.
Es decir, hacer de CTrade una clase base en la primera línea de su código:
En consecuencia, ya no debe conectar Trade\Trade.mqh a su programa, sino un inluder, por ejemplo #include <aTradeSync.mqh> que contiene su clase y #include <Trade\Trade.mqh> escrito allí al principio.
Yo no lo haría de esta manera, ya que requeriría cambiar los EAs previamente escritos. Y el OrderSend puro no se sincronizará, sólo el SB-OrderSend. No todo el mundo utiliza sólo el SB. Algunas personas incluso utilizan MQL5 puro.
Por lo tanto, la siguiente solución parece óptima por ahora. Todos los EAs funcionarán sin cambios.
#include <TradeSync.mqh> // Если подключен OrderSendSync.mqh - СБ станет синхронизированной, иначе - стандартной.
No lo haría de esta manera, ya que requeriría cambiar los EAs previamente escritos. Y el OrderSend puro no se sincronizará, sólo el SB-OrderSend. No todo el mundo utiliza sólo el SB. Algunas personas incluso utilizan MQL5 puro.
Por lo tanto, la siguiente solución parece óptima por ahora. Todos los EAs funcionarán sin cambios.
#include <TradeSync.mqh> // Если подключен OrderSendSync.mqh - СБ станет синхронизированной, иначе - стандартной.