Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Die vorgeschlagene Lösung hat bis jetzt nichts anderes getroffen. Deshalb kann ich es nicht besser empfehlen.
Wenn Sie die Lösung jetzt vor den SB setzen, wird sie synchronisiert.
#include <Trade\Trade.mqh>
Kann ich ein kleines Beispiel haben? Beim Verbinden von Klassen - Ihrer und der von SB:
#include <Trade\Trade.mqh>
Einstieg in das Thema)
Entnommen von hier
Einstieg in das Thema)
Entnommen von hier
Habe gerade die Leitungen getauscht...
Darf ich Ihnen ein kleines Beispiel geben? Beim Einstecken von Klassen - Ihre und SB:
#include <Trade\Trade.mqh>
Ich steige in das Thema ein.)
Ja, ich habe diese Nuance vergessen. Allerdings gibt es diese Einschränkung dort nicht mehr...
Wenn Sie die Einschübe neu anordnen, wird es natürlich nicht fluchen. Die Wirkung ist jedoch gleich Null - SB wird nicht synchronisiert.
Leider sehe ich keine schöne Lösung. Bislang
// Это сделает СБ синхронизированным и не потребует каких-либо изменений в экспертах.
#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
Mein Fehler, zu selbstbewusst ausgedrückt, ich habe nicht nachgesehen.
Ja, das habe ich vergessen. Allerdings gibt es diese Einschränkung dort nicht mehr...
Wenn Sie die Einlagen neu anordnen, wird es natürlich nicht fluchen. Die Wirkung ist jedoch gleich Null - SB wird nicht synchronisiert.
Leider sehe ich keine schöne Lösung. So weit, so gut
// Это сделает СБ синхронизированным и не потребует каких-либо изменений в экспертах.
...
Nun, d.h., Sie geben Ihre Klasse ein, und Trade\Trade.mqh wird bereits angezeigt.
Was, wenn es erforderlich ist, von Trade\Trade.mqh zu erben? Wie?
Nun, das heißt, um Ihre Klasse zu verbinden, und Trade\Trade.mqh wird aufgerufen werden.
Die Vererbung wird wie bisher funktionieren. Aber Sie sollten Ihre Frage besser präzisieren.
D.h., machen Sie CTrade in der ersten Zeile Ihres Codes zu einer Basisklasse:
Wie sollte es in diesem Fall sein? Sollten Sie anstelle von #include <Trade.mqh> den vorgeschlagenen Code einfügen?
Vererben Sie diesen Code von CTrade.
D.h., machen Sie CTrade in der ersten Zeile Ihres Codes zu einer Basisklasse:
Dementsprechend sollten Sie Trade\Trade.mqh nicht mehr in Ihr Programm einbinden, sondern einen Inluder, zum Beispiel #include <aTradeSync.mqh>, das Ihre Klasse enthält und #include <Trade\Trade.mqh>, das dort ganz am Anfang steht.
Ich würde es nicht auf diese Weise tun, da dies eine Änderung der zuvor geschriebenen EAs erfordern würde. Und reiner OrderSend wird nicht synchronisiert, nur SB-OrderSend. Nicht jeder verwendet SB-only. Manche Leute verwenden sogar reines MQL5.
Daher scheint die nachstehende Lösung vorerst optimal zu sein. Alle EAs werden ohne Änderungen funktionieren.
#include <TradeSync.mqh> // Если подключен OrderSendSync.mqh - СБ станет синхронизированной, иначе - стандартной.
Ich würde es nicht auf diese Weise machen, da es eine Änderung der zuvor geschriebenen EAs erfordern würde. Und der reine OrderSend wird nicht synchronisiert, sondern nur der SB-OrderSend. Nicht jeder verwendet SB-only. Manche Leute verwenden sogar reines MQL5.
Daher scheint die nachstehende Lösung vorerst optimal zu sein. Alle EAs werden ohne Änderungen funktionieren.
#include <TradeSync.mqh> // Если подключен OrderSendSync.mqh - СБ станет синхронизированной, иначе - стандартной.