Mt4 End desteği. - sayfa 39

 
George Merts :

Bunun bir avantaj olduğu tartışılır.

Şans eseri, birisi bayrağı değiştirecek - ve bu, aracın davranışını etkileyecektir.

Eh, kazalara karşı bir garanti yoktur. İnsan faktörü yok edilemez.))
 
Реter Konow :

Asıl görevim : OOP kullanmadan etkili çözümler gösterin.


Kararımın özü : - dakikada bir tüm sembollerin ve zaman dilimlerinin yeni çubukları için küresel bir olay bayrakları dizisinin oluşturulması.

Avantajlar:

1. Otomatik dizi doldurma ve otomatik temizleme.

2. Sistemde yük yok.

3. Herhangi bir işlevden diziye doğrudan erişim ve dizi temizlenene kadar olay bayrağını kaydetme.

Lanet olsun sonunda uyandım....
Herhangi bir sembolden bir çubuğun her an gelebileceğini ve görevin aynı anda sisteme yeni bir çubuğun geldiğini söylemek olduğunu anlıyorsunuz. Sistemin dakikada bir yoklanacağını nasıl hayal ediyorsunuz?

 
Реter Konow :
Şey, kazalara karşı bir garanti yok. İnsan faktörü yok edilemez.))

İşte burada. Bu nedenle kodun olası insan hatalarını mümkün olduğunca sınırlandıracak şekilde yazılması gerektiğine inanıyorum. Sadece insan faktörü nedeniyle - yok etme. Daha dün, Uzman Danışman hakkındaki istatistiklerin belirtilen tarihten (Uzman Danışmanın oluşturulduğu tarihten) değil, tarihin başlangıcından toplandığı için kodumda bir hata keşfettim. Değişkeni başlatmayı unuttum ve boş kaldı.

Şimdi, analizörü öyle bir şekilde yeniden tasarladım ki, bir talepte bulunurken, analiz edileceği tarihin belirtilmesi gerekecek ve Expert Advisor'ın parçalarının fabrikası yalnızca oluşturulma tarihini döndürecek ve hayır. diğerleri.

Şimdi - Ticaret geçmişini Uzman Danışmanın oluşturulduğu andan daha önce analiz etmek imkansızdır. Önceki sürüm işlem yapsa bile artık istatistiklere dahil edilmeyecek.

 
Nikolai Semko :
Lanet olsun sonunda uyandım....
Herhangi bir sembolden bir çubuğun her an gelebileceğini anlıyorsunuz ve görev, tam o anda sisteme yeni bir çubuğun geldiğini bildirmek. Sistemin dakikada bir oylanacağı zamanı nasıl hayal ediyorsunuz?

Neden "tam şu anda" ???

Arkadaşlar, sadece işlem yapmak için farklı yaklaşımlarınız var. M1 zaman çerçevesi üzerinde çalışıyorsak - yeni bir barın geldiği bilgisi - "aynı anda" değil, yeni bir dakika geldiğinde almalıyız. S1 zaman çerçevesi üzerinde çalışıyorsak (merhaba Volchansky), yeni bir saniye geldiğinde bu bilgiyi almalıyız. Her kene üzerinde çalışırsak, bilgi yeni bir kene gelişiyle gelmelidir.

Ve "bir olay üzerinde çalışma" seçeneği var - ama o zaman IsNewBar () işlevine sahip olmamalıyız, ancak aslında OnTick () işlevinin bir "alt kümesi" olan OnNewBar () işlevine sahip olmalıyız.

 
Nikolai Semko :
Lanet olsun sonunda uyandım....
Herhangi bir sembolden bir çubuğun her an gelebileceğini ve görevin aynı anda sisteme yeni bir çubuğun geldiğini söylemek olduğunu anlıyorsunuz. Sistemin dakikada bir yoklanacağını nasıl hayal ediyorsunuz?

iBars() işlevi her zaman mevcut bar sayısını döndürür. Son çağrıdan bu yana değiştiyse dizideki yeni çubuğun olayını düzeltiriz, değişmediyse düzeltmeyiz.
 
Nikolai Semko :
Lanet olsun sonunda uyandım....
Herhangi bir sembolden bir çubuğun her an gelebileceğini ve görevin aynı anda sisteme yeni bir çubuğun geldiğini söylemek olduğunu anlıyorsunuz. Sistemin dakikada bir yoklanacağını nasıl hayal ediyorsunuz?

Apaçık. Yani bar, iBars'ın isteği sırasında gelmeyebilir, ancak istekten bir dakika sonra gelebilir. Daha sonra sistem için atlanacaktır. Durumda.


Sonra ne, sürekli çevirmek mi? - açıkça en iyi çözüm değil.

 
Реter Konow :

Apaçık. Yani bar anket sırasında gelmeyebilir, ancak anketten bir an sonra gelebilir. Daha sonra sistem için atlanacaktır. Durumda.

Peter, ikinci kez tartışmak için farklı bir konu öneriyorum. Hiçbir şey yazmanıza gerek yok, sadece teori.

OOP kullanılabilirliğinin ilkel bir örneğini buldum. İşte bir diziyi belirtilen bir değerle doldurmak için bir fonksiyon. Dizinin türüne bağlı olarak sekiz çeşidi vardır.

Bir parametre setini, sonra bir diğerini, sonra üçüncüsünü iletmeniz gereken bir fonksiyon yazmanız gerektiğini hayal edin... Algoritmik yaklaşımla, N farklı fonksiyon ismi alırsınız. Sorun değil gibi görünüyor, ArrayInitialize Int() A rrayInitializeDouble() ve benzeri gibi 8 yazabilirsiniz. Ama sonuçta, bir dizinin türünü düşünmeden her durumda bir işlevi basitçe uygulamak ne kadar güzel ve oraya hangi diziyi koyduğunuzu karıştırmak ne kadar güvenli ...


Документация по MQL5: Операции с массивами / ArrayInitialize
Документация по MQL5: Операции с массивами / ArrayInitialize
  • www.mql5.com
Операции с массивами / ArrayInitialize - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov :

Peter, ikinci kez tartışmak için farklı bir konu öneriyorum. Hiçbir şey yazmanıza gerek yok, sadece teori.


Biraz bekleyin lütfen. Bu konuyu tam olarak anlayacağız ve ikincisini dikkatlice okuyacağım.
 
Реter Konow :
Biraz bekleyin lütfen. Bu konuyu tam olarak anlayacağız ve ikincisini dikkatlice okuyacağım.

Hatırladığınız gibi, yeni çubuğun konusu OOP'nin artılarını bulmak için gündeme getirildi, ancak programlama seçenekleri ve kesinlikle yeteneklerinizi değil. Ancak kodunuz ve bir bütün olarak algoritma hakkındaki yorumlar, tartışmayı yanlış bozkıra çevirdi. Bu yüzden devam etmenin gerekli olduğunu düşünmüyorum.

 
Alexey Viktorov :

Hatırladığınız gibi, yeni çubuğun konusu OOP'nin artılarını bulmak için gündeme getirildi, ancak programlama seçenekleri ve kesinlikle yeteneklerinizi değil. Ancak kodunuz ve bir bütün olarak algoritma hakkındaki yorumlar, tartışmayı yanlış bozkıra çevirdi. Bu yüzden devam etmenin gerekli olduğunu düşünmüyorum.

Yani, OOP'nin avantajlarını paramparça etmeye devam etmemi istiyorsun ve herkes beni trollemeye devam etti?)) Ama aslında haklısın. Tartışma yanlış yöne gitti.