Yeni bir çubuk belirtin - sayfa 4

 
Donald Gibson :

Gelişmiş-MQL4 ?

Bunu hiç duymadım.


Ben de dünden beri ;) Ve doğru isim " Güncellenmiş MQL4 " gibi görünüyor. MQ yazıyor:

(..) 600 build'den başlayarak, MQL4 programlama dili tamamen revize edilerek MQL5 düzeyine ulaşıldı - artık birleşik MetaEditor geliştirme ortamı, tek stil, kitaplıklar ve hata ayıklama araçlarını kullanarak MQL4/5'te ticaret robotları geliştirebilirsiniz.

(...) Bu nedenle, MQL4 işlevselliğini tamamen koruyan MQL5 dil işlevlerini ve özelliklerini mümkün olan maksimum miktarda uygulamaya karar verdik. Başka bir deyişle, ООP ve yerel kod derleyici dahil tüm güçlü MQL5 işlevleri MQL4'te kullanılabilir hale gelecektir. (...)

Bunu başarmak için hem MQL4 hem de MQL5 dillerini otomatik olarak destekleyen birleşik bir derleyici geliştirdik. (...)

Tanımdaki sorun "diller" kelimesidir. Dil MQL'dir, aynı şekilde C++ bir dildir ve Basic bir dildir. Güncellenmiş-MQL4/MQL5, MQL'nin yalnızca platforma özel modlarıdır, artık daha az değil, burada (yerel) MQL4 ve Güncellenmiş-MQL4'ün karşılaştırması C ve C++ ile hemen hemen aynıdır. Ve MQL4.com'un MQL5.com'a taşınması bu karışıklığı mükemmel hale getirdi. Bu gönderilerin gösterdiği gibi, çoğu insan benim yaptığım gibi OOP'yi MQL4 ile ilişkilendirmez. Benim için bu her zaman hem MT4 hem de MT5 platformlarını destekleyen MQL5 idi.

Ama yine de, oldukça iyi çalışıyor ve MQL Ne olursa olsun , etraftaki diğer tüm berbat şeylere kıyasla en iyi arayüz.

 

@Lorentzos Roussos

Alain can correct me on this but you may find gaps in instances where on the time horizon of a bar there where no ticks , so no bar will be in place

Upppsss ... Böyle bir saçmalık görmedim. (Bu hiçbir şey ifade etmez).

Önceki çubuğun yüksek veya alçak noktalarındaki stopları otomatik olarak çekmek için "NewBar-göstergemi" kullanıyorum.

(Aslında, "Innenstaebe ve Aussenstaebe" (İng. "iç ve dış hareketler" ???) düşündüğüm için biraz daha zor.) Doğru çevirinin ne olduğu hakkında hiçbir fikrim yok.

Ancak bunu yalnızca dakikada en az yirmi - birkaç yüz kene olan likit piyasalarda kullanacağım.

Onaysız on dakikalık bir süre bulacağımı sanmıyorum.

Her neyse, program bunu halledebilmelidir.

Teşekkürler!

Willbur

 
Willbur :

@Lorentzos Roussos

Upppsss ... Böyle bir saçmalık görmedim. (Bu hiçbir şey ifade etmez).

Önceki çubuğun yüksek veya alçak noktalarındaki stopları otomatik olarak çekmek için "NewBar-göstergemi" kullanıyorum.

(Aslında, "Innenstaebe ve Aussenstaebe" (İng. "iç ve dış hareketler" ???) düşündüğüm için biraz daha zor.) Doğru çevirinin ne olduğu hakkında hiçbir fikrim yok.

Ancak bunu yalnızca dakikada en az yirmi - birkaç yüz kene olan likit piyasalarda kullanacağım.

Onaysız on dakikalık bir süre bulacağımı sanmıyorum.

Her neyse, program bunu halledebilmelidir.

Teşekkürler!

Willbur

iTime kullanıyorsunuz, eğer yeni bir çubuk yoksa zaten çalışmayacaktır. Güvendesiniz
 
iTime kullanıyorsunuz, eğer yeni bir çubuk yoksa zaten çalışmayacaktır. Güvendesiniz

"iTime kullanıyorsunuz" ile ne demek istiyorsunuz? "iTime"ın programınızdaki bir değişken olduğunu anladım - isterseniz "Bert" veya "Clarly" olarak adlandırabilirsiniz?!?

- - - - -

Bugün bazı testler yaptım. Ve bahsettiğin boşluklardan bazılarını buldum.

örneğin 20:34'te S&P500 bir çubuk var, 20:35 ve 20:36 için sunucudan hiçbir onay ve çubuk almadım (ActiveTrades). Sonraki keneler 20:37'de geldi.

Daha sonra bu dönemler için grafikte çubuk yoktur. (ekli M1 tablosuna bakın)

Kontrol etmedim ama sanırım bu sefer CopyRates() işlevinde de çubuk yok.



Bence bu noktada kodunuzu kontrol etmelisiniz.

Tahminimce, 20:37 çubuğunun ilk üç işaretini yeni çubuklar olarak gösterecek.

(TimeCurrent() 20:34'ten 20:37'ye atlar! Oraya ulaşmak için üç kez PeriodeSeconds() eklemeniz gerekir).

void OnTick()  
{
//---   if(TimeCurrent()>=projection)   
    {Print("New Bar "+TimeToString(projection,TIME_DATE|TIME_MINUTES));   
     projection=projection+PeriodSeconds();   
    }

Willbur


 

Hepinize merhaba,

Hâlâ arayan olursa diye... işte bar başına yalnızca bir ticaretin açılmasını sağlamak için kodumdan bir pasaj.

   if ( iBars ( Symbol (), 0 ) == BarsCurr)DisableTrading = 1 ;
  
   for (i= 0 ;i< OrdersTotal ();i++)
  {
   if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) == True && OrderMagicNumber () == MagicNumber) DisableTrading = 1 ;
  }

   for (i= OrdersTotal ();i> 0 ;i--)
  {
   if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY ) == True && OrderMagicNumber () == MagicNumber)
  {
   if (( OrderClosePrice () >= Open [ 0 ] && OrderClosePrice () <= Close [ 0 ]) && ( OrderOpenPrice () >= Open [ 0 ] && OrderOpenPrice ()<= Close [ 0 ]))
  {
  DisableTrading = 1 ;
  }
   }
      }

İbarlar, çubuklarla değiştirilebilir ve devre dışı bırakma = 1, hiçbir şey yapma anlamına gelir. Çubuk kısmı, normal olarak yazılanlar kullanılarak daha iyi anlaşılabilir. Kodunuzun başlatma kısmına BarsCurr = 0 ve alış/satış emri kısmına BarsCurr = Bars koyun.

Yine de bir sorunum var, sinyali tersine çevirerek yakın sipariş uygulamaya çalışıyorum... herhangi bir fikriniz var mı?

 

NewBars'ın tanınması konusundaki tartışmalar biraz uzadığı için sonuçları kısaca özetleyeceğim.

Teknik ortam:

Sunucu tarafından bir değişiklik (yeni işlem veya yeni fiyat tespiti) tespit edilirse, sunucu terminale bir sinyal gönderir. Terminal programı, OnTick () rutinini tetikler.

Bu sinyalle aşağıdaki bilgileri alırız:

Time Current () - onayın gönderildiği sunucu zamanı.

Son kene hakkında bilgi - SymbolInfoTick()
• Onay işaretinin ortaya çıktığı sunucu zamanı
• Sormak
• Teklif etmek
• Son Fiyat (tüm sağlayıcılarda değil)
• neyin değiştirildiğini gösteren bir bayrak.

Geçerli çubuk hakkında bilgi
– CopyRates()
• çubuk için "ad", örneğin "10:20:00".
• Açık-Yüksek-Düşük-Kapalı

Yeni bir çubuk tanıma (örn. Periyot = M1)

Sunucu yalnızca bir şey değiştiğinde bir sinyal gönderdiğinden,
“ss.mm:00” adındaki çubuklar “ss:mm:00”dan sonra görünebilir

Bu, likiditesi az olan semboller için özel durumlara neden olabilir.

Dönemin süresiyle ilgili çözümler bunu algılamaz:

TimeCurrent() “adı” çubuklar
Son Tik 10:10:07 10.10:00
Sonraki Tik 10:11:30 10:11:00

Bununla Nether (bir periyotta sıfır kene):

TimeCurrent() “adı” çubuklar
Son Tik 10:10:30 10:10:00
Sonraki Tik 10:13:40 10:13:00 10:12:00 çubuğu eksik!

Çok nadiren (sunucuda çok yüksek yük sırasında?) Çubuklar değilken sunucu zamanının bir sonraki döneme geçtiği durumlar gördüm.

TimeCurrent() “adı” çubuklar
Son Tik 10:10:00 10:09:00
Sonraki Tik 10:10:00 10:10:00

Çözüm:

Gereksiz CopyRates()'i bastırmak için TimeCurrent() ile gitmek sorun değil.

TimeCurent() yeni döneme ulaştığında, çubuğun da değişip değişmediğini kontrol etmek gerekir.

Bu beni Alain'in çok erken tartıştığı koda geri getiriyor:

https://www.mql5.com/en/forum/22983

Willbur

Improve your time execution by removing Bars function calls
Improve your time execution by removing Bars function calls
  • www.mql5.com
After a basic profiling I get the following results :.
 

@emeka Mbanefo

kılavuzum "iBars" adlı bir işlevden bahsetmiyor.

Bunun MQL5 kodu olduğundan emin misiniz?

Willbur

 
Willbur :

@emeka Mbanefo

kılavuzum "iBars" adlı bir işlevden bahsetmiyor.

Bunun MQL5 kodu olduğundan emin misiniz?

Willbur

Ah, mql5 için değil. mql4 için sanırım. Yine de, iBars ben oynuyorum. Barları daha önce de belirttiğim gibi genel bir işlev olarak.

Hala sinyal geri dönüş koduyla ilgili yardım bekliyorum.

Teşekkürler.

 
emeka Mbanefo :

Ah, mql5 için değil. mql4 için sanırım. Yine de, iBars ben oynuyorum. Barları daha önce de belirttiğim gibi genel bir işlev olarak.

Hala sinyal geri dönüş koduyla ilgili yardım bekliyorum.

Teşekkürler.

  • Lütfen alakasız içerikle diğer konuları ele geçirmeyin.
  • Bu konu daha önce de belirtildiği gibi mql5 ile ilgilidir.
  • Bu konu, çubuk başına yalnızca bir kez ticaret yapmakla değil, yeni çubuk tespit etmekle ilgilidir.
  • iBars, yeni çubuğu algılamak için güvenilir değil.
Indicate a new bar
Indicate a new bar
  • www.mql5.com
Another idea could be the check wether the number of bars has been incremented.