MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 73

 
Alexey Viktorov :
Artyom, yanılıyorsun. Global düzeyde bildirilen bir dizi, programın tüm bölümlerinde görünür durumdadır ve onu bir yerden bir yere transfer etmek gerekli değildir. Sadece programın bir yerinde doldurulur, başka bir yerde sıralanır ve üçüncüsü okunur, önemli değil.

Aynı işlev, farklı dizilerdeki verileri başarıyla sıralayabilir ve/veya arayabilir. Doğru? Ve eğer öyleyse, diziyi referans olarak iletmek daha iyidir - gelecek için. Peki,bir fonksiyon çağırırken hangi diziyle çalışacağını görmekten zarar gelmez.

Sadece bu nedenlerle buradayım. nerede yanlış?

 
Artyom Trishkin :

Aynı işlev, farklı dizilerdeki verileri başarıyla sıralayabilir ve/veya arayabilir. Doğru? Ve eğer öyleyse, diziyi referans olarak iletmek daha iyidir - gelecek için. Peki,bir fonksiyon çağırırken hangi diziyle çalışacağını görmekten zarar gelmez.

Sadece bu nedenlerle buradayım. nerede yanlış?

Anladım. Lego programcılarına tavsiyeniz. Böyle sapkınlıkları kendin yapmıyorsun.

O zaman geriye bir şey kalır, dizinin global düzeyde bildirilmesi gerektiği konusunda yanlıştır.

Birbirimizi anladığımıza sevindim.

 
Alexey Viktorov :

Anladım. Lego programcılarına tavsiyeniz. Böyle sapkınlıkları kendin yapmıyorsun.

O zaman geriye bir şey kalır, dizinin global düzeyde bildirilmesi gerektiği konusunda yanlıştır.

Birbirimizi anladığımıza sevindim.

Bu bağlamda, neye öncülük ediyorum:

  1. Mümkün olduğunca kene başına en az döngü elde etmemiz gerekiyor.
  2. Piyasa emirleri ve pozisyon verilerini içeren bir kalıcı diziye ve silinmiş/kapanmış emir ve pozisyon verilerini içeren bir diziye ihtiyacımız var.
  3. Bir işlevde yerel olarak bir diziniz varsa, ona yeniden erişmek için bir sonraki doldurma gerekir. Onu bir kez yeni bir onay işaretiyle doldurmanızı öneririm - bu, dizinin global olduğu anlamına gelir - aksi takdirde işlev çıktığında onu kaybederiz.
  4. İçinde (dizide) bir şey bulmak için, dolu bir diziye ve bulunan verileri döndürecek fonksiyonlara ihtiyacımız var. Zaten fonksiyonların içinde, gerekli hesaplamalar için yardımcı diziler bildirebilirsiniz.

Buna dayanarak, kapalı ve açık emirler ve pozisyonlar için global dizilere sahip olmak hala daha iyidir. Yeni bir onay işaretlendiğinde, gerekli sayıda emir/pozisyonu bir kez inceleriz ve bunlarla iki diziyi doldururuz. Ve sonra, aynı tık üzerinde, onlardan ihtiyacımız olan tüm verileri alıyoruz. Ayrıca sadece son kapanan/açık olan emir/pozisyon ve tüm verileri hesaplanmakla kalmaz, kısmi kapanma durumunda tüm pozisyonların tüm ebeveyn ve çocuk biletleri aranır. Buna göre, herhangi bir zamanda, bir kereden fazla kısmen kapatılmışsa, bu veya bu pozisyonun hangi biletten kaynaklandığını görebilirim - tüm bunlar zaten bir zamanlayıcıda çalışan bir sınıfta çalışır. Pekala, toplam döngü sayısı az olan ihtiyacım olan başka birçok veriye sahibim. Test cihazı için diziler için gerekli geçmiş derinliği ayarlanır.

Vb. ...

 
Artyom Trishkin :

Bu bağlamda, neye öncülük ediyorum:

  1. Mümkün olduğunca kene başına en az döngü elde etmemiz gerekiyor.
  2. Piyasa emirleri ve pozisyon verilerini içeren bir kalıcı diziye ve silinmiş/kapanmış emir ve pozisyon verilerini içeren bir diziye ihtiyacımız var.
  3. Bir işlevde yerel olarak bir diziniz varsa, ona yeniden erişmek için bir sonraki doldurma gerekir. Onu bir kez yeni bir onay işaretiyle doldurmanızı öneririm - bu, dizinin global olduğu anlamına gelir - aksi takdirde işlev çıktığında onu kaybederiz.
  4. İçinde (dizide) bir şey bulmak için, dolu bir diziye ve bulunan verileri döndürecek fonksiyonlara ihtiyacımız var. Zaten fonksiyonların içinde, gerekli hesaplamalar için yardımcı diziler bildirebilirsiniz.

Buna dayanarak, kapalı ve açık emirler ve pozisyonlar için global dizilere sahip olmak hala daha iyidir. Yeni bir onay işaretlendiğinde, gereklisayıda emir/pozisyonu bir kez inceleriz ve bunlarla iki diziyi doldururuz. Ve sonra, aynı tık üzerinde, onlardan ihtiyacımız olan tüm verileri alıyoruz. Ayrıca sadece son kapanan/açık olan emir/pozisyon ve tüm verileri hesaplanmakla kalmaz, kısmi kapanma durumunda tüm pozisyonların tüm ebeveyn ve çocuk biletleri aranır. Buna göre, herhangi bir zamanda, bir kereden fazla kısmen kapatılmışsa, bu veya bu pozisyonun hangi biletten kaynaklandığını görebilirim - tüm bunlar zaten bir zamanlayıcıda çalışan bir sınıfta çalışır. Pekala, toplam döngü sayısı az olan ihtiyacım olan başka birçok veri var. Test cihazı için diziler için gerekli geçmiş derinliği ayarlanır.

Vb. ...

Bu yüzden birbirimizi tam olarak anlamadık.

Dizi global ise, zaten bu fonksiyonun içinde görünüyorsa, neden referans yoluyla fonksiyona iletelim?

 
Alexey Viktorov :

Bu yüzden birbirimizi tam olarak anlamadık.

Dizi global ise, zaten bu fonksiyonun içinde görünüyorsa, neden referans yoluyla fonksiyona iletelim?

İşlev aşırı yüklemesi - böyle bir şey var ;)

Aynı işlemleri farklı dizilerle tek bir işlevde yapmanız gerekiyorsa, o zaman ...

Ancak, çeşitli özel durumları tartışıyoruz ...

 
Artyom Trishkin :

İşlev aşırı yüklemesi - böyle bir şey var ;)

Aynı işlemleri farklı dizilerle tek bir işlevde yapmanız gerekiyorsa, o zaman ...

Ancak, çeşitli özel durumları tartışıyoruz ...

Tanrıya şükür, düşüncelerinizi anladım. Ancak Lego programcılarına verilen tavsiyelere çok benziyorlar.
 
Alexey Viktorov :
Tanrıya şükür, düşüncelerinizi anladım. Ancak Lego programcılarına verilen tavsiyelere çok benziyorlar.

Stokta çok sayıda %100 çalışan fonksiyon olduğundan, bunları her seferinde yeniden yazmak çok garip olurdu. Bu, küplerden ev koleksiyoncularına tavsiye değildir. Bunlar, kendi işlev kitaplıklarınızı ve sınıflarınızı biriktirmek için ipuçlarıdır. Ve bir işlevin, hangisinin kendisine referans olarak iletildiğine bağlı olarak birkaç diziyle çalışması gerçeğinin nesi yanlış? İşlev şablonlarının nesi var?

Bir diziyi sıralamak için kod varsa, neden her dizi türü için ayrı bir işlev yazalım? Sonuçta, herhangi bir türü aşırı yükleyebilir ve sıralayabilirsiniz. Sizce ArraySort() nasıl çalışır? Orada farklı türde diziler geçirirsiniz ve çıktıda, geçtiğiniz sıralanmış olanı alırsınız - veya meta alıntılar aynı zamanda lego-kodlayıcı mıdır?

 
Artyom Trishkin :

Stokta çok sayıda %100 çalışan fonksiyon olduğundan, bunları her seferinde yeniden yazmak çok garip olurdu. Bu, küplerden ev koleksiyoncularına tavsiye değildir. Bunlar, kendi işlev kitaplıklarınızı ve sınıflarınızı biriktirmek için ipuçlarıdır. Ve bir işlevin, hangisinin kendisine referans olarak iletildiğine bağlı olarak birkaç diziyle çalışması gerçeğinin nesi yanlış? İşlev şablonlarının nesi var?

Bir diziyi sıralamak için kod varsa, neden her dizi türü için ayrı bir işlev yazalım? Sonuçta, herhangi bir türü aşırı yükleyebilir ve sıralayabilirsiniz. Sizce ArraySort() nasıl çalışır? Orada farklı türde diziler geçirirsiniz ve çıktıda, geçtiğiniz sıralanmış olanı alırsınız - veya meta alıntılar aynı zamanda lego-kodlayıcı mıdır?

Ana şey buna ulaşmak değil.

https://www.mql5.com/en/forum/165468/page3#comment_3978059

Простой советник. Проверка размера бара. Покупка/продажа
Простой советник. Проверка размера бара. Покупка/продажа
  • www.mql5.com
Что должен делать советник: на каждом тике проверять размер бара как только размер бара станет равным или превысит заданный размер то: если свеча б...
 
Alexey Viktorov :

Ana şey buna ulaşmak değil.

https://www.mql5.com/en/forum/165468/page3#comment_3978059

Orada işe yaramaz. Bir çek için bir çeki var ve ardından doğru kontrol edilip edilmediğini görmek için bir çek var. Ve hala eğri. Orada durum böyle değil - orada profesörlere ihtiyaç var.
 

bir değişken var

int Düzey = 0;

Program süresince sürekli değişmektedir. Bir koşul yazmama yardım et: Düzey DEĞİŞMEDİyse, hiçbir şey yapmayız, Düzey değiştiyse (yukarı veya aşağı fark etmez), sonra belirli bir işlem yaparız { operatör }