
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
La solution proposée n'a pas fait mouche jusqu'à présent. Par conséquent, je ne pourrais pas mieux vous le suggérer.
Si vous mettez la solution en face du SB maintenant, elle devient synchronisée.
#include <Trade\Trade.mqh>
Je peux avoir un petit exemple ? En reliant les classes - la vôtre et celle de SB :
#include <Trade\Trade.mqh>
Entrer dans le thème)
Tiré d'ici
Entrer dans le thème)
Tiré d'ici
J'ai juste échangé les lignes...
Je peux vous donner un petit exemple ? En branchant des cours - les vôtres et ceux de SB :
#include <Trade\Trade.mqh>
J'entre dans le sujet).
Oui, j'avais oublié cette nuance. Cependant, cette restriction n'y existe plus...
Si vous réorganisez les inludes, ça ne jurera pas, bien sûr. Mais l'effet sera nul - SB ne sera pas synchronisé.
Malheureusement, je ne vois pas de belle solution. Jusqu'à présent
// Это сделает СБ синхронизированным и не потребует каких-либо изменений в экспертах.
#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
C'est ma faute, je l'ai dit de manière trop confiante, je n'ai pas vérifié.
Oui, je l'avais oublié. Cependant, cette restriction n'y existe plus...
Si vous réorganisez les inludes, bien sûr, ça ne jurera pas. Mais l'effet sera nul - SB ne sera pas synchronisé.
Malheureusement, je ne vois pas de belle solution. Jusqu'ici, jusqu'à
// Это сделает СБ синхронизированным и не потребует каких-либо изменений в экспертах.
...
Eh bien, c'est-à-dire de brancher votre classe, et Trade\Trade.mqh s'affichera déjà.
Et s'il est nécessaire d'hériter de Trade\Trade.mqh ? Comment ?
Eh bien, c'est-à-dire, pour connecter votre classe, et Trade\Trade.mqh sera tiré vers le haut.
L'héritage fonctionnera comme avant. Mais vous feriez mieux de clarifier votre question.
C'est-à-dire, faites de CTrade une classe de base dans la première ligne de votre code :
Comment cela devrait-il être dans ce cas ? Au lieu de #include <Trade\Trade.mqh>, faut-il insérer le code suggéré ?
Héritez de ce code de CTrade.
C'est-à-dire, faites de CTrade une classe de base dans la première ligne de votre code :
En conséquence, vous ne devez plus connecter Trade\Trade.mqh à votre programme, mais plutôt un inludeur, par exemple #include <aTradeSync.mqh> qui contient votre classe et #include <Trade\Trade.mqh> écrit là au tout début.
Je ne le ferais pas de cette façon, car cela nécessiterait de modifier des EAs déjà écrites. Et le pur OrderSend ne sera pas synchronisé, seulement SB-OrderSend. Tout le monde n'utilise pas le SB uniquement. Certaines personnes utilisent même du MQL5 pur.
Par conséquent, la solution ci-dessous semble optimale pour le moment. Tous les EAs fonctionneront sans changement.
#include <TradeSync.mqh> // Если подключен OrderSendSync.mqh - СБ станет синхронизированной, иначе - стандартной.
Je ne le ferais pas de cette façon, car cela nécessiterait de changer les EAs précédemment écrites. Et le pur OrderSend ne sera pas synchronisé, seulement le SB-OrderSend. Tout le monde n'utilise pas le SB uniquement. Certaines personnes utilisent même du MQL5 pur.
Par conséquent, la solution ci-dessous semble optimale pour le moment. Tous les EAs fonctionneront sans changement.
#include <TradeSync.mqh> // Если подключен OrderSendSync.mqh - СБ станет синхронизированной, иначе - стандартной.