Init() ve DeInit() yürütme sırası - sayfa 7

 
Slawa :

Bir sembol içinde bir zaman çerçevesi değişikliği varsa, o zaman başlatma-başlatmadan kaldırma sırası temelde tahmin edilebilir. En son yapı 1580'i indirin - orada bir şeyi düzelttik, şimdi göstergeler en son kaldırıldı, bu nedenle erken bir tanımlama olmamalıdır.

anlamadım Lütfen açıkla. Deinit, init'ten sonra garanti edilecek mi?
 
Andrey Khatimlianskii :

Göstergeler farklıdır. Fren de yaptı. Ve hepsi değil - kendi ve kaynak kodunda.

Birkaç saniye gülümsedi. Arayüzde onlarca milisaniye hissediliyor, rahatsızlık anında ortaya çıkıyor.


Aşırıya kaçmayın. Bu arayüzle ilgili değil, geçici olaylarla ilgili - TF'yi değiştirmek. Boş bir grafikte zaman dilimlerini değiştirmek sonsuz bir zaman mı alır? Numara. Yani göstergeler işe yaramaz.



Ve en önemlisi, soruma cevap yok:
Hangi durumlarda, grafikle basit çalışma dışında. nesneler (adında TF'nin adı olmadan), DeInit - Init dizisi önemli mi?


Hemen hemen tüm durumlarda. Tabii Mashek ve benzeri ilkel oyuncaklardan bahsetmiyorsak:

  1. Dosyaya yaz. Gösterge kapatıldığında, biriken bilgilerin dosyaya eklenmesi gerekir. Çünkü dosyayı her zaman açık tutamazsınız. Dosyaya yazılan tüm bilgilerin başarısız olma ve kaybolma riski vardır.
  2. Grafik nesnelerle çalışırken . Genel olarak, güzellik ortaya çıkıyor: bir gösterge hala var ve kendi kendine temizlenmedi ve ikincisi bu nesnelerin üzerine çiziyor. Bu yüzden kullanıcıya şunu açıklayacağız: "TF'yi değiştirirken kısa süreli parazit gözlemleyeceksiniz." )))
  3. DLL ile çalışmak. Deinit ile DLL, oluşturduğu tüm iş parçacıklarını kesmelidir. Bundan sonraki göstergenin bir sonraki kopyası, bunları kendisi için yeniden oluşturur. Şimdi, göstergenin yeni bir kopyasının tüm bu dizileri oluşturmaya çalışacağını ve hala çalıştıkları için reddedileceğini anlıyoruz. Yeni gösterge bir hata mesajı verecek ve çalışmayacaktır. Sadece TF'yi değiştirdiğim için. Evet, sorun çözüldü.

Kabul ediyorum. Sorunlar, ikincisi hariç, onları bilirseniz çözülebilir. Yani, tüm mantığın artık OnCalculate'e itilmesi gerekiyor ve Init ve DeInit kullanılmamalı, kendinizinkini yazın. O zaman neden onlara ihtiyaç var?

Her durumda, şu anda çapraz platformdan bahsetmiyoruz. Sonuçta, MT4 ve MT5, ortaya çıktığı gibi, Init ve DeInit'e farklı yaklaşımlara sahiptir.

 
nmaratr :


Finansla ilgili olmasaydı, bu tür tartışmalar olmazdı.

Ve ticaret danışmanı, zaman dilimlerinin basit bir şekilde değiştirilmesi nedeniyle doğru şekilde çalışmayı durduracak olan bir veya başka bir göstergeye bağlı olduğundan. En sinir bozucu olan da bu.

Finans konusunda ona nasıl güvenilebilir?

Belki de MT geliştiricileri ile bu konudaki görüşlerimiz farklıdır.

Bu sorunu çözmek için birçok seçenek var. Ve hemen hemen hepsi bu başlıkta seslendirildi.

1. Uzman Danışman göstergeye göre yazılıyorsa Uzman Danışman çizelge periyodunun değişmesinden etkilenmeyecek şekilde yazılmalıdır. Bu nedenle, göstergenin yeniden başlatılması olmayacaktır.

2. Başlatmadaki grafik nesneleri silmeniz veya grafiğin tasarımını değiştirmeniz gerekiyorsa, başlatmama nedenini kontrol edin.

3. Göstergenin bazı parametreleri kaydetmesi gerekiyorsa, burada belirtildiği gibi, bu verileri başlattığınızda değil, bu veriler hazırlandığında veya değiştirildiğinde kaydedin.

4. İki bok yığınından her zaman daha az kokanı seçin. Buna göre, TÜM göstergelerin bağlı olduğu hız ile BAZI göstergelerde bazı verileri kaydetmenin karmaşıklığı arasında seçim yaparak hızı seçiyorum.

 
Stanislav Korotky :
anlamadım Lütfen açıkla. Deinit, init'ten sonra garanti edilecek mi?

Zaman çerçevesi geçişi azalırsa, önce alt (yeni) zaman diliminde OnInit, ardından daha yüksek (eski) zaman diliminde OnDeinit.

Anahtar yükselirse, bunun tersi doğrudur. İlk olarak, alt (eski) zaman diliminde OnDeinit ve ardından daha yüksek (yeni) zaman diliminde OnInit.

Burada önbelleklerin alt zaman diliminden eskisine doğru işlendiğini unutmamanız gerekir.

 
Slawa :

En son yapı 1580'i indirin - orada bir şeyi düzelttik, şimdi göstergeler en son kaldırıldı, bu nedenle erken bir tanımlama olmamalıdır.


:(( Mlyn, "memnunum". Şimdi bazı programlarda kodu yeniden yazmanız gerekebilir, çünkü kod sadece "tersi" için keskinleştirilmiştir - önce Deunit, sonra Unit.
Garip, dürüst olmak gerekirse, mantık. Onlar. Göstergenin eski ve yeni kopyaları, Birim önce göstergenin yeni kopyasında ve bundan sonra DeBirim eskisinde çalıştırılana kadar bir süre kesinlikle birlikte yaşayacaktır. Aynı zamanda, Deunit aracılığıyla yeni kopyaya herhangi bir bilgi iletmenin bir yolu yoktur. Belli ki abartmışlar. Sonuçta, Birimler genellikle Birimlerden çok daha hantaldır. Neden böyle garip bir infaz sırası! Sonra bu konu tekrar tekrar canlanacak. Şimdi, programcı hala göstergede TF değiştirilirken yeniden başlatılmayan bazı değişkenler yaratma fırsatına sahip olsaydı, o zaman Tanrı'nın bu OnInit ve OnDeinit dizisi ile olurdu. Bu konuda birkaç kez yazdım ( 1 ve 2 ). İşaretçilerin ve referansların güvenlik amacıyla programcılar için karşılanamayacak bir lüks olduğu konusunda geliştiricilerin mantığına katılıyorum, ancak daha sonra göstergenin tüm kopyaları için özel bir tür paylaşılan değişkenler için bir mekanizma oluşturun. Yalnızca bir gösterge vardır, göstergenin özellikleri de "bir yerde" saklanır.
 
Slawa :

Zaman çerçevesi geçişi azalırsa, önce alt (yeni) zaman diliminde OnInit, ardından daha yüksek (eski) zaman diliminde OnDeinit.

Anahtar yükselirse, bunun tersi doğrudur. İlk olarak, alt (eski) zaman diliminde OnDeinit ve ardından daha yüksek (yeni) zaman diliminde OnInit.

Burada önbelleklerin en küçüğünden en eskisine doğru işlendiğini unutmamalısınız.

Daha da karıştı.

Sonuçta, gösterge yazarın kendisi tarafından kullanılmıyorsa, istediği gibi ve init ve deinit'in yürütülmesini beklemeden geçiş yapabilir mi? Ve ne olur??? Ve eğer deinit'te bir geçiş seçeneği ile bazı işlemler yapmanız gerekiyorsa, o zaman tek yön için mi yoksa her iki yön için mi yazılacağı hiç kimse için fark etmez. Ancak "ağır" göstergeler için frenler eklediler.

 
Alexey Viktorov :

Daha da karıştı.

Sonuçta, gösterge yazarın kendisi tarafından kullanılmıyorsa, istediği gibi ve init ve deinit'in yürütülmesini beklemeden geçiş yapabilir mi? Ve ne olur??? Ve eğer deinit'te bir geçiş seçeneği ile bazı işlemler yapmanız gerekiyorsa, o zaman tek yön için mi yoksa her iki yön için mi yazılacağı hiç kimse için fark etmez. Ancak "ağır" göstergeler için frenler eklediler.

Frenler nereye eklenir? Neye kıyasla ekledin?

Lütfen ifadelerinizi kod ile yedekleyin, böylece herkes yeniden üretebilir

Tekrar. Grafiğin -dönemi sembolü değiştirilirken, göstergenin başka bir kopyası oluşturulduğundan, yeni sembol döneminde OnInit ve eski sembol döneminde OnDeinit'in yürütme sırası tanımsızdır.

 
Slawa :

Frenler nereye eklenir? Neye kıyasla ne eklendi?

Lütfen ifadelerinizi kod ile yedekleyin, böylece herkes yeniden üretebilir

Tekrar. Grafiğin -dönemi sembolü değiştirilirken, göstergenin başka bir kopyası oluşturulduğundan, yeni sembol döneminde OnInit ve eski sembol döneminde OnDeinit'in yürütme sırası tanımsızdır.

bu mesajda

Slava :

Zaman çerçevesi geçişi azalırsa, önce alt (yeni) zaman diliminde OnInit, ardından daha yüksek (eski) zaman diliminde OnDeinit.

Anahtar yükselirse, bunun tersi doğrudur. İlk olarak, alt (eski) zaman diliminde OnDeinit ve ardından daha yüksek (yeni) zaman diliminde OnInit.

Burada önbelleklerin alt zaman diliminden eskisine doğru işlendiğini unutmamanız gerekir.

Yeni bir yapı hazırlarken nasıl olduğunu veya nasıl yaptığınızı söylediniz mi?

Eğer öyleyse, yanlış anladım ve sözlerimi geri alıyorum.

 
Alexey Viktorov :

bu mesajda

Yeni bir yapı hazırlarken nasıl olduğunu veya nasıl yaptığınızı söylediniz mi?

Eğer öyleyse, yanlış anladım ve sözlerimi geri alıyorum.

Bu, yapı 1580'de yapılır

Bundan önce, zaman çerçevesini değiştirirken başlatmadan arındırma neredeyse her zaman daha erkendi. Ancak, yalnızca zaman aralığı geçişi azalırsa, başlatmasızlaştırma olması gerektiği gibi 3 değil, kod 1 ile gerçekleştirildi.

 
Slawa :

Bu, yapı 1580'de yapılır

Bundan önce, zaman çerçevesini değiştirirken başlatmadan arındırma neredeyse her zaman daha erkendi. Ancak, yalnızca zaman aralığı geçişi azalırsa, başlatmasızlaştırma olması gerektiği gibi 3 değil, kod 1 ile gerçekleştirildi.


O zaman göstergenin Inite'sinde bu başlatmadan arındırma kodları nasıl işlenir, bu kodlar ne işe yarar? Sonuçta göstergede bekleme imkanı yok, Uyku çalışmıyor.