Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Belgelemenin faydalı olacağını düşünmemi sağladı (çok kısaca):
1. Sihirli sayıları uygulamaya karar verme kriterleri
2. Otomatik sihirli sayı oluşturmayı kullanmaya karar verme kriterleri
3. Kalıcılık katmanı uygulamaya karar verme kriterleri
4. Kalıcılık için küresellere karşı dosya erişimine karar verme kriterleri
Kısa, tamamen kişisel cevaplar...
(2), kullanıcının sihirli sayıları farklı stratejilerden elde edilen sonuçları bir arada gruplandırmanın bir yolu olarak kullanabilmeleri için kontrol edebilmek isteyip istemediği de dahil olmak üzere, herhangi bir sayıda faktöre bağlıdır.
(3) yapabilseydim kaçınacağım bir şey ama neredeyse asla yapamam (bkz. 'dış değişkenler ve zaman çerçevesi değişikliği?' ). MT4'ün EA'ların durumunu sürdürme ve kurtarma konusunda yardım sağlaması güzel olurdu. Ama öyle değil.
(4) oldukça güçlü bir kişisel tercihe yol açar: Küreselleri sevmiyorum. Kullanıcılar bunları silebilir; depolama sayılarla sınırlıdır; ve gvariables.dat biçimi belirsiz. Gerekirse son çare olarak bir metin düzenleyici kullanılarak değiştirilebilen dosyaları tercih ederim.
- Biraz ara vermeden önce sadece 8 mesajım kaldı.
Sihirli sayıya ulaştığını görüyorum. En azından bulunduğun yer sıcak olacak...
Bu fikir üzerinde defalarca çalıştım ve sonunda istediğimi yaptım. İşte sembolün ASCII kodunu alan ve onu zaman çerçevesine ve zaman çerçevesine, sembole ve EA'ya özgü sihirli bir sayı oluşturmak için özel bir koda ekleyen bir sihirli sayı üreteci. EA'nın kendi adını okumasının bir yolunu bilseydim, özel kod yerine bunun ASCII'sini kullanırdım. Bu zayıflıkla, yukarıdaki kriterlere uyduğunu düşünüyorum - bir sistem çökmesi için gayet iyi olurdu çünkü sistem yeniden başlatıldığında daha önce seçtiği sayıyı seçecektir. Görebildiğim zayıflık, aynı zaman diliminde ve sembolde aynı EA'nın birden fazla örneğini alıp satarsa yinelenen sihirli sayıları seçecek olmasıydı.
İşte sahip olduklarım:
string GetSymbol=Symbol();
int MNSymbol,MNSymbolCalc,MagicNumber;
for(int a=0;a<6;a++)//Simge()'yi bir ASCII dizgisine çevirin ve her karakteri MNSymbol'a ekleyin
{
MNSymbolCalc=StringGetChar(GetSymbol, a);
MNSymbolCalc=((MNSymbolCalc-64)*(MathPow(10,(a))));//64 b/c ASCII karakterleri 65'ten başlar, sonucu netlik için a-th gücüyle çarpın (gerekli olmasa da)
MNSymbol = MNSymbol+MNSymbolCalc;
}
int MNPeriod=Period();
int MNEACode=100000;//İki farklı EA türünün aynı Sihirli Sayıyı seçmesini önlemek için bu sayıyı her EA için farklı yapın
MagicNumber=MNSymbol+MNPeriod+MNEACode;
JT, evet... çoğaltma 'sorunları' kabus gibi;)
Sizin ve benim pek çok kişiden şüphelendiğimiz gibi, benzersizlik sorunu, her zaman ve her zaman saldırıya uğrayan, ancak bir şekilde asla doğru görünmeyen sürekli tekrar eden bir temadır!
Bu ileti dizisinde daha önce yayınlanan kodum, kullanımda olabilecek aşağıdaki ile değiştirildi (iyi bir kahkahadan başka bir nedenden dolayı :).
*** Yerleşik çağrı yoluyla kullanılabilen EA ad dizesine dikkat edin.
Çoklu ccy yapma çabalarında, kullanılan yerel işlevler vardır. yani, boş gerçekleri kontrol etmek için her zaman aynı fonksiyon başlık kodunu kodlamaktan bıktım: ccy,per
dolayısıyla benim _Symbol() ve _Period() kullanımım. Hız/boyut hususları, MT4 yorumlayıcısında bile, endişelenecek enerjilere değmez ...
Her neyse, belki bu düşünce için yiyecek verir...
aşağıda [ve doc'd in function] yapma nedenim:
Bu, bir EA'nın bir CCY'de durması halinde, daha sonra aynı CCY,PER'e karşı yeniden çalıştırıldığında, bunu sağlamanın kullanışlı bir yoludur.
özdeş giExpertId (aka, Magic#) üretecektir. Havuzdaki olağanüstü işlemleri yönetmeye devam edebileceği anlamına gelir...
Adlandırılmış başka bir EA, değerlerin kopyalanmasından korkmadan aynı grafik ortamında çalışabilir.
Bu nedenle, OrderPools, EA'ya özgü bir büyü# ile biletlere sahip olacak ve bu, yalnızca biletlerin EA başına eşlenmesine izin verecektir.
Aynı ccy,per üzerinde >1 'aynı adlı' EA hakkındaki yorumunuz gerçekten bir sorun. Sonunda HEY'e karar verdim! gerçek ol... eğer bu hatayı yaparsam, o zaman bu kadar düşüncesiz olduğum için arkadan bir tekmeyi hak ederim, lol
sonunda, bu başlıkta gösterildiği gibi, her birinin güçlü ve zayıf yönleri olan zilyonlarca fikir/yöntem vardır.
her şey bir EA çalıştığında [en az] bir benzersiz veri elde etmeye başlar ve bu [bana] temel sorundur.
Yeniden başlatmaya yol açan EA/CT çökmesi ve kaldığı yerden devam etme konusunda solucanlar kutusu hakkında fazla düşünmedim. EA, R/T grafik ortamına özgü verilerle EAid/magic#'i otomatikleştirdiği sürece artık bu hallediliyor. Hep aynı sayıyı üretecek...
iyi eğlenceler!
NOTES: 0. WARNING - mql4 strings maxlen=255 so... unless code changed to deal with up to 10 string parameters the total length of contactenated string must be <=255
Ben şahsen sihirli sayının manuel olarak ayarlanmasını tercih etsem de, çözümünüz oldukça zarif. Güzel kod.
Bir düzeltme - dize sabitlerinin maksimum uzunluğu 255'tir, dize değişkenleri çok daha büyük olabilir, bkz. -> https://www.mql5.com/en/forum/123551 .
Teşekkürler Gordon, kod iyi çalışıyor gibi görünüyor , ama sonuçta aynı EA'yı aynı grafik ortamında çalıştırmam gerekir mi kesinlikle kurşun geçirmez değil - yani evet... manüel olarak sihir# ayarı kusursuz kusursuz bir yöntemdir - buna hiç şüphe yok!
Benim için ipler her zaman arkada bir acı olmuştur. Yine de çoğu şey, örneğin her biri daha düşük seviyeli araçların işlevlerini kullanan bir dizi aracı aşamalı olarak oluşturmak yoluyla mümkündür.
Ek olarak, irusoh1'in birine 'işte bu' dediğini/hatırlattığını hatırlıyorum, onunla yaşa... Şey, benim için, onun yazı içeriğindeki ilk paragrafı her zaman hatırlıyorum ve ne zaman işaret etsem *daima* aklımdadır. Gevşek yaşamak için MT :))
MQL4 çevrimiçi/çevrimdışı, temel veri türleri hakkında konuşur. Her ikisinde de dize bağlantısı, dize sabitlerine gider ve hepimiz o belge sayfasının ne dediğini biliyoruz... yani, 255 bayt.
Ne dediğinizi tamamen anlıyorum, ancak 29373 iş parçacığı, dizelerin MQL4 çalışma zamanı işlemesi gibi, sonuçsuz ve jjc olarak ve şüphesiz diğer birçok kişinin deneyimlediği gibi - biraz şüpheli
8byte yapı formatının tam kullanımını destekleyecek herhangi bir belge bulunamıyor, eğer daha uzun dizileri destekleyecek belgeler varsa, ilgi çekici olacaktır.
Her neyse, geçmişte dizeleri kullanırken çözülemez sorunlar yaşadım, bu yüzden sadece belgelerin söylediklerine bağlı kalmayı ve bunun etrafında çalışmayı - gerekirse - tercih ediyorum.
MQL4 çevrimiçi/çevrimdışı, temel veri türleri hakkında konuşur. Her ikisinde de dize bağlantısı, dize sabitlerine gider ve hepimiz o belge sayfasının ne dediğini biliyoruz... yani, 255 bayt.
Ne dediğinizi tamamen anlıyorum, ancak 29373 iş parçacığı, dizelerin MQL4 çalışma zamanı işlemesi gibi, sonuçsuz ve jjc olarak ve şüphesiz diğer birçok kişinin deneyimlediği gibi - biraz şüpheli
8byte yapı formatının tam kullanımını destekleyecek herhangi bir belge bulunamıyor, eğer daha uzun dizileri destekleyecek belgeler varsa, ilgi çekici olacaktır.
Her neyse, geçmişte dizeleri kullanırken çözülemez sorunlar yaşadım, bu yüzden sadece belgelerin söylediklerine bağlı kalmayı ve bunun etrafında çalışmayı - gerekirse - tercih ediyorum.
Maksimum 255'e bağlı kalmak, açıkçası güvenli çözümdür, ancak bu sınırı göz ardı eden oldukça fazla kodum var ve hiçbir zaman herhangi bir sorunla karşılaşmadım. Ama sonra tekrar bu kod çoğunlukla kritik değildir.
Belgelerin bu konuyla ilgili biraz belirsiz olduğunu biliyorum, ancak Rusça forumlara göz atmaya çalışırsanız (Google translate ile) moderatörlerden birinin, dize değişkenlerinin 255 bayttan fazlasını desteklediğine dair resmi bir yorumunu okuduğumu hatırlıyorum, ancak yapabilirim' Şimdi onu bulamıyor gibiyim... Eh, sanırım "işte bu" ve bununla yaşamak zorundayız :)
8byte yapı formatının tam kullanımını destekleyecek herhangi bir belge bulunamıyor, eğer daha uzun dizileri destekleyecek belgeler varsa, ilgi çekici olacaktır.
Her neyse, geçmişte dizeleri kullanırken çözülemez sorunlar yaşadım, bu yüzden sadece belgelerin söylediklerine bağlı kalmayı ve bunun etrafında çalışmayı - gerekirse - tercih ediyorum.
" Bir dize sabitinin uzunluğu 0 ile 255 karakter arasındadır. Dize sabiti daha uzunsa, sağdaki gereksiz karakterler reddedilecek ve derleyici buna göre uyaracaktır.
Dahili temsili 8 baytlık bir yapıdır. Yapının ilk öğesi, hat için dağıtılan arabelleğin boyutunu içeren uzun bir tamsayıdır. Yapının ikinci öğesi, satırı içeren ara belleğin 32 sıra adresidir. "
MetaEditor sözlüğünden alıntılanmıştır Veri Türleri - Dize sabitleri
ilginç şeyler arkadaşlar...
Bu iş parçacığının eski olduğunu biliyorum, ancak herkesin bir "sihirli sayı" veya ona ne demek istiyorsanız onu almak için kendi yolu olduğunu görüyorum. Ayrıca orada EA'nın kendi adını okuyabilmesini isteyen birini gördüm... işte EA'mın adını almak için kullandığım şey bu
Bunu EA'nın en üstüne yerleştirin:
#define EAName "EA adını buraya yazın"
Açık siparişleri kontrol ettiğinizde şunu yerleştirin:
if (OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderComment() == EAName && OrderMagicNumber() == MagicNumber)
Ticaretiniz yapıldığında, sahip olduğunuzdan emin olun, böylece EAName'i şöyle bir yorum için yerleştirir:
Bilet = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, EAName, MagicNumber, 0, Blue);
O zaman sihirli bir sayı istiyorsanız, EA'yı aynı çift üzerinde fakat aynı anda farklı TF'ler üzerinde çalıştırmak istiyorsanız .......... sadece şunu kullanın:
int MagicNumber = Dönem();