
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Önerilen çözüm şimdiye kadar başka bir şeye rastlamadı. Bu yüzden daha iyisini sunamazdım.
Şimdi SB'den önce bir çözüm eklerseniz, senkronize hale gelecektir.
#include <Trade\Trade.mqh>
Küçük bir örnek alabilir miyim? Sınıfları bağlarken - sizinki ve SB:
#include <Trade\Trade.mqh>
konuya giriyorum)
buradan alındı
konuya giriyorum)
buradan alındı
Sadece hatları değiştirdim...
Küçük bir örnek alabilir miyim? Sınıfları bağlarken - sizinki ve SB:
#include <Trade\Trade.mqh>
konuya giriyorum)
Evet, bu nüansı unutmuşum. Doğru, böyle bir kısıtlama yok ...
Kapanmaları yeniden düzenlerseniz, elbette küfür olmaz. Ancak etki sıfır olacak - SB senkronize edilmeyecek.
Ne yazık ki, iyi bir çözüm görmüyorum. şimdilik olsun
// Это сделает СБ синхронизированным и не потребует каких-либо изменений в экспертах.
#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
Suçlu, aşırı kendinden emin bir şekilde ifade etti, kontrol etmedi.
Evet, bu nüansı unutmuşum. Doğru, böyle bir kısıtlama yok ...
Kapanmaları yeniden düzenlerseniz, elbette küfür olmaz. Ancak etki sıfır olacak - SB senkronize edilmeyecek.
Ne yazık ki, iyi bir çözüm görmüyorum. şimdilik olsun
// Это сделает СБ синхронизированным и не потребует каких-либо изменений в экспертах.
...
Yani, sınıfınızı bağlamak için, Trade\Trade.mqh bir römork tarafından çekilecektir.
Ya Trade\Trade.mqh'den miras almak istiyorsanız? Nasıl?
Yani, sınıfınızı bağlamak için, Trade\Trade.mqh bir römork tarafından çekilecektir.
Kalıtım eskisi gibi çalışacaktır. Ama sorunuzu daha iyi netleştirin.
Yani, kodunuzdaki ilk satırda CTrade'i temel sınıf yapın:
Bu durumda nasıl olunur? #include <Trade\Trade.mqh> yerine önerilen kod eklensin mi?
İşte CTrade'den miras alınacak kod .
Yani, kodunuzdaki ilk satırda CTrade'i temel sınıf yapın:
Buna göre, programınıza Trade\Trade.mqh değil, örneğin sınıfınızı içeren bir içerme, örneğin #include <aTradeSync.mqh> ve orada, en başında #include <Trade\Trade bağlanın. mqh > .
Bunu yapmazdım çünkü bu, önceden yazılmış Uzman Danışmanların değiştirilmesini gerektirecektir. Ve saf OrderSend senkronize edilmeyecek, sadece Sat-OrderSend senkronize edilecek. Yine de herkes SB kullanmaz. Bazıları da saf MQL5'i küçümsemiyor.
Bu nedenle, aşağıdaki çözüm şimdiye kadar optimal görünüyor. Tüm uzmanlar değişiklik yapmadan çalışacaktır.
#include <TradeSync.mqh> // Если подключен OrderSendSync.mqh - СБ станет синхронизированной, иначе - стандартной.
Bunu yapmazdım çünkü bu, önceden yazılmış Uzman Danışmanların değiştirilmesini gerektirecektir. Ve saf OrderSend senkronize edilmeyecek, sadece Sat-OrderSend senkronize edilecek. Yine de herkes sadece SB kullanmaz. Bazıları da saf MQL5'i küçümsemiyor.
Bu nedenle, aşağıdaki çözüm şimdiye kadar optimal görünüyor. Tüm uzmanlar değişiklik yapmadan çalışacaktır.
#include <TradeSync.mqh> // Если подключен OrderSendSync.mqh - СБ станет синхронизированной, иначе - стандартной.