Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1163

 
Roman :

Girilmişse, o zaman bir fark vardır.
Başlatılmış bir değişkeni okumak her zaman bir işlevi okumaktan daha hızlıdır.

Fark yok. Bağlantıyı şimdi bulamıyorum - ancak cevap uzun zaman önce verildi.

 
Vladimir Karputov :

Fark yok. Bağlantıyı şimdi bulamıyorum - ancak cevap uzun zaman önce verildi.

Juan ve derleyici uyarıları için herhangi bir fark yaratmazlar))

 
Vladimir Karputov :

Fark yok. Derlendiğinde, her şey tek bir çağrıya indirgenir. Bu nedenle, her şeyi işlevler üzerinden yapmak daha doğrudur .

Ayrıca bununla ilgili ayrı bir başlık açalım ve pipler ve puanlar hakkında tartışalım... Bu insanların yapacağı bir şey olacak...

Fikrinizi herkese ve herkese empoze etmeye ne dersiniz...

 

Biraz kayma ile MA var. MA_shift = 5 olsun;

Neden yalnızca CopyBuffer'a bir çift negatif kaydırma geçirilirse grafiğin sıfır çubuğundan doğru MA değerini almak mümkün oluyor?
CopyBuffer(hMA, 0, -2*5 , oranlar_toplam, MA_Buf);

MA_Buf[0] artık doğru değerdir.

 
RickD :

Biraz kayma ile MA var. MA_shift = 5 olsun;

Neden sadece CopyBuffer'a bir çift negatif kaydırma geçirilirse grafiğin sıfır çubuğundan doğru MA değerini almak mümkün oluyor?
CopyBuffer(hMA, 0, -2*5 , oranlar_toplam, MA_Buf);

MA_Buf[0] artık doğru değerdir.

İlk önce, bir resim çizin ve sizin için "sıfır çubuğu" gösterge için shift parametresiyle belirtin.

 
Roman :

Bir değişkeni okumak fonksiyonlardan daha hızlıdır.

bir gerçek değil, hangisinin daha hızlı olduğunu kontrol ettim _Symbol veya Symbol() https://www.mql5.com/ru/forum/160683/page933#comment_12780905

onlar. bire bir erişim süresi, MQL'de kod optimizasyonu çok iyi çalışıyor, bu yüzden daha uygun olanı kullanın

testlerime göre, bir değişkene erişim süresi, değişkenin nerede tanımlandığına ve hangi değiştiricilerle bağlı olarak değişebilir, ancak prensipte belirli bir yapıdaki uygulamaya atfedilebilecek %2-5 hız vardır. kesinlikle yapı numarasına bağlıdır

 
Lütfen bana mevcut sembol için son ticaretin sonucunu almanın en kolay ve en hızlı yolunu söyle? Ve sonra belgelerdeki her şey bir şekilde karmaşıktır. Sonucu elde etmek için öncelikle istenen işlemin biletini bulmalısınız, bileti bulmak için tarihte işlemi indeksine göre bulmanız gerekiyor, indeks geçmişte aranmalı, başka ne olduğunu söylemeye gerek yok. sembolüne göre filtrelenmesi gerekir. İşleri fazla karmaşıklaştırıyormuşum gibi hissediyorum
 
WinZip :
Lütfen bana mevcut sembol için son ticaretin sonucunu almanın en kolay ve en hızlı yolunu söyle? Ve sonra belgelerdeki her şey bir şekilde karmaşıktır. Sonucu elde etmek için öncelikle istenen işlemin biletini bulmalısınız, bileti bulmak için tarihte işlemi indeksine göre bulmanız gerekiyor, indeks geçmişte aranmalı, başka ne olduğunu söylemeye gerek yok. sembolüne göre filtrelenmesi gerekir. İşleri karmaşıklaştırıyormuşum gibi hissediyorum

Her seferinde ticaret geçmişine girmemek için, sadece tiple bir anlaşma yapın

TRADE_TRANSACTION_DEAL_ADD - geçmişe işlem ekleme


 //+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction ( const MqlTradeTransaction &trans,
                         const MqlTradeRequest &request,
                         const MqlTradeResult &result)
  {
//--- get transaction type as enumeration value
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- if transaction is result of addition of the transaction in history
   if (type== TRADE_TRANSACTION_DEAL_ADD )
     {
       long      deal_ticket       = 0 ;
       long      deal_order        = 0 ;
       long      deal_time         = 0 ;
       long      deal_time_msc     = 0 ;
       long      deal_type         =- 1 ;
       long      deal_entry        =- 1 ;
       long      deal_magic        = 0 ;
       long      deal_reason       =- 1 ;
       long      deal_position_id  = 0 ;
       double    deal_volume       = 0.0 ;
       double    deal_price        = 0.0 ;
       double    deal_commission   = 0.0 ;
       double    deal_swap         = 0.0 ;
       double    deal_profit       = 0.0 ;
       string    deal_symbol       = "" ;
       string    deal_comment      = "" ;
       string    deal_external_id  = "" ;
       if ( HistoryDealSelect (trans.deal))
        {
         deal_ticket       = HistoryDealGetInteger (trans.deal, DEAL_TICKET );
         deal_order        = HistoryDealGetInteger (trans.deal, DEAL_ORDER );
         deal_time         = HistoryDealGetInteger (trans.deal, DEAL_TIME );
         deal_time_msc     = HistoryDealGetInteger (trans.deal, DEAL_TIME_MSC );
         deal_type         = HistoryDealGetInteger (trans.deal, DEAL_TYPE );
         deal_entry        = HistoryDealGetInteger (trans.deal, DEAL_ENTRY );
         deal_magic        = HistoryDealGetInteger (trans.deal, DEAL_MAGIC );
         deal_reason       = HistoryDealGetInteger (trans.deal, DEAL_REASON );
         deal_position_id  = HistoryDealGetInteger (trans.deal, DEAL_POSITION_ID );

         deal_volume       = HistoryDealGetDouble (trans.deal, DEAL_VOLUME );
         deal_price        = HistoryDealGetDouble (trans.deal, DEAL_PRICE );
         deal_commission   = HistoryDealGetDouble (trans.deal, DEAL_COMMISSION );
         deal_swap         = HistoryDealGetDouble (trans.deal, DEAL_SWAP );
         deal_profit       = HistoryDealGetDouble (trans.deal, DEAL_PROFIT );

         deal_symbol       = HistoryDealGetString (trans.deal, DEAL_SYMBOL );
         deal_comment      = HistoryDealGetString (trans.deal, DEAL_COMMENT );
         deal_external_id  = HistoryDealGetString (trans.deal, DEAL_EXTERNAL_ID );
        }
       else
         return ;
       ENUM_DEAL_ENTRY enum_deal_entry=( ENUM_DEAL_ENTRY )deal_entry;
       if (deal_symbol==m_symbol.Name() && deal_magic==InpMagic)
        {
         if (deal_type== DEAL_TYPE_BUY || deal_type== DEAL_TYPE_SELL )
           {
            
...
           }
        }
     }
  }

m_symbol.Name() - geçerli sembol, InpMagic - benzersiz uzman kimliği

 
Merhaba, site üzerinden ve Facebook postasından kaydoldum ve meta tüccar 5-4 yardımı ile giriş yapamıyorum ve hesabımı dolduramıyorum
 
Igor Makanu :

bir gerçek değil, hangisinin daha hızlı olduğunu kontrol ettim _Symbol veya Symbol() https://www.mql5.com/ru/forum/160683/page933#comment_12780905

onlar. bire bir erişim süresi, MQL'de kod optimizasyonu çok iyi çalışıyor, bu yüzden daha uygun olanı kullanın

testlerime göre, bir değişkene erişim süresi, değişkenin nerede tanımlandığına ve hangi değiştiricilerle bağlı olarak değişebilir, ancak prensipte belirli bir yapıdaki uygulamaya atfedilebilecek %2-5 hız vardır. kesinlikle yapı numarasına bağlıdır

Optimize edicinin iyi çalıştığını kabul ediyorum, ancak her zaman derleyici optimize ediciye güvenmek doğru değil.
Kodun bellek, başlatma ve değer döndürme düzeyinde nasıl yürütüldüğünü önceden düşünmek gerekir.
Yani, işlem başına gerçekleştirilen işlem sayısını hesaplamak için daha az işlem - daha hızlı kod. Ve hemen en uygun kodu yazmak için pratik yapın.
Kısa kodlarda fark olmayabilir ama yüzlerce dosya içeren bir proje olunca gecikmeler oluyor,
ve sonra yalnızca profil oluşturucu ve kod yeniden yazma. Herkes kendi tırmığını seçer))

Ayrıca anahtar kelimeler için googled

 __inline 
__forceinline
İşin garibi, belgelenmediği için mql'deler.