uzman danışman - çeşitli sorular - sayfa 17

 

#Sipariş Hesaplamaları ve Hesap Bilgileri Güncellemeleri - Aç

(Bir keresinde sordum - ama yine de yardıma ihtiyacım var)

Hesaplama işlevlerimi OnTick() veya Start() ile çağırıyorum ve bunlar Chart Symbol Ticks'e bağlı.
Ve EA'mın hesaplama güncellemelerini Ticks ve Symbols'e ( / Chart - Ticks, Symbols ) bağlı değil nasıl yapabilirim diye araştırmaya başladım.
Sadece 'Tüm Sipariş Hesaplamaları ve Hesap Bilgileri'ni yapmaya çalışıyorum, güncellemeleri 'Terminal > Ticaret' ile senkronize edecek ( / gerçek zamanlı) .

Lütfen bana yardım et, teşekkürler.
Şimdiden teşekkürler.

 
Documentation on MQL5: Language Basics / Functions / Event Handling Functions
Documentation on MQL5: Language Basics / Functions / Event Handling Functions
  • www.mql5.com
Language Basics / Functions / Event Handling Functions - Reference on algorithmic/automated trading language for MetaTrader 5
 
Marco vd Heijden :

Ve SymbolName(x,1);

Güzel yorum hangisi işime yaradı çok teşekkürler.
Şimdi OnTick() ve OnTimer() kullanıyorum, bu işlevlerin ikisi de benim için iyi çalışıyor. (EA'lar için OnTimer()'ı ilk kez kullanıyorum)

---

Ayrıca Ticks'i denemek isterim. Sadece 'Terminal > Ticaret' ve mevcut grafik sembolündeki hangi sembollerden ( Çiftler ) olan Kenelere ihtiyacım var. Bu SymbolName() bana yardımcı olabilir mi?
Lütfen bana yardım edin veya bana tavsiye verin, bunu nasıl yapabilirim?

Herşey gönlünce olsun.

 
   for(int i=0;i<SymbolsTotal(1);i++)
     {
      Print(i," Symbol: ",SymbolName(i,1)," Ask: ",MarketInfo(SymbolName(i,1),MODE_ASK)," Bid: ",MarketInfo(SymbolName(i,1),MODE_BID));
     }
 
Marco vd Heijden :
   for ( int i= 0 ;i< SymbolsTotal ( 1 );i++)
     {
       Print (i, " Symbol: " , SymbolName (i, 1 ), " Ask: " , MarketInfo ( SymbolName (i, 1 ), MODE_ASK ), " Bid: " , MarketInfo ( SymbolName (i, 1 ), MODE_BID ));
     }

Harika bir örnek ve benim için gerçekten faydalı bir yorum , çok teşekkürler dostum.

Kenelerin Ticaret Çiftlerinden / Sembollerden gelmesi mümkün mü, lütfen?
Çünkü Piyasa İzleme neredeyse her zaman tüm sembolleri gösteriyor - özellikle İşlemler için yeni iyi Çiftler arıyorum ve bu nedenle ' Terminal > İşlem ' sembollerini / çiftlerini nasıl elde edebileceğime dair bazı yollar araştırıyorum, sadece şu anda işlem kenelerini açıyor .

şimdiden çok teşekkürler

 
hayır ama OnTimer() işlevinde fiyatı düşük bir değere ayarlayabilirsiniz, örneğin 250 milisaniye, saniyede 4 tıklamaya eşit olacaktır, neden buna ihtiyacınız var?
 
Marco vd Heijden :
hayır ama OnTimer() işlevinde fiyatı düşük bir değere ayarlayabilirsiniz, örneğin 250 milisaniye, saniyede 4 tıklamaya eşit olacaktır, neden buna ihtiyacınız var?

Yorumun için teşekkürler.

( subtopic - #Sipariş Hesaplamaları & Hesap Bilgileri Güncellemeleri - Açık ) Bahsettiğim gibi emir kar hesaplamaları kullanıyorum ve ' Terminal > Ticaret ' ile senkronizasyon çalışmıyor, tek sebep bu.
Yani bazen volatilite çok düşük, Ticks en az miktarlar geliyor ve bence fonksiyonlar saniyede 4 kez çalışıyor olabilir, bu yüzden boşuna çalışıyor ( / vain ).

Hangisinin yolunu bulamazsam bana Emirler Kar Hesaplamaları ve Hesap bilgileri (/güncellemeler) senkronizasyonu için ' Terminal > Ticaret ' keneleri verebilir. Son yorumlarınızda bana bu şekilde gösterdiğiniz çok faydalı yöntemlerinizi kullanacağım, çok teşekkürler. (Zaten test ettim ve bu şekilde beni çalıştırıyor)

Şimdiden teşekkürler.

 

Peki, gerçekten seviyorsanız, şunları kullanabilirsiniz:

struct MqlTick
  {
   datetime      time;           // Time of the last prices update
   double        bid;           // Current Bid price
   double        ask;           // Current Ask price
   double        last;           // Price of the last deal (Last)
   ulong         volume;         // Volume for the current Last price
   long          time_msc;       // Time of a price last update in milliseconds
   uint          flags           // Tick flags
  };

Cari Fiyatların İade Yapısı (MqlTick)

Bu, sembolün en son fiyatlarını saklamak için bir yapıdır. Güncel fiyatlar hakkında en çok talep edilen bilgilerin hızlı bir şekilde alınması için tasarlanmıştır.

MqlTick türünün değişkeni, SymbolInfoTick() işlevinin tek bir çağrısı içinde Ask, Bid, Last ve Volume değerlerinin elde edilmesini sağlar.

Her bir tik'in parametreleri, bir önceki tik'e göre değişiklik olup olmadığına bakılmaksızın doldurulur. Böylece, tick geçmişinde önceki değerleri aramaya gerek kalmadan geçmişteki herhangi bir an için doğru bir fiyat bulmak mümkündür. Örneğin, bir tick varış sırasında yalnızca bir Bid fiyatı değişse bile, yapı yine de önceki Satış fiyatı, hacim vb. dahil olmak üzere başka parametreleri de içerir.

Tam olarak hangi verilerin değiştirildiğini öğrenmek için onay işaretlerini analiz edebilirsiniz:

  • TICK_FLAG_BID — tik bir Teklif fiyatını değiştirdi
  • TICK_FLAG_ASK — bir onay, Satış fiyatını değiştirdi
  • TICK_FLAG_LAST — bir onay işareti, son anlaşma fiyatını değiştirdi
  • TICK_FLAG_VOLUME — bir onay, bir ses seviyesini değiştirdi
  • TICK_FLAG_BUY — bir onay, bir satın alma anlaşmasının sonucudur
  • TICK_FLAG_SELL — bir onay, bir satış anlaşmasının sonucudur

Misal:

void OnTick ()
  {
   MqlTick last_tick;
//---
   if ( SymbolInfoTick ( Symbol (),last_tick))
     {
       Print (last_tick.time, ": Bid = " ,last_tick.bid,
             " Ask = " ,last_tick.ask, "  Volume = " ,last_tick.volume);
     }
   else Print ( "SymbolInfoTick() failed, error = " , GetLastError ());
//---
  }

Ayrıca bakınız

https://www.mql5.com/en/docs/constants/structures/mqltick

Yapılar ve Sınıflar , CopyTicks() , SymbolInfoTick()

Böylece, belirli bir sembol için yeni bir onay işareti olup olmadığını kontrol etmek için kullanabilirsiniz, ancak bu aslında doğrudan fiyat seviyelerini okumaktan bir adım daha fazla olacaktır, bu yüzden bir kez daha neden ihtiyacınız olsun ki.

Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Price Data Structure
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Price Data Structure
  • www.mql5.com
Standard Constants, Enumerations and Structures / Data Structures / Price Data Structure - Reference on algorithmic/automated trading language for MetaTrader 5
 

Marco vd Heijden :

Peki, gerçekten seviyorsanız şunları kullanabilirsiniz: ...
Böylece, belirli bir sembol için yeni bir onay işareti olup olmadığını kontrol etmek için kullanabilirsiniz, ancak bu aslında doğrudan fiyat seviyelerini okumaktan bir adım daha fazla olacaktır, bu yüzden bir kez daha neden ihtiyacınız olsun ki.

Bilgilendirici yorumunuz için teşekkürler, çok teşekkürler.

---

Eğer haklıysam, cümlenin bu kısmı bir sorudur.

...neden buna ihtiyacın olsun ki?
Tek bir nedeni var, alakasız fonksiyon döngülerini/çalıştırmalarını engellemeye çalışıyorum.

(Bugün belirtmek isterim ki EA'nın Orders Kar hesaplamasını test ederken hesaplama sürekli güncelleniyor ( / loops for Nothing ) EURUSD grafiğinde test ettim ve test ederken 20'ye yakın çok düşük hacim gördüm (hayır) üzerinde) bir dakika.
Ve test ederken, bir kez daha emin olduğumdan, bana sadece ' Terminal > Ticaret ' Keneleri vereceği bir yol bulabildim. Bir kez daha söylemek istiyorum, hiçbir sebep yok.
Sadece OnTick() bana keneler verebilen yolların Chart Symbol'den gelebileceğini biliyorum. Ve diğerleri OnTimer() bana saniyede 4 tik verebilir... ve böyle devam eder, hangisini çok faydalı ve harika yorumlarınızdan öğrendim, bunun için bir tane daha çok teşekkürler. )

Ve durumumu açıklamam gerekiyor.

EA'm grafik sembolü üzerinde çalışırken Emirlerim Kar Hesaplama Terminal Ticaret paneli ile senkronize edilebilir, eğer grafik sembolü Emir Sembolü ile aynıysa, ancak GBPUSD için yeni bir pozisyon açarsam ve sonra senkronizasyon Terminal ile kesintiye uğrayacaktır. Ticaret paneli.
Ve EURUSD için siparişlerim varsa, ancak diğer grafik sembolünde (örneğin: GBPUSD, NZDUSD vb.) ticaret için yeni iyi çiftler aramaya çalışırsam, Emirler Kar Hesaplaması ' Terminal > Ticaret ' paneli ile senkronize olmuyor.
(Unutmayın ben zaten OnTimer()'ı biliyorum, siz bana yardımcı oldunuz, saniyede 4 tik nasıl kullanabilirim. )

Bütün bu endişe buradan geliyor.

Bugün kısa vadeli pozisyon açıyorum, uzun vadeli pozisyon açarsam Terminal Trade ile o senkronizasyona dikkat etmeyeceğim.

---

Umarım şimdi beni daha net anlamışsınızdır.

Herşey gönlünce olsun.

 

Eğer gerçekten her tik için beklemek istiyorsanız, her sembol için ayrı bir EA yazmanız ve OnTick() işlevini kullanmanız gerekecektir.

Ama size şunu söyleyebilirim ki, mikro denetleyicileri de programlıyorum ve bunlar bir elektrik kesintisi veya kesinti meydana gelene kadar sonsuz bir while döngüsünde (sonsuza kadar) bulunuyorlar.

Bir koşulun doğru veya yanlış olup olmadığını kontrol etmek için, en küçük Boolean veri türünü kullanır ve işlemciniz bunu, arka planda çalışan tüm işlemler ve grafikler vb. ile saniyede milyarlarca kez olmasa bile milyonlarca kez yapar.

Daha büyük veri türlerini içeren ağır hesaplamalar yapmaya başladığınızda, bu bir sorun haline gelir.

Neden: