Otomatik Sihirli Numara - sayfa 3

 
BarrowBoy :

Herhangi bir siparişi kısmen kapatmıyorsanız, kaynak çifti/zaman aralığı bilgisini saklamak için yorumu kullanabilirsiniz..?

Aynı sembol ve zaman diliminde iki EA varsa, ilgili kimliklerini hangi tarihi siparişlerden alacaklarını nasıl bilebilirler?


Bütün bunlar kısmen, hangi bilgilerin yeniden başlatıldığında mevcut olduğunun garanti edildiğine bağlıdır. Örneğin, bu forumda, grafik penceresindeki gizli nesnelerde bu satırlar boyunca veri depolayan bazı kişiler var. Bu fena değil, ama kişisel olarak, kullanıcının nasıl ve neden olduğunu anlamadan kırabileceği herhangi bir mekanizmadan korkuyorum.

 
jjc wrote >>

Aynı sembol ve zaman diliminde iki EA varsa, ilgili kimliklerini hangi siparişlerden alacaklarını nasıl bilebilirler?

Lanet olsun - bu proje kapsamında mıydı :D

Sanırım EA'nın (farklı tür veya sürüm ise) yorumlarda da bir tanımlayıcı olacağını varsaydım :)

-BB-

 
jjc wrote >>

MT4 veya kullanıcı her EA'ya bir kimlik atamadan bunun nasıl mümkün olduğunu anlayamıyorum. Veya daha doğrusu, benzersiz bir kimlik oluşturmak ve ardından EA'nın .chr dosyasını kimliği EA'nın harici parametrelerinin bir parçası olarak depolamak için değiştirmek gibi çok kötü bir şey içermeyen bir şey göremiyorum.

Ve genel eğlence için, aşağıdaki tartışmayı hiçbir şekilde ilerletmez, ancak djb2 karma girdisini benzersiz olması garanti edilen bir değerle değiştirir (DLL çağrıları gerektirme pahasına). GUID'ler gibi şeylerde djb2'nin ne kadar iyi olduğunu bilmiyorum, ancak herhangi bir çarpışma olmadan 1.000.000 kimlik oluşturmayı denedim. Ama yine de yeniden başlatma sorununu çözmüyor.

MT4 veya kullanıcı her EA'ya bir kimlik atamadan bunun nasıl mümkün olduğunu anlayamıyorum. Veya daha doğrusu, benzersiz bir kimlik oluşturmak ve ardından EA'nın .chr dosyasını kimliği EA'nın harici parametrelerinin bir parçası olarak depolamak için değiştirmek gibi çok kötü bir şey içermeyen bir şey göremiyorum.

>> EA p/u'nun n'inci örneği nasıl chartyy.chr dosyası olur?

.

bir örneğin aslında kendi .chr dosyasını eşleyebileceğini varsayarsak:

EA kaynağında şunlar varsa: extern int myID = <someCompileTimeVal>;

o zaman <someCompileTimeVal> öğesini gören herhangi bir örnek 'ilk kez' olduğunu varsayabilir -> gen it's id -> mod myID line -> myID'nin benzersizliğini kullanarak kurtarma dosyaları oluşturun,...

daha sonra yeniden başlatma algılama erişiminde, dosyaların yeniden eşlenmesine izin vermek için ana anahtar olan p/u myID'ye .chr dosyasıdır...

.

Örneğin:

grafik02.chr

<grafik>
sembol=EURUSD
dönem=15
..

..

<uzman>
isim=LMT 1.8
bayraklar=343
pencere_sayısı=0
<girdiler>
myID=<someCompileTimeVal>

...

</inputs>
</uzman>
EOF


Yardım !!

.

Ve genel eğlence için, aşağıdaki tartışmayı hiçbir şekilde ilerletmez, ancak djb2 karma girdisini benzersiz olması garanti edilen bir değerle değiştirir (DLL çağrıları gerektirme pahasına). GUID'ler gibi şeylerde djb2'nin ne kadar iyi olduğunu bilmiyorum, ancak herhangi bir çarpışma olmadan 1.000.000 kimlik oluşturmayı denedim.

1mil'i emmek için PsPad ed kullandım ve kopyaları kaldır işaretli bir sıralama yaptım.

>>Ama... Bunu "..çarpışma olmadan " NASIL yaptınız? tespit etme?

 

" Ve genel eğlence için, aşağıdaki tartışmayı hiçbir şekilde ilerletmez, ancak djb2 karma girdisini benzersiz olması garanti edilen bir değerle değiştirir (DLL çağrıları gerektirme pahasına). GUID'ler gibi şeylerde djb2'nin ne kadar iyi olduğunu bilmiyorum, ancak herhangi bir çarpışma olmadan 1.000.000 kimlik oluşturmayı denedim."

.

Bilginize, kodun 1mil çağrılarında çarpışmalar buldum

sıralanmış EOF

.

sıralanmış + kopyalar kaldırıldı EOF

 
fbj :

>>EA p/u'nun n'inci örneği nasıl chartyy.chr dosyası olur?

.

bir örneğin aslında kendi .chr dosyasını eşleyebileceğini varsayarsak:

EA kaynağında şunlar varsa: extern int myID = <someCompileTimeVal>;

o zaman <someCompileTimeVal> öğesini gören herhangi bir örnek 'ilk kez' olduğunu varsayabilir -> gen it's id -> mod myID line -> myID'nin benzersizliğini kullanarak kurtarma dosyaları oluşturun,...

daha sonra yeniden başlatma algılama erişiminde, dosyaların yeniden eşlenmesine izin vermek için ana anahtar olan p/u myID'ye .chr dosyasıdır...

Haklısın. Aynı sembol ve zaman çerçevesi için birden fazla EA varsa, bir EA'nın .chr dosyasını tanımlamasının açık bir yolu olmadığını unutmuştum. GUID gibi bir şey içeren gizli bir etiket nesnesi oluşturabileceğini ve ardından doğru değeri içeren .chr dosyasını arayabileceğini düşünüyordum. Ancak, grafiğe yeni bir nesne eklendiğinde .chr dosyasının güncellenmediğinden oldukça eminim.


Ve başka bir sorun var. MT4'ün grafik hakkındaki bilgileri bellekte tuttuğundan, MT4 kapatıldığında (veya EA'nın özelliklerinde bir değişiklik yapıldığında) .chr dosyasına yazdığından ve bu nedenle EA'nın kendisinin yaptığı tüm değişikliklerin üzerine yazacağından oldukça eminim. çalışırken .chr dosyasına. İnanılmaz derecede cesur olsaydınız, bunun yerine tuşlara basmayı simüle ederek extern özelliğini ayarlamayı deneyebilirsiniz - özellikler penceresini çağırarak, gerekli ayara geçerek, değiştirerek, Enter'a basarak vb.

 
fbj :

Bilginize, kodun 1mil çağrılarında çarpışmalar buldum

sıralanmış EOF

Yeniden çalıştırdığımda ben de yaptım: 1.000.000 denemede 172 çarpışma.

 
jjc wrote >>

Haklısın. Aynı sembol ve zaman çerçevesi için birden fazla EA varsa, bir EA'nın .chr dosyasını tanımlamasının açık bir yolu olmadığını unutmuştum. GUID gibi bir şey içeren gizli bir etiket nesnesi oluşturabileceğini ve ardından doğru değeri içeren .chr dosyasını arayabileceğini düşünüyordum. Ancak, grafiğe yeni bir nesne eklendiğinde .chr dosyasının güncellenmediğinden oldukça eminim.

Ve başka bir sorun var. MT4'ün grafik hakkındaki bilgileri bellekte tuttuğundan, MT4 kapatıldığında (veya EA'nın özelliklerinde bir değişiklik yapıldığında) .chr dosyasına yazdığından ve bu nedenle EA'nın kendisinin yaptığı tüm değişikliklerin üzerine yazacağından oldukça eminim. çalışırken .chr dosyasına. İnanılmaz derecede cesur olsaydınız, bunun yerine tuşlara basmayı simüle ederek extern özelliğini ayarlamayı deneyebilirsiniz - özellikler penceresini çağırarak, gerekli ayara geçerek, değiştirerek, Enter'a basarak vb.

Yukarıda okudum -> biraz egzersiz yapmaya gittim -> ve duş sırasında gri hücreler NESNE diye bağırıyor. .chr yolunu kapatıyorsun ama iki kelime "etiket nesnesi" o beyin patlamasına neden oldu :)

Peki buna ne dersin? %100 garantili kimlik almayı bir an için unutmak. Diğer kısım, bir EA kimliği içeren bu kurtarılabilir durum belleğidir.

İyi...

1. void vArchiveID (int iID), int iRestoreID () [ve int iGetNewID () bu uygunsa başka bir gönderide olsun:]

2. vArchiveID() [gizli?] etiketi oluşturur mu? EA'nın durum belleği grafiğine nesne.

Nesne adı, herhangi bir EA çağrısı için aynı OLMALIDIR... bu nedenle (1) için .ex4 lib veya .mqh lib

3. CT bozulur veya EA göbek yukarı gider vb.

4. Yeniden başlatıldığında EA'nın ilk işi, önceki çalıştırmadan grafikte herhangi bir nesne veya arşivlenmiş kimlik yoksa -1'i geri alan iRestoreID()'yi çağırmaktır.

5. Kimlik yoksa iGetNewID() öğesini çağırır ve ardından vArchiveID() öğesini çağırır ve muhtemelen [ilk kez] döküm dosyası öğelerini ayarlar

6. Kimlik 'geri yüklendiyse', o zaman neşeyle, döküm dosyaları aracılığıyla son durumu kurtarmaya devam eder...

..

ne düşünüyorsun?

 
fbj :

[...]

ne düşünüyorsun?

Önerdiğiniz şey - sanırım - zaman damgalı 14:43 tarihli yazımda tam olarak ima ettiğim şey. Bu rotadaki tek tehlike - ve harici özellikleri ayarlamak için doğrudan .chr dosyasıyla oynamanın tek nedeni - kullanıcıların yanlışlıkla grafikten nesneleri silme olasılığını ortadan kaldırmaktır. Ancak bunun bile, gerekirse nesnenin deinit() içinde yeniden oluşturulmasını sağlayarak büyük ölçüde üstesinden gelinebilir.


Ancak BB/CB, .chr dosyasına güvenmeyi kabul edilemez olarak görebilir. Tamamen site dışında tutulan verilerden (örneğin, komisyoncu tarafından tutulan ticaret listesi) kurtarılabilecek bir şey isteyebilirler.

 

Bir süredir bu başlıktan uzaktaydım.


Otomatik sihirli sayılarla kurtarılabilirliği sağlamak için bir dereceye kadar karmaşıklık ekliyoruz gibi görünüyor, evet? yani. yani aptal bir yeniden bedenlenmiş kod parçası, tek bildiği ne olduğu ve nerede olduğu iken, geçmiş yaşamında kim olduğunu çözebilir. Mutlaka kötü bir şey değil. Ancak..


Belgelemenin faydalı olacağını düşünmemi sağladı (çok kısaca):

- Sihirli sayıları uygulamaya karar verme kriterleri

- Otomatik sihirli sayı üretmeyi kullanmaya karar verme kriterleri

- Kalıcılık katmanı uygulamaya karar verme kriterleri

- Kalıcılık için küresellere karşı dosya erişimine karar verme kriterleri


Bunu önermemin nedeni, herkesin mutfak lavabosunu EA'larına uygulamak zorunda olduklarını düşünmesini önlemek.


Görüntüleme ?


CB


- Biraz ara vermeden önce sadece 8 mesajım kaldı.

 

evet, sonuçta, mutfak lavabosu büyük olasılıkla bu sitede, tamamı akademik. Benim için birinci öncelik, garantili bir otomatik[make|acquire] Uzman Kimliğine sahip olmaktır. Birçok amaç için kullanılabilecek bir değer.

Yeniden başlatma sırasında döküm dosyalarına erişmek için benzersiz bir yola sahip olmak, en iyi ihtimalle gelişigüzeldir ve her halükarda, kullanıcıların bir EA kullanım kurallarına uymasını gerektirir. Birçok ccy+dönem+EA örneği bir seçenek değildir.

Yeniden başlatmadan önce kim olduğumu belirleyebilmek için herhangi bir örneğe niyetliydim ve bunun işe yaramaz olduğu görülüyor. Kendi adıma, en temel kural setini bile takip edecek herhangi bir kullanıcıya güvenmem. Otomatik bir yöntemden tam olarak emin olamıyorsam, kullanıcı müdahalesinin gerekli olduğu yarı yolda bir evi benimsemem.

.

jjc'nin CoCreateGuid() i/f'sini kullanarak yeterince tekrarlanmayan sayı üreteceğim. Yeter subjektif ama ben pek çoğu için gidiyorum... Kaynak erişim sunucusu işlevi olarak dosya tutma numaralarına bir kitaplık kodu parçasıyla birleştiğinde. Sayıların miktarı, bir numarayı tekrar kullanmadan en az 2 yıl geçebilecek şekilde olacaktır. EOF'ye ulaşıldığı anda, sadece BOF'a sarılır ve sayıları sunmaya devam eder. Gökyüzündeki parmağım hesapları, haftada 5 gün ve yılda 50 hafta çalışan 10 istek sahibine dayalı olacak ve her gün herhangi bir istek sahibinin 20 yeni kimlik gerektirebileceği. Bu sonuç daha sonra ikiye katlanır. Saçma bir sayı - temelde 200.000. Evet, taş devri işlevselliği, ancak kodumu yürütme yeteneğinin ötesinde herhangi bir şekilde terminale güvenmeye gerek kalmadan su geçirmez. Tabii ki, bir, 10 veya 100 dosyanın dalları ve fiziksel konumları ve erişim mekanizmaları hakkında uzun yıllar devam edilebilir. Sonunda, acınacak uzman kimliği işlevimden çok daha iyidir ve 2 yıldan fazla [gerçekte] sayı benzersizliği konusunda su geçirmezdir.

.

CB, 666 helikopter pilotlarının uğurlu sayısı olmalı mı? :\